如何使用Visual Studio调试进程?

Ian*_*oyd 5 debugging visual-studio

如果应用程序†崩溃,

在此输入图像描述

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

在此输入图像描述

Visual Studio出现,但没有办法调试任何东西:

在此输入图像描述

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

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

如何使用Visual Studio调试程序?

或者:有没有人写过支持Microsoft符号服务器的图形化调试器?

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

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

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

Jus*_*tin 3

从屏幕截图来看,Visual Studio 当前正在运行模式下进行调试 - 您需要中断进程的执行,然后才能查看调用堆栈等内容......

要中断进程的执行,您需要命中断点,或者可以通过使用“暂停/中断所有”工具栏项 ( Control++ )随时中断进程的执行。AltBreak

然后您应该能够在“调试”->“窗口”菜单下访问以下窗口:

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

其他一些有用的窗口:

  • 如果您一次调试多个进程,则进程窗口非常有用
  • 线程窗口
  • 内存窗口(有四个)
  • 当地人的窗口

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

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

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

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