调试多进程应用程序 - Visual Studio (Windows)

调试多进程应用程序 - Visual Studio (Windows)

Visual Studio 可以调试具有多个进程的解决方案。 可以在进程之间开始和切换、中断、继续和逐步执行代码、停止调试以及结束或从单个进程分离。

使用多个进程开始调试

当 Visual Studio 解决方案中的多个项目可以独立运行时,可以选择调试器启动的项目。 当前启动项目在 解决方案资源管理器中以粗体显示。

若要更改启动项目,请在 解决方案资源管理器中右键单击其他项目,然后选择“ 设置为启动项目”。

若要从 解决方案资源管理器 开始调试项目而不使其成为启动项目,请右键单击该项目,然后选择 “调试>启动新实例 ”或 “单步执行到新实例”。

若要从解决方案属性设置启动项目或多个项目,请执行以下作:

在 解决方案资源管理器 中选择解决方案,然后选择工具栏中的 “属性” 图标,或右键单击解决方案并选择“ 属性”。

在 “属性 ”页上,选择 “通用属性>启动项目”。

选择 “当前选择”、“ 单个启动项目 ”和“项目文件”或 “多个启动项目”。

如果选择 多个启动项目,可以更改每个项目的启动顺序和作: 启动、 启动而不调试或 无。

选择 “应用”或 “确定 ”以应用并关闭对话框。

附加到进程

调试器还可以附加到在 Visual Studio 外部运行的进程中的应用程序,包括在远程设备上。 附加到应用后,可以使用 Visual Studio 调试器。 调试功能可能受到限制。 这取决于应用是否是使用调试信息生成的,你是否有权访问应用的源代码,以及 JIT 编译器是否跟踪调试信息。

有关详细信息,请参阅 “附加到正在运行的进程”。

附加到正在运行的进程:

运行应用后,选择“ 调试>附加到进程”。

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

注释

即使子项目位于同一解决方案中,调试器也不会自动附加到由调试进程启动的子进程。 若要调试子进程,请在子进程启动后附加到子进程,或将 Windows 注册表编辑器配置为在新调试器实例中启动子进程。

使用注册表编辑器在调试器中自动启动进程

有时,可能需要调试由另一个进程启动的应用的启动代码。 示例包括服务项目和自定义设置作业。 可以让调试器启动并自动附加到应用。

通过运行 regedit.exe启动 Windows 注册表编辑器。

在注册表编辑器中,导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options。

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

如果应用未列为子文件夹,请右键单击 “图像文件执行选项”,选择“ 新建>密钥”,然后键入应用名称。 或者,右键单击树中的新键,选择“ 重命名”,然后输入应用名称。

右键单击树中的新键,然后选择“ 新建>字符串值”。

将新值的名称从 New Value #1 更改为 debugger。

右键单击 调试器 并选择“ 修改”。

在“编辑字符串”对话框中,键入vsjitdebugger.exe“值”数据框,然后选择“确定”。

使用多个进程进行调试

使用多个进程调试应用时,默认情况下,中断、单步执行和继续调试器命令会影响所有进程。 例如,当某个进程在断点处暂停时,所有其他进程的执行也会暂停。 可以更改此默认行为,以便更好地控制执行命令的目标。

若要更改在一个进程出错时是否暂停所有进程:

在“工具”(或“调试”>选项)窗格中,展开“所有设置>>”部分。

在 “工具 ”(或 “调试” >选项 )对话框中,展开 “调试>常规 ”部分。

选中或清除当一个进程中断时中断所有进程选项复选框。

Break、Step、Continue 命令

下表描述了选中或取消选中一个进程中断时中断所有进程复选框时,调试命令的行为:

命令

Selected

已取消选中

调试>全部暂停

所有进程都会中断。

所有进程都会中断。

调试>继续

所有进程都会恢复。

所有挂起的进程都会恢复。

调试>单步进入、单步跳过或单步退出

所有进程在当前进程执行阶段时运行。 然后,所有进程都会中断。

当前流程步骤。 挂起的进程将恢复。 继续运行进程。

调试>进入当前进程、 越过当前进程或 退出当前进程

N/A

当前流程步骤。其他进程保持其现有状态(已挂起或正在运行)。

源窗口 断点

所有进程都会中断。

仅源窗口进程中断。

源窗口 “运行到游标”源窗口必须处于当前进程中。

所有进程在源窗口进程运行时一直运行到光标处,然后中断。然后,所有其他进程都会中断。

源窗口进程运行到游标。其他进程保持其现有状态(已挂起或正在运行)。

进程 窗口 >中断进程

N/A

选定的进程中断。其他进程保持其现有状态(已挂起或正在运行)。

“进程 ”窗口 >“继续处理”

N/A

所选进程将恢复。其他进程保持其现有状态(已挂起或正在运行)。

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

若要导航进程的源代码,调试器需要访问其源文件和符号文件。 有关详细信息,请参阅 指定符号 (.pdb) 和源文件。

如果无法访问进程文件,则可以使用 反汇编 窗口进行浏览。 有关详细信息,请参阅 如何:使用反汇编窗口。

在进程之间切换

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

若要从“调试位置”工具栏设置当前进程,请执行以下作:

若要打开 “调试位置” 工具栏,请选择“ 查看>工具栏>调试位置”。

在调试期间,在 “调试位置” 工具栏上,从“ 进程 ”下拉列表中选择要设置为当前进程的进程。

从“进程”窗口设置当前进程:

若要在调试时打开 “进程 ”窗口,请选择“ 调试>Windows>进程”。

在“ 进程 ”窗口中,当前进程标有黄色箭头。 双击要设置为当前进程的进程。

切换到进程会将它设置为当前进程以进行调试。 调试器窗口显示当前进程的状态,单步执行命令仅影响当前进程。

停止使用多个进程进行调试

默认情况下,选择 “调试>停止调试”时,调试器将结束或分离所有进程。

如果在调试器中启动当前进程,则进程将结束。

如果将调试器附加到当前进程,调试器会从进程分离,并使进程保持运行状态。

如果在 Visual Studio 解决方案中开始调试一个进程,然后再附加到另一个已经在运行的进程上,接着选择停止调试,调试会话将结束。 在 Visual Studio 中启动的进程将结束,而附加到的进程将持续运行。

若要控制 停止调试 影响单个进程的方式,请在“ 进程 ”窗口中右键单击某个进程,然后在 调试停止 时选中或清除“分离”复选框。

注释

在一个进程崩溃时,“中断所有进程”调试器选项不会影响停止、终止或与进程分离的操作。

停止、终止和分离命令

下表描述了具有多个进程的调试器停止、终止和分离命令的行为:

命令

说明

调试>停止调试

除非在 “进程 ”窗口中更改了行为,否则调试器启动的进程将结束,并且附加的进程将被分离。

调试>全部终止

所有进程都已结束。

调试>断开所有

调试器从所有进程分离。

“进程 ”窗口 >“分离进程

调试器从所选进程分离。其他进程保持其现有状态(已挂起或正在运行)。

“进程 ”窗口 >“终止进程

所选进程已结束。其他进程保持其现有状态(已挂起或正在运行)。

调试停止时>”窗口分离

如果选中, 调试>停止调试 将从所选进程分离。 如果未选中, 调试>停止调试 将结束所选进程。

相关内容

指定符号 (.pdb) 文件和源文件

附加到正在运行的进程

使用调试器浏览代码

实时调试

调试多线程应用程序

📚 相关推荐

现在有一秒可以让人晕倒的药吗
365手机app

现在有一秒可以让人晕倒的药吗

📅 12-02 👁️ 7263
“伉俪”读音是什么?“伉俪”和“夫妇”有何不同?
任丘36524便利店电话

“伉俪”读音是什么?“伉俪”和“夫妇”有何不同?

📅 10-04 👁️ 9054
【爽】开头的成语
任丘36524便利店电话

【爽】开头的成语

📅 09-13 👁️ 5074
安徽广播电视台
365手机app

安徽广播电视台

📅 08-13 👁️ 337
电脑怎么录音?分享2种音频录制方法
亚洲365bet体育

电脑怎么录音?分享2种音频录制方法

📅 08-27 👁️ 2866
法医秦明池子怎么知道那么多
任丘36524便利店电话

法医秦明池子怎么知道那么多

📅 10-05 👁️ 3779
如何在三星手机上激活或停止计步器
365手机app

如何在三星手机上激活或停止计步器

📅 08-29 👁️ 3676
【千璃雪】
亚洲365bet体育

【千璃雪】

📅 09-26 👁️ 7890
学插花的app有哪些?关于花艺的app
365手机app

学插花的app有哪些?关于花艺的app

📅 07-22 👁️ 1774