Debugging 使用VisualStudio中的windbg

Debugging 使用VisualStudio中的windbg,debugging,visual-studio-2010,windbg,Debugging,Visual Studio 2010,Windbg,是否可以使用windbg命令,如!从Visual Studio命令窗口(在调试会话中)锁定和.loadby sos mscorwks?我注意到我可以使用egk打印堆栈跟踪,所以我想知道是否有办法访问其他命令。是的,您可以这样做 将Visual studio 2008附加到进程以进行调试 破译一些密码 转到即时窗口 键入!加载sos 现在您可以自由使用任何windbg命令,如!哎呀,!转储堆 有一些条件。您需要在项目属性中启用非托管代码调试。通常,64位版本的studio不支持此功能 玩得开心。V

是否可以使用windbg命令,如
!从Visual Studio命令窗口(在调试会话中)锁定
.loadby sos mscorwks
?我注意到我可以使用eg
k
打印堆栈跟踪,所以我想知道是否有办法访问其他命令。

是的,您可以这样做

  • 将Visual studio 2008附加到进程以进行调试
  • 破译一些密码
  • 转到即时窗口
  • 键入
    !加载sos
  • 现在您可以自由使用任何windbg命令,如
    !哎呀,!转储堆
  • 有一些条件。您需要在项目属性中启用非托管代码调试。通常,64位版本的studio不支持此功能


    玩得开心。

    Visual Studio 2012在“附加到进程”对话框中具有“Windows用户模式调试器”传输。这允许您在即时窗口中使用windbg命令


    来源:

    从Windows驱动程序开发工具包(WDK)8.0开始,Windows调试器集成到Visual Studio中(请参阅)。在Visual Studio安装之上安装WDK将使开发人员能够从“附加到进程”对话框中选择多个调试器,或者在项目的调试器设置中设置调试引擎。这已在Visual Studio 2012和2013中得到验证。按照我阅读上面MSDN链接的方式,这也适用于WDK 8.0及以上版本支持的任何其他IDE

    虽然WinDbg提供了许多强大的命令,但也存在一些缺点。此列表并非详尽无遗,仅包含我遇到的问题:

    • 一次不能附加到多个进程。虽然这通常不是一个问题,但如果您确实需要一次调试多个进程,这是非常不幸的。Visual Studio调试器可以同时附加到任意数量的进程
    • WinDbg不会使用Visual Studio IDE中的符号设置(在VS 2012更新4上测试)。虽然您可以在IDE中配置查找调试符号的位置,但WinDbg不会接受这些设置。WinDbg将使用_NT_SYMBOL_PATH环境变量和/或通过
      .sympath
      设置的配置
    • 函数断点的不同语法。这是一个小麻烦,因为您不能使用VisualStudio的语法来指定函数断点。这也意味着,将忽略使用Visual Studio语法设置的函数断点。不过,更令人恼火的是,在启动调试对象时,每个调试对象都会出现一个警告对话框
    • 不支持跟踪点。我一直在广泛使用跟踪点,以无干扰地将跟踪插入调试对象。如果您也在使用跟踪点,这可能不仅仅是一个麻烦

    太好了,谢谢你。知道我是否可以访问非托管windbg调用(如locks或analyze)吗?@ngoozeff:我认为这里只能使用sos命令!!如果我错了,有人纠正我很抱歉在这里吹毛求疵,但这些不是WinDbg命令,而是SOS命令。不幸的是,VS afaik无法提供常规WinDbg命令,这使得使用SOS有点困难。此外,VS不支持所有必要的IDEBUG客户端接口,因此,在VS中,SOS的输出有点嘈杂。Brian是对的,对这个问题的严格回答是否定的。SOS不是WinDbg。此外,WinDbg有一个x64版本,而SOS没有,也就是说,如果您想调试x64应用程序而不将其重新编译为32位,那么WinDbg,VS之外,是唯一的出路
    !加载sos在VS2013上失败:“标识符“加载”未定义”。我已安装Visual Studio 2012 Professional(更新4)。但是,Windows用户模式调试器传输没有为我显示。一些消息来源声称您必须在VS安装的基础上安装WDK,但可靠的信息似乎并不容易获得。那么,这是怎么回事?从链接:
    另一个警告是,当前您需要在Visual Studio 11上安装WDK以获得调试器集成。
    在我安装WDK之前,它对我也不起作用。我可以确认,在Visual Studio上安装Windows 8.0 WDK也确实安装了Visual Studio集成。我现在可以选择Windows用户模式调试器作为传输(或从项目的调试器设置中选择另一个调试器)。它看起来工作可靠,尽管对我来说速度很慢。VS调试器中的某些功能缺失(例如跟踪点),而其他功能已更改(例如设置函数断点的不同语法)。强大的WinDbg扩展命令,如
    !处理
    !锁现在可从VS GUI(调试器即时窗口)获得。注意:对于Visual Studio 2015,“Windows用户模式调试器”传输需要WDK 10。
    windbg
    bp
    命令接受一个命令,在命中断点时运行,因此您可以模拟跟踪点。例如,
    bp combase!CoSetErrorInfo“dt combase!CErrorObject%edx;g”
    您是否能够在VS 2017和WDK(特别是1507+版本)中使用此方法?page说“此功能不可用”用于该组合,当我尝试(在将目标更改为“Localhost”后)时,我不断收到一个E_失败消息,“无法连接/不支持操作”!我正在努力确保这不仅仅是我这边的配置问题。