Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WinDbg赢得';下载符号;说:";警告:不允许网络路径“;_Windbg - Fatal编程技术网

WinDbg赢得';下载符号;说:";警告:不允许网络路径“;

WinDbg赢得';下载符号;说:";警告:不允许网络路径“;,windbg,Windbg,我正在尝试调试.NET服务启动时出现的问题。我正在遵循提示,但我在获取符号方面遇到了困难。这尤其会导致调试.NET异常时出现问题,因为WinDbg拒绝下载正确的mscordawks.dll 我得到的错误是:警告:不允许网络路径:'SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols“ 它之所以这样做,要么是因为我正在调试会话0中的某些内容,要么是因为我正在运行WinDbg。如何解决此问题?听起来您正在尝试调试一个系统服务,当调试

我正在尝试调试.NET服务启动时出现的问题。我正在遵循提示,但我在获取符号方面遇到了困难。这尤其会导致调试.NET异常时出现问题,因为WinDbg拒绝下载正确的mscordawks.dll

我得到的错误是:
警告:不允许网络路径:'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
,它会报告“否”。将其设置为“是”似乎有效。