Windbg _NT\u符号\u路径格式

Windbg _NT\u符号\u路径格式,windbg,Windbg,我正在尝试更多地使用windbg,但符号缓存一直存在问题。我不清楚字符串的格式应该是什么 我有几个要求: 使用微软的服务器 使用存档在\\foo\Build1234的软件中的符号 使用位于c:\dev\symbols的本地缓存 来自\\foo\Build1234的分布式生成的符号存档未组织为符号服务器。如果我理解正确,我需要使用cache关键字 考虑到这些要求,这看起来是否像一个格式正确的srvpath: cache*\\foo\Build1234;srv*c:\dev\symbols*ht

我正在尝试更多地使用windbg,但符号缓存一直存在问题。我不清楚字符串的格式应该是什么

我有几个要求:

  • 使用微软的服务器
  • 使用存档在\\foo\Build1234的软件中的符号
  • 使用位于c:\dev\symbols的本地缓存
来自\\foo\Build1234的分布式生成的符号存档未组织为符号服务器。如果我理解正确,我需要使用cache关键字

考虑到这些要求,这看起来是否像一个格式正确的srvpath:

cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols
编辑:

我刚开始阅读高级Windows调试,我误解了cache关键字的工作原理。我认为这是告诉调试器文件夹只是一个文件文件夹而不是符号服务器的一种方式。在Michael留下评论后,我重新阅读了这一部分,发现它确实如Michael所描述的那样有效

现在我很困惑,当你使用;或*来分隔路径/URL。当您需要srv*前缀时。在windbg的在线帮助中,他们给出了以下示例:

\\someshare\that\cachestar\ignores;srv*c:\mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached
\\someshare中的符号不缓存,Microsoft中的符号缓存在c:\mysymbols中,c:\mysymbols用作cache*指令右侧任何其他路径的缓存

偶尔使用srv*让我感到困惑——我不明白为什么第一个和最后一个路径没有前缀srv*

编辑2:

这对我来说慢慢开始有意义了。srv指令用于符号服务器,而不用于普通符号目录。因此,我相信我最初问题的答案是:

\\foo\Build1234;cache*c:\dev\symbols;srv*http://msdl.microsoft.com/download/symbols
如果
\\foo\build1234
只是平面的PDB,应该可以正常工作。这里不需要缓存;您只需要将目录添加到符号路径

cache关键字指定要将符号文件缓存到的位置,对于从非索引共享(如
\\foo\build1234
)本地缓存符号非常有用

上面的路径将把来自MS的符号服务器的符号和您的符号共享存储到本地计算机的C:\dev\symbols中

要使用windbg调试符号问题,请执行以下操作

!sym noisy
.reload <some exe or DLL in your session>

然后将抑制符号提示。

这里有一篇关于符号加载调试问题的详细文章


当出现符号问题时,我总是在打开嘈杂负载后使用“.reload-f-a”。谢谢Michael。你的回答是正确的。不过,我最终做的事情略有不同。我将\\\foo\build1234放在路径的开头,这样它就不会被缓存,指定了我要用于所有内容的全局缓存,然后添加了Microsoft URL。这样,我在调试期间附加的任何其他路径都将使用我的全局缓存,这就是我希望它的行为方式。谢谢。相关:
cache*C:\dev\symbols;SRV*C:\dev\symbols*http://msdl.microsoft.com/download/symbols;\\foo\build1234
!sym noisy
.reload <some exe or DLL in your session>
!sym quiet