📄 mscvpdb.h
字号:
{
short int id;
short int attribute;
unsigned int type;
unsigned short int offset; /* numeric leaf */
#if 0
struct p_string p_name;
#endif
} member_v2;
struct
{
short int id;
short int attribute;
unsigned int type;
unsigned short int offset; /* numeric leaf */
#if 0
unsigned char name[1];
#endif
}
member_v3;
struct
{
short int id;
short int type;
short int attribute;
struct p_string p_name;
} stmember_v1;
struct
{
short int id;
short int attribute;
unsigned int type;
struct p_string p_name;
} stmember_v2;
struct
{
short int id;
short int count;
short int mlist;
struct p_string p_name;
} method_v1;
struct
{
short int id;
short int count;
unsigned int mlist;
struct p_string p_name;
} method_v2;
struct
{
short int id;
short int index;
struct p_string p_name;
} nesttype_v1;
struct
{
short int id;
short int _pad0;
unsigned int index;
struct p_string p_name;
} nesttype_v2;
struct
{
short int id;
short int type;
} vfunctab_v1;
struct
{
short int id;
short int _pad0;
unsigned int type;
} vfunctab_v2;
struct
{
short int id;
short int type;
} friendcls_v1;
struct
{
short int id;
short int _pad0;
unsigned int type;
} friendcls_v2;
struct
{
short int id;
short int attribute;
short int type;
struct p_string p_name;
} onemethod_v1;
struct
{
short int id;
short int attribute;
short int type;
unsigned int vtab_offset;
struct p_string p_name;
} onemethod_virt_v1;
struct
{
short int id;
short int attribute;
unsigned int type;
struct p_string p_name;
} onemethod_v2;
struct
{
short int id;
short int attribute;
unsigned int type;
unsigned int vtab_offset;
struct p_string p_name;
} onemethod_virt_v2;
struct
{
short int id;
short int type;
unsigned int offset;
} vfuncoff_v1;
struct
{
short int id;
short int _pad0;
unsigned int type;
unsigned int offset;
} vfuncoff_v2;
struct
{
short int id;
short int attribute;
short int index;
struct p_string p_name;
} nesttypeex_v1;
struct
{
short int id;
short int attribute;
unsigned int index;
struct p_string p_name;
} nesttypeex_v2;
struct
{
short int id;
short int attribute;
unsigned int type;
struct p_string p_name;
} membermodify_v2;
};
/*
* This covers the basic datatypes that VC++ seems to be using these days.
* 32 bit mode only. There are additional numbers for the pointers in 16
* bit mode. There are many other types listed in the documents, but these
* are apparently not used by the compiler, or represent pointer types
* that are not used.
*/
#define T_NOTYPE 0x0000 /* Notype */
#define T_ABS 0x0001 /* Abs */
#define T_VOID 0x0003 /* Void */
#define T_CHAR 0x0010 /* signed char */
#define T_SHORT 0x0011 /* short */
#define T_LONG 0x0012 /* long */
#define T_QUAD 0x0013 /* long long */
#define T_UCHAR 0x0020 /* unsigned char */
#define T_USHORT 0x0021 /* unsigned short */
#define T_ULONG 0x0022 /* unsigned long */
#define T_UQUAD 0x0023 /* unsigned long long */
#define T_REAL32 0x0040 /* float */
#define T_REAL64 0x0041 /* double */
#define T_RCHAR 0x0070 /* real char */
#define T_WCHAR 0x0071 /* wide char */
#define T_INT4 0x0074 /* int */
#define T_UINT4 0x0075 /* unsigned int */
#define T_32PVOID 0x0403 /* 32 bit near pointer to void */
#define T_32PCHAR 0x0410 /* 16:32 near pointer to signed char */
#define T_32PSHORT 0x0411 /* 16:32 near pointer to short */
#define T_32PLONG 0x0412 /* 16:32 near pointer to int */
#define T_32PQUAD 0x0413 /* 16:32 near pointer to long long */
#define T_32PUCHAR 0x0420 /* 16:32 near pointer to unsigned char */
#define T_32PUSHORT 0x0421 /* 16:32 near pointer to unsigned short */
#define T_32PULONG 0x0422 /* 16:32 near pointer to unsigned int */
#define T_32PUQUAD 0x0423 /* 16:32 near pointer to long long */
#define T_32PREAL32 0x0440 /* 16:32 near pointer to float */
#define T_32PREAL64 0x0441 /* 16:32 near pointer to float */
#define T_32PRCHAR 0x0470 /* 16:32 near pointer to real char */
#define T_32PWCHAR 0x0471 /* 16:32 near pointer to real char */
#define T_32PINT4 0x0474 /* 16:32 near pointer to int */
#define T_32PUINT4 0x0475 /* 16:32 near pointer to unsigned int */
#define LF_MODIFIER_V1 0x0001
#define LF_POINTER_V1 0x0002
#define LF_ARRAY_V1 0x0003
#define LF_CLASS_V1 0x0004
#define LF_STRUCTURE_V1 0x0005
#define LF_UNION_V1 0x0006
#define LF_ENUM_V1 0x0007
#define LF_PROCEDURE_V1 0x0008
#define LF_MFUNCTION_V1 0x0009
#define LF_VTSHAPE_V1 0x000a
#define LF_COBOL0_V1 0x000b
#define LF_COBOL1_V1 0x000c
#define LF_BARRAY_V1 0x000d
#define LF_LABEL_V1 0x000e
#define LF_NULL_V1 0x000f
#define LF_NOTTRAN_V1 0x0010
#define LF_DIMARRAY_V1 0x0011
#define LF_VFTPATH_V1 0x0012
#define LF_PRECOMP_V1 0x0013
#define LF_ENDPRECOMP_V1 0x0014
#define LF_OEM_V1 0x0015
#define LF_TYPESERVER_V1 0x0016
#define LF_MODIFIER_V2 0x1001 /* variants with new 32-bit type indices (V2) */
#define LF_POINTER_V2 0x1002
#define LF_ARRAY_V2 0x1003
#define LF_CLASS_V2 0x1004
#define LF_STRUCTURE_V2 0x1005
#define LF_UNION_V2 0x1006
#define LF_ENUM_V2 0x1007
#define LF_PROCEDURE_V2 0x1008
#define LF_MFUNCTION_V2 0x1009
#define LF_COBOL0_V2 0x100a
#define LF_BARRAY_V2 0x100b
#define LF_DIMARRAY_V2 0x100c
#define LF_VFTPATH_V2 0x100d
#define LF_PRECOMP_V2 0x100e
#define LF_OEM_V2 0x100f
#define LF_SKIP_V1 0x0200
#define LF_ARGLIST_V1 0x0201
#define LF_DEFARG_V1 0x0202
#define LF_LIST_V1 0x0203
#define LF_FIELDLIST_V1 0x0204
#define LF_DERIVED_V1 0x0205
#define LF_BITFIELD_V1 0x0206
#define LF_METHODLIST_V1 0x0207
#define LF_DIMCONU_V1 0x0208
#define LF_DIMCONLU_V1 0x0209
#define LF_DIMVARU_V1 0x020a
#define LF_DIMVARLU_V1 0x020b
#define LF_REFSYM_V1 0x020c
#define LF_SKIP_V2 0x1200 /* variants with new 32-bit type indices (V2) */
#define LF_ARGLIST_V2 0x1201
#define LF_DEFARG_V2 0x1202
#define LF_FIELDLIST_V2 0x1203
#define LF_DERIVED_V2 0x1204
#define LF_BITFIELD_V2 0x1205
#define LF_METHODLIST_V2 0x1206
#define LF_DIMCONU_V2 0x1207
#define LF_DIMCONLU_V2 0x1208
#define LF_DIMVARU_V2 0x1209
#define LF_DIMVARLU_V2 0x120a
/* Field lists */
#define LF_BCLASS_V1 0x0400
#define LF_VBCLASS_V1 0x0401
#define LF_IVBCLASS_V1 0x0402
#define LF_ENUMERATE_V1 0x0403
#define LF_FRIENDFCN_V1 0x0404
#define LF_INDEX_V1 0x0405
#define LF_MEMBER_V1 0x0406
#define LF_STMEMBER_V1 0x0407
#define LF_METHOD_V1 0x0408
#define LF_NESTTYPE_V1 0x0409
#define LF_VFUNCTAB_V1 0x040a
#define LF_FRIENDCLS_V1 0x040b
#define LF_ONEMETHOD_V1 0x040c
#define LF_VFUNCOFF_V1 0x040d
#define LF_NESTTYPEEX_V1 0x040e
#define LF_MEMBERMODIFY_V1 0x040f
#define LF_BCLASS_V2 0x1400 /* variants with new 32-bit type indices (V2) */
#define LF_VBCLASS_V2 0x1401
#define LF_IVBCLASS_V2 0x1402
#define LF_FRIENDFCN_V2 0x1403
#define LF_INDEX_V2 0x1404
#define LF_MEMBER_V2 0x1405
#define LF_STMEMBER_V2 0x1406
#define LF_METHOD_V2 0x1407
#define LF_NESTTYPE_V2 0x1408
#define LF_VFUNCTAB_V2 0x1409
#define LF_FRIENDCLS_V2 0x140a
#define LF_ONEMETHOD_V2 0x140b
#define LF_VFUNCOFF_V2 0x140c
#define LF_NESTTYPEEX_V2 0x140d
#define LF_ENUMERATE_V3 0x1502
#define LF_ARRAY_V3 0x1503
#define LF_CLASS_V3 0x1504
#define LF_STRUCTURE_V3 0x1505
#define LF_UNION_V3 0x1506
#define LF_ENUM_V3 0x1507
#define LF_MEMBER_V3 0x150d
#define LF_NUMERIC 0x8000 /* numeric leaf types */
#define LF_CHAR 0x8000
#define LF_SHORT 0x8001
#define LF_USHORT 0x8002
#define LF_LONG 0x8003
#define LF_ULONG 0x8004
#define LF_REAL32 0x8005
#define LF_REAL64 0x8006
#define LF_REAL80 0x8007
#define LF_REAL128 0x8008
#define LF_QUADWORD 0x8009
#define LF_UQUADWORD 0x800a
#define LF_REAL48 0x800b
#define LF_COMPLEX32 0x800c
#define LF_COMPLEX64 0x800d
#define LF_COMPLEX80 0x800e
#define LF_COMPLEX128 0x800f
#define LF_VARSTRING 0x8010
/* ======================================== *
* Symbol information
* ======================================== */
union codeview_symbol
{
struct
{
short int len;
short int id;
} generic;
struct
{
short int len;
short int id;
unsigned int offset;
unsigned short segment;
unsigned short symtype;
struct p_string p_name;
} data_v1;
struct
{
short int len;
short int id;
unsigned int symtype;
unsigned int offset;
unsigned short segment;
struct p_string p_name;
} data_v2;
struct
{
short int len;
short int id;
unsigned int symtype;
unsigned int offset;
unsigned short segment;
char name[1];
} data_v3;
struct
{
short int len;
short int id;
unsigned int pparent;
unsigned int pend;
unsigned int next;
unsigned int offset;
unsigned short segment;
unsigned short thunk_len;
unsigned char thtype;
struct p_string p_name;
} thunk_v1;
struct
{
short int len;
short int id;
unsigned int pparent;
unsigned int pend;
unsigned int next;
unsigned int offset;
unsigned short segment;
unsigned short thunk_len;
unsigned char thtype;
char name[1];
} thunk_v3;
struct
{
short int len;
short int id;
unsigned int pparent;
unsigned int pend;
unsigned int next;
unsigned int proc_len;
unsigned int debug_start;
unsigned int debug_end;
unsigned int offset;
unsigned short segment;
unsigned short proctype;
unsigned char flags;
struct p_string p_name;
} proc_v1;
struct
{
short int len;
short int id;
unsigned int pparent;
unsigned int pend;
unsigned int next;
unsigned int proc_len;
unsigned int debug_start;
unsigned int debug_end;
unsigned int proctype;
unsigned int offset;
unsigned short segment;
unsigned char flags;
struct p_string p_name;
} proc_v2;
struct
{
short int len;
short int id;
unsigned int pparent;
unsigned int pend;
unsigned int next;
unsigned int proc_len;
unsigned int debug_start;
unsigned int debug_end;
unsigned int proctype;
unsigned int offset;
unsigned short segment;
unsigned char flags;
char name[1];
} proc_v3;
struct
{
short int len; /* Total length of this entry */
short int id; /* Always S_BPREL_V1 */
unsigned int offset; /* Stack offset relative to BP */
unsigned short symtype;
struct p_string p_name;
} stack_v1;
struct
{
short int len; /* Total length of this entry */
short int id; /* Always S_BPREL_V2 */
unsigned int offset; /* Stack offset relative to EBP */
unsigned int symtype;
struct p_string p_name;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -