如何使用Visual Studio调试进程?

时间:2008-12-11 21:05:25

标签: visual-studio debugging

如果应用程序†崩溃,

enter image description here

我点击了“Debug”,Visual Studio是我目前注册的实时(JIT)调试器:

enter image description here

出现Visual Studio,但无法调试任何内容:

enter image description here

  • 我没有看到任何反汇编
  • 我没有看到任何寄存器(假设它在带寄存器的CPU上运行)
  • 调用堆栈为空(假设CPU具有堆栈指针)
  • 我没有看到任何符号(假设它有任何符号)
  • 我没有从反射中看到重构的源代码(假设它被管理)

其他JIT调试器产品能够显示反汇编,但它们是基于命令行的(Debugging Tools for Windows),或者不支持符号(OllyDbgDelphi)。另外,我的问题是关于使用Visual Studio进行调试,因为我已经安装了它,它已经是我注册的JIT。

如何使用Visual Studio调试程序?

或者:是否有人编写了支持Microsoft符号服务器的图形化调试器?

†不一定是用Visual Studio编写的。

修改:将标题更改为进程而不是应用程序,因为后者以某种方式暗示“我的应用程序。 “

编辑:假设原始应用程序是由Steve Gibson用汇编语言编写的。也就是说,没有源代码或调试信息。 Visual Studio应该仍然能够向我显示程序集转储。

6 个答案:

答案 0 :(得分:3)

看一下屏幕截图,看来Visual Studio当前正在运行模式下进行调试 - 在查看调用堆栈之类的内容之前,需要先中断流程的执行......

要中断进程的执行,您需要点击断点,或者您可以通过使用Pause / Break all工具栏项随时中断进程的执行( Control + Alt + Break )。

然后你应该能够在Debug - >下访问以下窗口。 Windows菜单:

  • 反汇编窗口
  • 寄存器窗口
  • 调用堆栈窗口
  • 模块窗口显示已加载模块的列表以及从中加载相应符号的位置(如果已加载)

其他一些有用的窗口:

  • 如果您一次调试多个进程,则进程窗口非常有用
  • 主题窗口
  • 内存窗口(有四个)
  • 本地窗口

默认情况下,其中一些可能不可见,具体取决于您第一次启动Visual Studio时选择的窗口配置 - 如果找不到它们,请右键单击工具栏并转到自定义以添加它们。

Visual Studio不会从反汇编中重建soucre代码 - 您确实需要使用原始源代码,否则符号几乎肯定与您正在调试的源代码不匹配。

如果您正在调试没有源代码的非托管模块,那么我建议您至少尝试WinDbg - 它的用户界面有时候有点笨拙,而且确实有一个陡峭的学习曲线但是,它是一个非常强大的调试器,支持Visual Studio所没有的许多功能 - 它可能更适合您需要进行的调试。

(Visual Studio是一个很棒的调试器,但它主要用于调试源代码可用的模块,因此它缺少某些功能,有利于提供更好的用户体验)。

答案 1 :(得分:2)

假设这是您在VS中编写的应用程序,只需按F5运行程序并使用断点,或手动中断程序以开始调试。

答案 2 :(得分:1)

最后一个屏幕截图中的问题是Visual Studio没有自动进入中断模式。这似乎是一个错误。如果按下工具栏上的“暂停”按钮,它将进入中断模式,为您提供反汇编和一个callstack。

根据最后一个截图,你实际上是附加到程序...输出窗口显示它加载了OLE和crt的剥离符号。

答案 3 :(得分:1)

如果您有可用于此程序的调试信息,则可以使用Visual Studio调试程序。编译Release版本(通常没有调试信息)和编译Debug版本之间的区别。

如果您正在测试自编程序的调试版本,则此调试程序对话框非常方便。您可以“即时”将它附加到Visual Studio调试器并查找问题。

如果它不是您的程序或它是您的程序,但不提供Visual Studio可以理解的调试信息,那么您就不走运了。

答案 4 :(得分:1)

使用菜单调试 - > Windows - > 反汇编(我认为键盘快捷键是 Alt + 8 ,但是我配置了VC 6.0绑定,因为这是我滚动的方式,它可能已经改变了。)

您可以从http://msdl.microsoft.com/download/symbols获取操作系统的公共符号。将其添加到菜单工具 - >中的列表中选项 - > 调试 - > 符号 - > 符号文件位置

此外,请确保您以与应用程序相同的完整性级别运行。或者始终以管理员身份运行Visual Studio。

答案 5 :(得分:0)

我猜你已经处于调试模式。 “运行”按钮被禁用。只需转到Debug - >窗户 - >反汇编以查看反汇编。