如何:附加到托管设备进程

更新:2007 年 11 月

在设备上附加到进程与在桌面上非常相似,区别在于,如果进程已在未附加调试器的情况下运行,则必须在设备上设置一个注册表项以启用托管调试功能。此注册表项的设置将一直保持,直至您将其更改;或者,对于仿真程序,将一直保持到仿真程序在不保存其设置的情况下关闭。

说明:

设置设备调试项会降低性能。在不进行调试时,请重置该项。

如果试图附加两个调试器,或者在未设置设备注册表项的情况下试图附加托管调试器,则您可能收到错误消息。

可以通过多种方式启动进程,如通过文件资源管理器、命令提示等等。下面的步骤中将通过“调试”菜单来启动进程。还可以在不附加托管调试器的情况下启动进程,然后在以后附加托管调试器。

如果是针对由 Platform Builder 生成的 Windows CE 平台,则必须使用 toolhelp.dll 库填充“可用进程”窗格。此库包含于 Windows Mobile SDK 中。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

调试托管进程

调试托管进程

  • 在“调试”菜单上单击“启动”。

    说明:

    如果与从“调试”菜单启动的进程分离,则在执行下列步骤(以便在进程运行后附加到该进程)之前,将无法重新附加。也就是说,必须在设备上设置注册表项。

附加到已运行的托管进程

如果打算附加到已在运行的进程(例如,通过单击“开始执行(不调试)”,然后附加到正在运行的托管进程),则必须在进程启动之前以及尝试使用“附加到进程”对话框进行附加之前,先设置设备注册表项。下面的步骤对此过程进行了详细说明。

设置设备注册表项以便能够附加到正在运行的进程

  1. 在 Windows“开始”菜单上指向“所有程序”,指向“Microsoft Visual Studio 2008”,指向“Visual Studio Tools”,然后单击“远程注册表编辑器”。

  2. 使用远程注册表编辑器连接到设备。

  3. 定位至或创建以下注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETCompactFramework\Managed Debugger

  4. 设置或创建名为 AttachEnabled 的 DWORD 值。

  5. 将该值的数据设置为 1。

    说明:

    设置设备调试项会显著降低性能。在不进行调试时,请通过将数据值重置为 0 或删除 AttachEnabled 值来禁用托管附加。

  6. 关闭远程注册表编辑器。

    现在已启用了托管附加,可以在不附加调试器的情况下启动进程,然后使用“附加到进程”对话框附加到该进程。

在托管进程运行后附加到该进程

  1. 按照上述步骤设置注册表项之后,在不附加调试器的情况下启动进程。

  2. 在“工具”菜单上单击“附加到进程”。

  3. 在“传输”框中单击“智能设备”。

  4. 在“限定符”框中单击“浏览”。

    说明:

    “限定符”框预先设置了当前会话中最常用的设备。

  5. 在“连接到设备”对话框中选择平台,选择设备,然后单击“连接”。

  6. 在“可用进程”窗格中选择一个或多个要附加到的进程,然后单击“附加”。

    说明:

    默认情况下,代码类型自动设置为“托管(.NET Compact Framework)”(如果可用),否则设置为“本机(智能设备)”。若要重写默认设置,请单击“选择”以打开“选择代码类型”对话框。注意,您不能同时选中二者。

    说明:

    不支持互操作调试。即,不能同时调试托管和本机代码类型。

与进程分离或终止进程

与进程分离或终止进程

  1. 在“调试”菜单上指向“窗口”,再单击“进程”。

  2. 在“进程”窗口中右击要与之分离或终止的进程。

  3. 在快捷菜单上单击“终止进程”或“与进程分离”。

    说明:

    可以使用相同的快捷菜单重新打开“附加到进程”对话框。

填充“可用进程”窗格

在 Windows CE 项目中填充“可用进程”窗格

  • 在 Windows CE OS 映像中包括文件 toolhelp.dll。

    - 或 -

    将文件 toolhelp.dll 手动复制到目标设备。

请参见

任务

演练:调试同时包含托管代码和本机代码的解决方案

概念

生成并调试 Visual C++ 设备项目

其他资源

调试设备项目