获取link.exe,lib.exe,editbin.exe和dumpbin.exe以使用符号服务器

时间:2013-05-01 14:52:53

标签: debug-symbols pdb dumpbin

我将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?

1 个答案:

答案 0 :(得分:0)

msdn page for symbol paths找到答案。

该页面指出Windows调试器从三个位置获取其符号列表:

  • 通过windbg菜单和.sympath command设置的运行时列表,例如.sympath srv*c:\MyServerSymbols*http://msdl.microsoft.com/download/symbols
  • _NT_ALT_SYMBOL_PATH 环境变量
  • _NT_SYMBOL_PATH 环境变量

因此,只需调用SET _NT_SYMBOL_PATH=symsrv*symsrv.dll*c:\symbols2*http://msdl.microsoft.com/download/symbols或将该值添加到您的永久环境(例如通过setx),就会导致符号加载。