如何:处理附加错误
本主题适用于:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
学习版 |
![]() |
![]() |
![]() |
![]() |
![]() |
专业版、高级专业版和旗舰版 |
![]() |
![]() |
![]() |
![]() |
当 Visual Studio 调试器附加到一个正在运行的进程时,该进程可能包含一种或多种类型的代码。 调试器能够附加到的代码类型包括本机、托管、SQL 和脚本。 在**“附加到进程”**对话框中显示并选择这些代码类型。
提示
为使调试器附加到用 C++ 编写的托管代码,该代码必须发出 DebuggableAttribute。 可通过链接 /ASSEMBLYDEBUG 链接器选项将它自动添加到代码中。
有时,调试器能够成功附加到一种代码类型,但不能附加到另一种代码类型。 这种情况可能发生在您尝试附加到远程计算机上运行的进程时, 原因是远程计算机上可能安装了一些代码类型的远程调试组件,但没有安装另一些代码类型的远程调试组件。 这种情况还可能发生在您尝试为直接数据库调试附加到两个或多个进程时。 SQL 调试仅支持附加到单个进程。
如果调试器能够附加到某些代码类型而不是所有代码类型,您将看到一条消息,指示无法附加的类型。
如果调试器成功地附加到至少一种代码类型,您就可以继续调试进程。 您只能调试那些已被成功附加的代码类型。 上面的示例消息说明未能附加脚本代码类型。 因此,您将不能调试进程内的脚本代码。 进程内的脚本代码将继续运行,但无法设置断点、查看数据或在脚本中执行其他调试操作。
如果想了解有关调试器未能附加到某种代码类型的详细原因,可以尝试仅重新附加到该代码类型。
获得有关某种代码类型未能附加的详细原因
从进程中分离。 为此,请在**“调试”菜单上,单击“全部分离”**。
仅选择一种程序类型,再次附加到进程。
在**“附加到进程”对话框的“可用进程”**列表中选择进程。
单击**“选择”**。
在**“选择代码类型”对话框中,选择“调试以下代码类型”**和未能附加的代码类型。 清除任何其他代码。
单击**“确定”**。 **“选择代码类型”**对话框关闭。
在**“附加到进程”对话框中,单击“附加”**。
此时,附加将彻底失败,并且您将收到一条特定的错误消息。