如何:处理附加错误

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题不适用 主题不适用 主题不适用 主题不适用

标准版

主题适用 主题适用

主题适用

主题适用

专业团队版

主题适用 主题适用

主题适用

主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

当 Visual Studio 调试器附加到一个正在运行的进程时,该进程可能包含一种或多种类型的代码。调试器能够附加到的代码类型有本机、托管、T-SQL 和脚本类型。在“附加到进程”对话框中显示并选择这些代码类型。

说明:

为使调试器附加到用 C++ 编写的托管代码,该代码必须发出 DebuggableAttribute。可通过链接 /ASSEMBLYDEBUG 链接器选项将它自动添加到代码中。

有时,调试器能够成功附加到一种代码类型,但不能附加到另一种代码类型。这种情况可能发生在您试图附加到远程计算机上运行的进程时,原因是远程计算机上可能安装了一些代码类型的远程调试组件,但没有安装另一些代码类型的远程调试组件。这种情况还可能发生在您试图为直接数据库调试附加到两个或多个进程时。SQL 调试仅支持附加到单个进程。

如果调试器能够附加到某些代码类型而不是所有代码类型,您将看到一条类似于以下内容的消息:

The requested attach was not completed successfully.
Program types successfully attached are:
Common Language Runtime
Native (Win32)
Microsoft T_SQL
Program types that failed to attach are:
Script

如果调试器成功地附加到至少一种代码类型,您就可以继续调试进程。您只能调试那些已被成功附加的代码类型。上面的示例消息说明未能附加脚本代码类型。因此,您将不能调试进程内的脚本代码。进程内的脚本代码将继续运行,但无法设置断点、查看数据或在脚本中执行其他调试操作。

如果想了解有关调试器未能附加到某种代码类型的详细原因,可以尝试仅重新附加到该代码类型。

获得有关某种代码类型未能附加的详细原因

  1. 从进程中分离。为此,请在“调试”菜单上,单击“全部分离”。

  2. 仅选择一种程序类型,再次附加到进程。

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

    2. 单击“选择”。

    3. 在“选择代码类型”对话框中,选择“调试以下代码类型”和未能附加的代码类型。清除任何其他代码。

    4. 单击“确定”。“选择代码类型”对话框关闭。

    5. 在“附加到进程”对话框中,单击“附加”。

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

请参见

其他资源

附加到运行进程