在 Visual Studio 中调试一个或多个进程

以下说明了如何启动调试进程、在进程之间切换、中断和继续执行、逐步执行源、停止调试以及终止进程或与进程分离。

内容

配置多个进程的执行行为

查找源文件和符号 (.pdb) 文件

启动 VS 解决方案中的多个进程,附加到一个进程,然后自动启动调试器中的进程

切换进程,中断并继续执行,逐步执行源

停止调试进程、终止进程或与进程分离

配置多个进程的执行行为

默认情况下,当多个进程在调试器中运行时,中断、分步和停止调试器命令通常会影响所有进程。 例如,在断点处暂停一个进程时,所有其他进程的执行也会被暂停。 您可以更改此默认行为以获取对执行命令的目标的更多控制。

  1. 在**“调试”菜单上,选择“选项和设置”**。

  2. 在**“调试”“常规”页上,清除“一个进程中断时则中断所有进程”**复选框。

返回页首内容

查找源文件和符号 (.pdb) 文件

若要浏览进程的源代码,调试器需要访问进程的源文件和符号文件。 请参阅在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

如果您无法访问进程的文件,则可使用“反汇编”窗口进行导航。 请参阅如何:使用“反汇编”窗口

返回页首内容

启动 VS 解决方案中的多个进程,附加到一个进程,然后自动启动调试器中的进程

  • 开始调试 Visual Studio 解决方案中的多个进程 • 更改启动项目 • 启动解决方案中的特定项目 • 启动解决方案中的多个项目 • 附加到进程 • 自动启动调试器中的进程

备注

调试器不会自动附加到调试进程所启动的子进程中,即使子项目位于同一个解决方案中。调试子进程:

  • 在子进程启动后附加到该子进程。

    - 或 -

  • 配置 Windows 以自动启动调试器的新实例中的子进程。

开始调试 Visual Studio 解决方案中的多个进程

如果您在 Visual Studio 解决方案中有多个可独立运行的项目(在独立进程中运行的项目),则可以选择调试器将启动的项目。

正在为项目更改启动类型

更改启动项目

若要更改解决方案的启动项目,则在解决方案资源管理器中选择项目,然后从上下文菜单中选择**“设置为启动项目”**。

启动解决方案中的特定项目

若要启动解决方案的项目而不更改默认启动项目,请在解决方案资源管理器中选择该项目,然后从上下文菜单中选择**“调试”。 然后,您可以选择“启动新实例”“进入并单步执行新实例”**。

返回页首启动 VS 解决方案中的多个进程,附加到一个进程,然后自动启动调试器中的进程

返回页首内容

启动解决方案中的多个项目

  1. 在解决方案资源管理器中选择该解决方案,然后从上下文菜单中选择**“属性”**。

  2. 在**“属性”对话框中,依次选择“公共属性”“启动项目”**。

  3. 对于要更改的每个项目,请选择**“启动”“开始执行(不调试)”“无”**。

返回页首启动 VS 解决方案中的多个进程,附加到一个进程,然后自动启动调试器中的进程

返回页首内容

附加到进程

调试器还可以附加到正在 Visual Studio 的外部运行的程序,包括在远程设备上运行的程序。 一旦附加到某个程序,就可以使用调试器执行命令、检查程序状态,等等。 检查程序的能力可能会受到某些限制,这取决于程序是否用调试信息生成,是否可以访问程序源代码,以及公共语言运行时 JIT 编译器是否在跟踪调试信息。

有关更多信息,请参见使用 Visual Studio 调试器附加到运行的进程

附加到本地计算机上运行的进程

选择**“调试”“附加到进程”。 在“附加到进程”对话框中,从“可用进程”列表中选择进程,然后选择“附加”**。

“附加到进程”对话框

返回页首内容

自动启动调试器中的进程

有时,您可能需要调试由另一个进程启动的程序的启动代码。 这样的示例包括服务和自定义设置操作。 在这些情况下,可以让调试器在应用程序启动时启动并自动附加。

  1. 启动注册表编辑器 (regedit.exe)。

  2. 导航到**“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”**文件夹。

  3. 选择要在调试器中启动的应用程序的文件夹。

    如果该应用程序的名称未作为子文件夹列出,请选择**“Image File Execution Options”,然后在上下文菜单中选择“新建”“项”。 选择新项,在快捷菜单中选择“重命名”**,然后输入应用程序名称。

  4. 在应用程序文件夹的上下文菜单中,选择**“新建”“字符串值”**。

  5. 将新值的名称从 New Value 更改为 debugger。

  6. 在调试器项的上下文菜单上,选择**“修改”**。

  7. 在“编辑字符串”对话框中,在**“值数据”**框中键入 vsjitdebugger.exe。

    “编辑字符串”对话框

regedit.exe 中的自动调试器启动条目

返回页首内容

切换进程,中断并继续执行,逐步执行源

  • 在进程间切换 • 中断、单步执行、继续命令

在进程间切换

调试时可以附加到多个进程,但在任何给定时间,调试器中只有一个进程处于活动状态。 可以在调试位置工具栏或**“进程”**窗口中设置活动的或当前的进程。 若要在两个进程间切换,这两个进程必须处于中断模式。

设置当前进程

  • 在调试位置工具栏上,选择**“进程”以查看“进程”**列表框。 选择要指定为当前进程的进程。

    在进程之间切换

    如果**“调试位置”工具栏不可见,则选择“工具”“自定义”。 在“工具栏”选项卡上,选择“调试位置”**。

  • 打开**“进程”**窗口(快捷方式为 Ctrl+Alt+Z),找到要设置为当前进程的进程,然后双击该进程。

    “进程”窗口

    当前进程用黄色箭头标记。

切换到一个项目会将该项目设置为用于调试目的的当前进程。 您查看的所有调试器窗口将显示当前进程的状态,并且所有单步执行命令将仅影响当前进程。

返回页首切换进程,中断并继续执行,逐步执行源

返回页首内容

中断、单步执行和继续命令

备注

默认情况下,中断、继续和分步调试器命令会影响所有正在调试的进程。若要更改此行为,请参阅配置多个进程的执行行为

命令

一个进程中断时则中断所有进程

已选中(默认值)

一个进程中断时则中断所有进程

清除

“调试”菜单:

  • 全部中断

所有进程中断。

所有进程中断。

“调试”菜单:

  • Continue

所有进程继续。

所有挂起的进程继续。

“调试”菜单:

  • 逐语句

  • 逐过程

  • 跳出

在当前进程单步执行时,所有进程将运行。

然后,所有进程中断。

当前进程单步执行。

已挂起的进程继续。

正在运行的进程继续。

“调试”菜单:

  • 单步执行当前进程

  • 逐过程当前进程

  • 跳出当前进程

不可用

当前进程单步执行。

其他进程保持其现有状态(挂起或运行)。

源窗口

  • 断点

所有进程中断。

仅源窗口进程中断。

源窗口上下文菜单:

  • 运行到光标处

源窗口必须在当前进程中。

当源窗口进程运行到光标处所有进程运行,然后中断。

然后,所有其他进程中断。

源窗口进程运行到光标处。

其他进程保持其现有状态(挂起或运行)。

“进程”窗口上下文菜单:

  • 中断进程

不可用

已选进程中断。

其他进程保持其现有状态(挂起或运行)。

“进程”窗口上下文菜单:

  • 继续进程

不可用

已选进程继续。

其他进程保持其现有状态(挂起或运行)。

返回页首切换进程,中断并继续执行,逐步执行源

返回页首内容

停止调试进程、终止进程或与进程分离

  • 停止、终止和分离命令

默认情况下,在调试器中打开多个进程并选择**“调试”“停止调试”**时,调试器将终止所有进程或与所有进程分离,具体取决于进程在调试器中的打开方式:

  • 如果在调试器中启动了当前进程,则该进程将终止。

  • 如果您已将调试器附加到当前进程,则调试器会与进程分离并使进程保持运行。

例如,如果从 Visual Studio 解决方案中开始调试进程,将其附加到另一个已运行的进程,然后选择**“停止调试”**,则调试会话将结束,在 Visual Studio 中启动的进程也会终止,而您附加的进程将保持运行。 您可以使用以下过程控制停止调试的方法。

备注

“一个进程中断时则中断所有进程”选项不影响停止调试或终止进程以及与进程分离。

更改停止调试影响单个进程的方式

  • 打开**“进程”窗口(快捷方式为 Ctrl+Alt+Z)。 选择一个进程,然后选中或清除“调试停止时分离”**复选框。

停止、终止和分离命令

命令

说明

“调试”菜单:

  • 停止调试

除非行为被“进程”窗口中的“在调试停止时分离”选项更改,否则:

  1. 调试器启动的进程将被终止。

  2. 附加的进程将从调试器分离。

“调试”菜单:

  • 全部终止

所有进程将终止。

“调试”菜单:

  • 全部分离

调试器与所有进程分离。

“进程”窗口上下文菜单:

  • 分离进程

调试器与选定进程分离。

其他进程保持其现有状态(挂起或运行)。

“进程”窗口上下文菜单:

  • 终止进程

选定的进程将终止。

其他进程保持其现有状态(挂起或运行)。

“进程”窗口上下文菜单:

  • 调试停止时分离

切换所选进程的“调试”“停止调试”行为:

  • 已选中:调试器与进程分离。

  • 清除:进程已终止。

返回页首停止调试进程、终止进程或与进程分离

返回页首内容

请参见

概念

在 Visual Studio 中启动、中断、单步执行、通过代码运行和停止调试

在 Visual Studio 进行实时调试

其他资源

在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

使用 Visual Studio 调试器附加到运行的进程

在 Visual Studio 中调试多线程应用程序