无法在Visual Studio的即时窗口中使用WinDbg和SOS

5
我正在按照这个教程操作:链接。在第8步中,当我在立即窗口输入.load sos时,它会显示expected expression
系统环境:Win 7 x64,Visual Studio 2012 Premium。我已经安装了Debugging Tools for Windows (x64) 11/14/2012,并安装了X64 Debuggers And Tools。我有Windows SDK for Windows 7 (7.1)。WinDbg.exe在c:\Program Files\Debugging Tools for Windows (x64)\中,我可以从开始菜单启动它。但是,我找不到应该随着Debugging Tools for Windows (x64)一起提供的sos.dll。
请问如何解决这个问题?
附加问题:在第4步中,{,,kernel32}_LoadLibraryExW@12无法工作,我使用{,,kernel32}LoadLibraryExW,但是我找不到加载的dll的名称。我已经尝试查看寄存器信息。

1
SOS.dll位于c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \(适用于.NET 4)和C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ sos.dll(适用于.NET 2-3.5)。我需要将其复制到WinDbg的某个位置吗? - Csaba Toth
1
但是我也无法从WinDbg本身加载SOS dll。真的需要一些帮助。与此同时,我和自己进行了愉快的交谈。 - Csaba Toth
至少WinDbg本身似乎可以在VS2010中工作。但我也无法在那里加载sos(尽管至少有WinDbg),此外我的LoadLibrary断点也没有被触发。WinDbg不能与VS2012进行接口交互吗? - Csaba Toth
@CsabaToth VS本身是32位进程。所以我猜您不能从VS内部(使用即时窗口)调试x64进程。虽然我可能错了..!!? - digitguy
@digitguy,devenv.exe有一个32位图像,但是当你调试时,vshost exe与目标的位长度匹配。但也许你是对的,这可能与问题有关。我希望我们能知道。 - Csaba Toth
显示剩余3条评论
1个回答

2
NTSD command support (MSDN)Immediate Window Commands仅描述了Visual Studio 2005、2008和2010支持的WinDbg命令(或类似于WinDbg的命令)的一个小子集。
.S
.X
.K
.U
.~
.Reload
.Sympath
.Cxr
.Exr
.Load
.Unload
.Unloadall

最重要的可能是.Load,它允许加载扩展,然后使用扩展的!命令。
似乎在VS 2012中停止支持WinDbg命令,因为您不能调用VS版本高于VS 2010的网页。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接