【发布时间】:2013-06-04 20:31:28
【问题描述】:
我正在关注本教程:link。在第 8 步,当我在即时窗口中说 .load sos 时,它只会吐出 expected expression。
系统:Win 7 x64,Visual Studio 2012 高级版。 我已经安装了 Windows (x64) 调试工具 11/14/2012,现在我安装了 X64 调试器和工具。我有适用于 Windows 7 (7.1) 的 Windows SDK。 WinDbg.exe 位于 c:\Program Files\Debugging Tools for Windows (x64)\ 中,我可以从开始菜单启动它。但是我找不到 sos.dll,它应该与 Windows 调试工具 (x64) 一起提供。
我怎样才能做到这一点?
额外问题:第 4 步中的 {,,kernel32}_LoadLibraryExW@12 不起作用,我使用 {,,kernel32}LoadLibraryExW,但后来我无法弄清楚加载的 dll 名称在哪里。我在翻找收银机。
【问题讨论】:
-
SOS.dll 位于 c:\Windows\Microsoft.NET\Framework\v4.0.30319\ for .NET 4 和 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos .dll 用于 .NET 2-3.5。我需要将它复制到 WinDbg 的某个地方吗?
-
但我也无法从 WinDbg 本身加载 SOS dll。一些帮助将不胜感激。与此同时,我与自己进行了愉快的交谈。
-
好的,我想知道什么时候有我好奇的 dll 的负载。但现在我必须真正加载 SOS.dll,因为我处于系统调试模式,我想查看导致此问题的本机调用堆栈。 :P
-
至少 WinDbg 本身可以在 VS2010 中工作。但是我也不能在那里加载 sos(尽管至少有 WinDbg),而且我的 LoadLibrary 断点没有被命中。 WinDbg 不与 VS2012 交互?
-
好的,这就解释了。您评论的问题是关于在 WinDbg 中加载 SOS。在VS中加载SOS,需要为项目开启原生调试,使用
.load sos命令。您无需为此安装适用于 Windows 的调试工具。 SOS 带有 .NET 框架(您不需要复制它)。要记住的一件事是,在即时窗口中加载 SOS 并不是最佳选择。 SOS 在即时窗口中不能很好地工作。更好的选择是从 WinDbg 使用它或安装 DDK 以及 WinDbg,然后使用附加协议。
标签: visual-studio-2012 windbg sos immediate-window