我将WinDbg设置为将符号下载到 c:\ symbols 。 advapi32(例如)的符号位于c:\symbols\advapi32.pdb\3F32049F550C42B09CF114A1FB8A97E92\advapi32.pdb
中。我获得link.exe的唯一方法,以及那些使用这些符号的其他存根exe实际上是在c:\symbols\advapi32.pdb\3F32049F550C42B09CF114A1FB8A97E92
目录中。因此,例如dumpbin /exports c:\Windows\SysWOW64\advapi32.dll
返回该文件夹中的装饰名称,如下所示:
1770 301 000455C6 UnregisterIdleTask = _UnregisterIdleTask@12
1771 302 UnregisterTraceGuids (forwarded to ntdll.EtwUnregisterTraceGuids)
1772 303 000595D8 UpdateTraceA = _UpdateTraceA@16
1773 304 000595F9 UpdateTraceW = _UpdateTraceW@16
1774 305 00042BB6 UsePinForEncryptedFilesA = _UsePinForEncryptedFilesA@12
1775 306 00042BFF UsePinForEncryptedFilesW = _UsePinForEncryptedFilesW@12
当从另一个文件夹运行时,它返回:
1770 301 000455C6 UnregisterIdleTask
1771 302 UnregisterTraceGuids (forwarded to ntdll.EtwUnregisterTraceGuids)
1772 303 000595D8 UpdateTraceA
1773 304 000595F9 UpdateTraceW
1774 305 00042BB6 UsePinForEncryptedFilesA
1775 306 00042BFF UsePinForEncryptedFilesW
是否可以让dumpbin使用符号服务器下载的dll?
答案 0 :(得分:0)
在msdn page for symbol paths找到答案。
该页面指出Windows调试器从三个位置获取其符号列表:
.sympath srv*c:\MyServerSymbols*http://msdl.microsoft.com/download/symbols
因此,只需调用SET _NT_SYMBOL_PATH=symsrv*symsrv.dll*c:\symbols2*http://msdl.microsoft.com/download/symbols
或将该值添加到您的永久环境(例如通过setx),就会导致符号加载。