首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试时,不相关的符号出现在私有符号服务器中。

调试时,不相关的符号出现在私有符号服务器中。
EN

Stack Overflow用户
提问于 2015-09-29 05:06:14
回答 1查看 157关注 0票数 0

我们有一个专用的符号服务器(只是共享网络驱动器中的一个文件夹)。不久前,我注意到它包含许多不属于我们的DLL的符号(System.Xml、clr、kernel32等)。_NT_SYMBOL_PATH环境变量设置为SRV*c:\symbols*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols,其中c:\symbols是本地缓存,G是映射的网络驱动器。这是按照这里的说明:servers

今天我终于弄明白了所有的非私密符号是如何到达那里的。我从私有符号服务器中删除了clr.pdb文件夹,并开始使用ClrMD调试转储。它们不仅保存在本地缓存中的clr符号,还会在私有符号服务器中重新出现。

我怎样才能防止这件事发生?我不希望我们的私人符号服务器包含不相关的垃圾,它只占用空间和混乱的文件夹。我们已经有大约2600个文件夹在那里,可能90%不是我们的。我无法想象如何清理这一切..。

更新1

因此,这实际上是预期的行为,正如不同的 MSDN页面:https://msdn.microsoft.com/en-us/library/windows/desktop/ms681416(v=vs.85).aspx所记录的那样。

根据另一个文档页(https://msdn.microsoft.com/en-us/library/windows/desktop/ms680689(v=vs.85).aspx使用cache元素将某个文件夹标记为缓存)。然而,设置_NT_SYMBOL_PATH=CACHE*c:\symbols;SRV*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols并不阻止将符号添加到私有符号服务器,而设置_NT_SYMBOL_PATH=CACHE*c:\symbols;SRV*G:\Foundations\Symbols;SRV*http://msdl.microsoft.com/download/symbols则导致了一种奇怪的行为: VisualStudio能够下载符号,但它们并没有最终出现在我的私有符号服务器中,但是ClrMD无法为我正在分析的转储下载符号.当我在VS中打开同样的垃圾场时,效果很好。所以我想ClrMD在符号路径上做了一些不同的事情.

EN

回答 1

Stack Overflow用户

发布于 2015-10-03 20:47:35

你的第一次尝试

首先,您提到符号路径。

代码语言:javascript
复制
SRV*c:\symbols*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols

根据你链接的文件

当检索符号时,文件和文件夹出现在\mainserver\符号共享目录中,以及c:\符号目录中的单个缓存中。

这就是我们想要的行为。

你的第二次尝试

您使用的第二个符号路径是

代码语言:javascript
复制
CACHE*c:\symbols;SRV*G:\Foundations\Symbols*http://msdl.microsoft.com/download/symbols

它由两部分组成:

代码语言:javascript
复制
cache*c:\symbols

(这很好)和

代码语言:javascript
复制
SRV*G:\Foundations\Symbols*http://msdl.microsoft.com

(从语法的角度来看)与

代码语言:javascript
复制
srv*c:\symbols*http://msdl.microsoft.com/download/symbols

并在链接的MSDN文档中进行了如下描述:

若要仅使用Microsoft符号服务器和本地符号缓存,要加快通过因特网的访问速度,请为_NT_SYMBOL_PATH使用以下设置:srv*c:\symbols*http://msdl.microsoft.com/download/symbols

因此,是的,它将下载微软的文件到G:

你的第三种方法

你最后一次尝试是

代码语言:javascript
复制
CACHE*c:\symbols;SRV*G:\Foundations\Symbols;SRV*http://msdl.microsoft.com/download/symbols

srv*http...语法(没有定义本地文件夹)在任何链接文档中都没有描述,所以我不确定这会导致什么行为。

我的建议

代码语言:javascript
复制
SRV*c:\symbols*G:\Foundations\Symbols

应该从G:到C:下载私有符号。和

代码语言:javascript
复制
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

应该从Microsoft下载符号到C:。所以把它们结合起来

代码语言:javascript
复制
SRV*c:\symbols*G:\Foundations\Symbols;SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32836042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档