我正在尝试更多地使用windbg,但符号缓存一直存在问题。我不清楚字符串的格式应该是什么。
我有几个要求:
- 使用微软的服务器http://msdl.microsoft.com/download/symbols
- 使用我们软件中存档在 \\foo\Build1234 中的符号
- 在 c:\dev\symbols 使用本地缓存
我们在 \\foo\Build1234 的分布式构建中的符号存档未组织为符号服务器。如果我理解正确,我需要使用缓存关键字。
鉴于这些要求,这是否看起来像一个格式正确的 srvpath:
cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols
编辑:
我刚开始阅读 Advanced Windows Debugging,但我误解了 cache 关键字的工作原理。我认为这是告诉调试器该文件夹只是一个文件文件夹而不是符号服务器的一种方式。在迈克尔发表评论后,我重新阅读了该部分,发现它确实如迈克尔所描述的那样有效。
现在我对你何时使用 a 感到困惑;或 * 分隔路径/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