2016-01-07 61 views
3

当我用WinDbg加载一个pdb文件时,如何知道pdb文件是公共还是私人?如何知道pdb文件是公共还是私人?

+0

我通过在WinDbg中列出的“导出符号”糊涂。例如:0:124> lm 002a0000 002bd000 mdll_1 C(导出符号)mdll_smibprotocol.dll 00020000 00034000 mdll_2 C(专用pdb符号)d:\ windbg \ mypdb \ mdll_2.pdb第二个dll具有私有pdb,但第一个mdll_1真的由于编译错误而没有pdb。那么出口符号是什么?迄今为止,它在一个崩溃转储中误导我。 –

回答

6

用lm查看模块,它会告诉你相关的PDB是否是私有的。例如,这PDB是公众:

0: kd> lm mntdll 
start    end     module name 
00007ffe`aee40000 00007ffe`af001000 ntdll  (pdb symbols)   c:\websymbols\ntdll.pdb\F296699DB5314A06935E88564D8CD2731\ntdll.pdb 

而这一次是私有的:

0: kd> lm mole32 
Browse full module list 
start    end     module name 
00007ffe`ac550000 00007ffe`ac693000 ole32  (private pdb symbols) c:\websymbols\ole32.pdb\C8E3042BDD6A44BA8D9CCF8E433F33DF1\ole32.pdb 
+0

@Andy:也许你喜欢'lm m ntdll'(带空格)。对我来说,它使得它更清楚地说明了选项和DLL名称 –

相关问题