从 COM 调用时,如何调试托管代码中未经处理的异常
本文关键字:托管代码 异常 处理 调试 调用 COM 何调试 | 更新日期: 2023-09-27 17:57:27
我有一个C# .NET组件,它是从COM进程外ActiveXexe调用的。
我可以在Visual Studio 2005中启动调试器,该调试器在我的COM exe上运行,该COM调用我的.NET组件。断点有效,但在未处理的"对象引用集"异常上中断则不起作用。我尝试了以下方法无济于事:
- 已检查"VS 例外"对话框中的所有 CLR 异常
- 启用"当异常跨越应用程序域或托管/本机边界时中断"
- 在我的项目上启用了非托管代码调试
- 禁用"只是我的代码"调试
我通常做的是在托管代码的入口点添加对System.Diagnostics.Debugger.Launch;
的调用。如果程序尚未处于调试模式,这将启动调试器。请记住,完成调试后需要删除此行,因为您不希望保留调用以在发布版本中启动调试器。
不是
使用 F5
运行编程,而是运行非托管程序,然后附加到它:
对于 Visual Studio 2005:
- 使用
Ctrl+F5
从 Visual Studio 运行(而不是调试(非托管项目 - 打开"附加到进程"对话框:调试 ->附加到进程...
- 单击附加到:选择按钮:选择...
- 选择:调试以下代码类型:
- 检查以下项目:托管、本机
- 单击"确定">
- 从可用流程中选择您的流程
- 单击附加
这应该在非托管进程中启用托管和非托管调试。 现在,假设您有符号,则可以在托管代码中设置断点或捕获首次机会异常。