WinDbg赢得';下载符号;说:";警告:不允许网络路径“;
我正在尝试调试.NET服务启动时出现的问题。我正在遵循提示,但我在获取符号方面遇到了困难。这尤其会导致调试.NET异常时出现问题,因为WinDbg拒绝下载正确的mscordawks.dll 我得到的错误是:WinDbg赢得';下载符号;说:";警告:不允许网络路径“;,windbg,Windbg,我正在尝试调试.NET服务启动时出现的问题。我正在遵循提示,但我在获取符号方面遇到了困难。这尤其会导致调试.NET异常时出现问题,因为WinDbg拒绝下载正确的mscordawks.dll 我得到的错误是:警告:不允许网络路径:'SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols“ 它之所以这样做,要么是因为我正在调试会话0中的某些内容,要么是因为我正在运行WinDbg。如何解决此问题?听起来您正在尝试调试一个系统服务,当调试
警告:不允许网络路径:'SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols“
它之所以这样做,要么是因为我正在调试会话0中的某些内容,要么是因为我正在运行WinDbg。如何解决此问题?听起来您正在尝试调试一个系统服务,当调试器尝试访问网络时,可能会导致死锁 对进程进行小型转储
.dump/mf c:\tmp\mydump.dmp
,将调试器附加到转储,如上所述设置符号路径,然后.reload
。这将缓存您需要的所有符号
然后您可以使用路径srv*c:\WebSymbols进行实时调试,我不清楚您到底在做什么来触发该错误消息。我假设它是.sympath命令或类似命令 检查.netsyms的输出 它在帮助文件中没有记录,但我在中发现了它,它似乎起了作用。在某些安全设置下,它可能默认为关闭。恐怕纯粹是猜测,但这么简单的尝试,我想我会提出建议。您使用的安全上下文可能是forces.netsyms为0。John的技巧将能够从网络中获取符号,而无需网络符号路径即可使用 Windbg应使用作为.NET安装一部分的mscordacwks.dll-您正在运行该服务的计算机上进行调试,因此Windbg具有与您的服务相同的.NET安装。windbg不需要在其他任何地方搜寻它。希望实际需要的只是“正确”设置符号路径,而不是查找mscordacwks.dll时遇到的实际问题。如果需要,我们可以稍后再看 检查当前状态,如下所示:
0:001> .netsyms
netsyms = don't care
关闭它会产生类似于错误消息的内容:
0:001> .netsyms 0
netsyms = no
0:001> !sympath srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Network paths are disallowed, symbol server is not available.
Set your symbol path to a symbol tree on the local machine.
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
WARNING: Network path disallowed: 'srv*C:\Symbols*http://msdl.microsoft.com/download/symbols'
再次启用该选项将允许网络符号搜索路径:
0:001> .netsyms 1
netsyms = yes
0:001> !sympath srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
好主意,但我不确定它是否有效。我试图下载的特定“符号”是正确版本的
mscordawks.dll
,它(在我的特定情况下)不适用于小型转储,因为其中没有CLR异常——因为它是在我有机会查看之前抛出并捕获的:(如果您需要从已知dll下载符号,只需在windbg中打开dll,就像它是一个转储文件windbg-z c:\path\to\mscordawks.dll
我不想要mscordawks.dll的符号,我需要mscordawks.dll。显然,如果我理解正确,这个特定的dll会像一个符号一样下载,因为它是特定于vers的。)CLR和体系结构的集成。如果您使用sos扩展并使用!sym noise
运行某些命令,您会看到调试器正在尝试下载它。不过,对于其他情况,这是一个有用的提示。默认值似乎有所不同。如果我连接到普通服务,。netsyms
报告“不在乎”。如果我附加到services.exe
,它会报告“否”。将其设置为“是”似乎有效。