获取使用本机互操作的.NET应用程序的崩溃转储

时间:2010-08-24 15:47:18

标签: .net visual-studio debugging

我有一个.NET应用程序,它使用互操作服务调用本机Win32 DLL。当我运行这个程序时,它会在DLL内的某个地方崩溃。但是,我无法获得任何堆栈转储信息。

当我在Visual Studio调试器中运行时,调试器会在崩溃发生时退出。我得到了“Blah-blah-app已停止工作.Windows正在检查问题的解决方案......”。如果我单击出现的Debug按钮,我会收到一条错误消息,说明该进程已在调试器中打开,但我启动该应用程序的调试器无效。

我已尝试按照此处的说明启用本地崩溃转储:Collecting User-Mode Dumps。但是,没有生成崩溃转储,我注意到该页面显示“此功能不支持执行自己的自定义崩溃报告的应用程序,包括.NET应用程序。”

3 个答案:

答案 0 :(得分:2)

听起来您正在使用托管调试,这是托管项目的默认设置。如果您在本机DLL中崩溃,则需要启用混合模式调试以获取您正在寻找的事件和堆栈。

  • 右键单击项目并选择“属性”
  • 转到“调试”选项卡
  • 选中“启用非托管调试”复选框

重复您的方案。

答案 1 :(得分:0)

从SDK安装Debugging Tools for Windows并使用windbg.exe调试程序。

答案 2 :(得分:0)

当你得到" Blah-blah-app已经停止工作...... "消息,该过程仍然存在。您可以在任务管理器中找到它,右键单击它并选择创建转储文件

相关问题