繁体   English   中英

使用Visual Studio中的windbg

[英]Using windbg from Visual Studio

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

是的,你可以这样做。

  1. 将Visual Studio 2008附加到您的调试过程。
  2. 打破一些代码。
  3. 转到即时窗口
  4. 输入!load sos
  5. 现在您可以自由使用任何windbg命令,例如!EEHeap,!DumpHeap

有一些条件。 您需要在项目属性中启用非托管代码调试。 通常在64位版本的工作室不支持这一点。

玩得开心。

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

来源: 在Visual Studio用户模式调试中使用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 Update 4上测试)。 虽然您可以在IDE中配置查找调试符号的位置,但WinDbg不会遵循这些设置。 WinDbg将使用_NT_SYMBOL_PATH环境变量和/或通过.sympath设置的配置。
  • 函数断点的语法不同。 这是一个小麻烦,因为您无法使用Visual Studio的语法来指定函数断点。 这也意味着,忽略了使用Visual Studio语法设置的函数断点。 但更令人讨厌的是,在启动调试对象时,每个都会得到一个警告对话框。
  • 不支持Tracepoints 我一直在广泛使用跟踪点,以无意插入的方式将跟踪插入调试对象。 如果您也使用跟踪点,这可能不仅仅是一个烦恼。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM