0

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

4

1 回答 1

0

在msdn 页面上找到了符号路径的答案。

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

  • 通过 windbg 菜单和.sympath 命令设置的运行时列表,例如.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)将导致符号加载。

于 2013-05-01T18:56:22.213 回答