我需要使用WinDbg调试32位托管应用程序,但是WinDbg顽固地拒绝加载SOS.dll扩展。经过多次网络搜索和尝试,我感到很困惑。我有使用WinDbg调试非托管代码的经验,但这是我第一次尝试使用托管代码。
当我指示WinDbg加载默认SOS.dll时,会出现以下错误:
sxe ld clr <- I wait until the clr has loaded
.loadby sos clr
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) failed, Win32 error 0n193
"%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.如果我试图指定SOS.dll,则会收到一个不同的错误:
.load C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos clr
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos clr) failed, Win32 error 0n126
"The specified module could not be found."
Please check your debugger configuration and/or network access.我的设置是通过串行连接的VM到VM,这两个VM都是Windows 2008 R2 SP1。两个VM中都安装了用于Windows的调试工具(x64)。
注意::在x64 CPU上安装x86调试工具似乎是不可能的(也不是必要的),所以请不要建议它。安装程序出现错误时失败。
提前谢谢你的想法。
发布于 2014-03-17 17:39:18
可以在同一台计算机上同时安装x86和x64版本的WinDbg,如果您正在调试32位.NET应用程序,则应该使用WinDbg/SOS的x86版本。错误消息告诉您,您正试图为应用程序的bitness加载SOS的错误版本。
还有一些额外的这里的指导。
发布于 2015-06-05 14:49:56
默认情况下,安装程序似乎在没有提示的情况下将32位和64位版本的WinDbg放在系统上--您是否有可能运行错误的版本?
查找安装了x86的目录中的“WinDbg”目录,并运行其中包含的windbg.exe版本。
https://stackoverflow.com/questions/22461265
复制相似问题