【已更新最新开发文章,点击查看详细】

进程运行后,在 Visual Studio 中选择“调试” > “附加到进程”,或按 Ctrl+Alt+P,然后使用“附加到进程”对话框将调试器附加到进程。

例如,如果运行的是不带调试器的应用,并触发异常,则可以将调试器附加到运行应用的进程并开始调试。

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

若要附加到本地计算机上的进程,请执行以下操作:

  1. 在 Visual Studio 中,选择“调试” > “附加到进程”(或按 Ctrl+Alt+P),打开“附加到进程”对话框。

    “连接目标”应该是本地计算机名称。

    Visual Studio 调试系列10 附加到正在运行的进程

  2. 在“可用进程”列表中,查找并选择要附加到的一个或多个进程。

    • 若要快速选择一个进程,请在“筛选进程”框中键入其名称或首字母。

    • 常见调试方案,了解一些常见的进程名称。

    “附加到进程”对话框处于打开状态时,进程可以在后台启动和停止,因此正在运行的进程列表可能不总是最新内容。

       可随时选择“刷新”查看当前列表。

  3. 默认的“自动”设置适用于大多数应用类型。

    若要手动选择代码类型:

    1. 单击“选择”。
    2. 在“选择代码类型”对话框中,选择“调试这些代码类型”。
    3. 选择你想要调试的代码类型。
    4. 选择 确定。
  4. 选择“附加”。

Visual Studio 调试系列10 附加到正在运行的进程

可附加到多个应用进行调试,但在调试器中一次只能有一个应用处于活动状态。 可在 Visual Studio 的“调试位置”工具栏或“进程”窗口中设置活动的应用。

02 附加到远程计算机上的进程

远程调试。

远程调试远程 IIS 计算机上的 ASP.NET。

若要将附加到远程计算机上正在运行的进程:

  1. 在 Visual Studio 中,选择“调试” > “附加到进程”(或按 Ctrl+Alt+P),打开“附加到进程”对话框。

  2. 在“连接目标”框中,使用以下方法之一选择远程计算机:

    • 选择下拉箭头旁边的“连接目标”,并从下拉列表中选择计算机名称。

    • 键入中的计算机名称连接目标框,然后按Enter。

      验证 Visual Studio 将所需的端口添加到计算机名称,将出现在格式: <远程计算机名称 >: 端口

      如果您不能使用远程计算机名称进行连接,请尝试使用 IP 和端口地址 (例如, 123.45.678.9:4022)。 4024 是 Visual Studio 2019 x64 远程调试器的默认端口。 有关其他远程调试器端口分配,请参阅远程调试器端口分配。

    • 选择的计算机或所需的设备,然后单击选择。

    “连接类型”设置在调试会话之间保持不变。 而“连接目标”设置只有在成功与该目标建立了调试连接时才会在调试会话之间保持不变。

  3. 单击“刷新”,填充“可用进程”列表。

    “附加到进程”对话框处于打开状态时,进程可以在后台启动和停止,因此正在运行的进程列表可能不总是最新内容。 可随时选择“刷新”查看当前列表。

  4. 在“可用进程”列表中,查找并选择要附加到的一个或多个进程。

  5. 默认的“自动”设置适用于大多数应用类型。

    若要手动选择代码类型:

    1. 单击“选择”。
    2. 在“选择代码类型”对话框中,选择“调试这些代码类型”。
    3. 选择你想要调试的代码类型。
    4. 选择 确定。
  6. 选择“附加”。

Visual Studio。

WDK 和 WinDbg 下载中下载并安装适用于 Windows 的调试工具。

03 重新附加到进程
如果不找到任何匹配项,或多个进程具有相同的名称,“附加到进程” 对话框将打开,这样您就可以选择正确的进程。

重新附加到进程命令是从 Visual Studio 2017 开始提供。

04 常见的调试方案

(该列表并未列出详尽信息。)

对于某些应用类型,如通用 Windows 应用 (UWP) ,不能直接附加到进程名称,而需使用 Visual Studio 中的“调试安装的应用程序包”菜单选项(请参阅表格)。

/ASSEMBLYDEBUG 链接器选项将它自动添加到代码中。

对于调试在 Chrome 上的客户端脚本,请选择Web 工具包作为代码类型,并根据你的应用类型,可能需要关闭所有 Chrome 实例并在调试模式下启动浏览器 (类型chrome.exe --remote-debugging-port=9222从命令行)。

若要快速选择正在运行的进程来将附加到,在 Visual Studio 中,键入Ctrl+Alt+P,然后键入的第一个字母进程名称。

方案 调试方法 进程名 说明和链接
远程调试 ASP.NET 4 或 4.5 上 IIS 服务器 使用远程工具和附加到进程 w3wp.exe 远程调试远程 IIS 计算机上的 ASP.NET
IIS 服务器上的远程调试 ASP.NET Core 使用远程工具和附加到进程 dotnet.exe 远程调试远程 IIS 计算机上的 ASP.NET Core
调试客户端脚本的本地 IIS 服务器上,为受支持的应用类型 使用附加到进程 chrome.exe, MicrosoftEdgeCP.exe,或iexplore.exe 对于 Chrome 中,也必须在调试模式下,选择运行 Chrome Webkit 代码中附加到字段。
调试C#,Visual Basic 或C++在本地计算机上的应用 使用任一标准调试 (F5) 或附加到进程 <appname>.exe 在大多数情况下,使用标准调试并不附加到进程。
远程调试 Windows 桌面应用程序 远程工具 不适用 远程调试C++应用程序
调试 ASP.NET 应用程序在本地计算机上,在启动不带调试器的应用后 使用附加到进程 iiexpress.exe 这可能会有所帮助使应用程序加载速度更快,如 (例如) 进行分析时。
调试服务器进程上的其他受支持的应用类型 如果远程服务器,使用远程工具和附加到进程 chrome.exe, iexplore.exe,或其他进程 远程调试。
远程调试的通用 Windows 应用 (UWP)、 OneCore、 HoloLens 或 IoT 应用 调试安装的应用包 不适用 调试安装的应用包而不是使用附加到进程
调试未从 Visual Studio 启动的通用 Windows 应用 (UWP)、 OneCore、 HoloLens 或 IoT 应用 调试安装的应用包 不适用 调试安装的应用包而不是使用附加到进程
 
05 使用调试器的功能

要在附加到流程时使用Visual Studio调试器的完整功能(如命中断点),应用程序必须与本地源和符号完全匹配。也就是说,调试器必须能够加载正确的符号(.pdb)文件。默认情况下,这需要调试版本。

对于远程调试方案,您必须已在Visual Studio中打开源代码(或源代码的副本)。远程计算机上编译的app二进制文件必须来自与本地计算机上相同的版本。

在某些本地调试方案中,如果应用程序中存在正确的符号文件,则可以在Visual Studio中进行调试而无法访问源。默认情况下,这需要调试版本。有关更多信息,请参阅指定符号和源文件

06 排查附加错误
 可在 “选择代码类型” 对话框中显示并选择可将调试器附加到的代码类型。
Visual Studio 调试系列10 附加到正在运行的进程

有时,调试器可以成功连接到一种代码类型,但不能连接到另一种代码类型。如果您尝试连接到远程计算机上运行的进程,则可能会发生这种情况。远程计算机可能为某些代码类型安装了远程调试组件,但对其他代码类型则没有。如果您尝试连接到两个或多个进程以进行直接数据库调试,也会发生此问题。SQL调试仅支持附加到单个进程。

如果调试器能够附加到某些(但不是所有)代码类型,您会看到一条消息,标识哪些类型无法附加。

如果调试器成功附加到至少一种代码类型,则可以继续调试该过程。您将只能调试成功附加的代码类型。进程中未附加的代码仍将运行,但您将无法在该代码上设置断点,查看数据或执行其他调试操作。

如果您需要有关调试器无法附加到代码类型的原因的更多具体信息,请尝试仅重新连接到该代码类型。

获得有关代码类型未能附加的具体信息:

  1. 上调试菜单中,选择全部分离。

  2. 重新附加到进程,仅选择代码类型未能附加。

    1. 在“附加到进程”对话框,选择“可用进程”列表中的进程。

    2. 选择选择。

    3. 取消选择其他代码类型。

    4. 选择 确定。

    5. 在中附加到进程对话框中,选择附加。

    此时,附加将彻底失败,并且你将收到一条特定的错误消息。

 

其他信息请参考

 

【已更新最新开发文章,点击查看详细】

相关文章:

  • 2021-11-25
  • 2019-09-11
  • 2021-11-11
  • 2021-12-16
  • 2021-12-01
  • 2021-10-04
猜你喜欢
  • 2022-12-23
  • 2021-06-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
相关资源
相似解决方案