-
Notifications
You must be signed in to change notification settings - Fork 1
/
PrintSymbol.h
68 lines (60 loc) · 2.2 KB
/
PrintSymbol.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
inline int myDebugBreak(int)
{
DebugBreak();
return 0;
}
#define MAXELEMS(x) (sizeof(x)/sizeof(x[0]))
#define SafeDRef(a, i) ((i < MAXELEMS(a)) ? a[i] : a[myDebugBreak(i)])
#define MAX_TYPE_IN_DETAIL 5
#define MAX_RVA_LINES_BYTES_RANGE 0x100
extern const wchar_t * const rgBaseType[];
extern const wchar_t * const rgTags[];
extern const wchar_t * const rgFloatPackageStrings[];
extern const wchar_t * const rgProcessorStrings[];
extern const wchar_t * const rgDataKind[];
extern const wchar_t * const rgUdtKind[];
extern const wchar_t * const rgAccess[];
extern const wchar_t * const rgCallingConvention[];
extern const wchar_t * const rgLanguage[];
extern const wchar_t * const rgLocationTypeString[];
void PrintPublicSymbol(IDiaSymbol *);
void PrintGlobalSymbol(IDiaSymbol *);
void PrintSymbol(IDiaSymbol *, DWORD);
void PrintSymTag(DWORD);
void PrintName(IDiaSymbol *);
void PrintUndName(IDiaSymbol *);
void PrintThunk(IDiaSymbol *);
void PrintCompilandDetails(IDiaSymbol *);
void PrintCompilandEnv(IDiaSymbol *);
void PrintLocation(IDiaSymbol *);
void PrintConst(IDiaSymbol *);
void PrintUDT(IDiaSymbol *);
void PrintSymbolType(IDiaSymbol *);
void PrintType(IDiaSymbol *);
void PrintBound(IDiaSymbol *);
void PrintData(IDiaSymbol *);
void PrintVariant(VARIANT);
void PrintUdtKind(IDiaSymbol *);
void PrintTypeInDetail(IDiaSymbol *, DWORD);
void PrintFunctionType(IDiaSymbol *);
bool PrintSourceFile(IDiaSourceFile *, wchar_t const *);
void PrintLines(IDiaSession *, IDiaSymbol *);
void PrintLines(IDiaEnumLineNumbers *, wchar_t const *);
void PrintSource(IDiaSourceFile *);
void PrintSecContribs(IDiaSession *, IDiaSectionContrib *);
void PrintStreamData(IDiaEnumDebugStreamData *);
void PrintFrameData(IDiaFrameData *);
void PrintPropertyStorage(IDiaPropertyStorage *);
template<class T> void PrintGeneric(T t)
{
IDiaPropertyStorage * pPropertyStorage;
if (t->QueryInterface(__uuidof(IDiaPropertyStorage), (void **)&pPropertyStorage) == S_OK) {
PrintPropertyStorage(pPropertyStorage);
pPropertyStorage->Release();
}
}
//my addition
void PrintSpecificDword(IDiaSession *, IDiaSectionContrib *, wchar_t *, wchar_t *);
//PdbTypeMatch addition
#include <string>
void GetSymbolName(std::wstring & symbolName, IDiaSymbol * pSymbol);