2016-01-07 98 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名稱 –

相關問題