【问题标题】:Cannot use WinDbg and SOS in Visual Studio Immediate window无法在 Visual Studio 即时窗口中使用 WinDbg 和 SOS
【发布时间】: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


【解决方案1】:

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 2010 的 VS 版本的网页。

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2011-05-21
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多