我有一个.NET应用程序,它使用互操作服务调用本机Win32 DLL。当我运行这个程序时,它会在DLL内的某个地方崩溃。但是,我无法获得任何堆栈转储信息。
当我在Visual Studio调试器中运行时,调试器会在崩溃发生时退出。我得到了“Blah-blah-app已停止工作.Windows正在检查问题的解决方案......”。如果我单击出现的Debug按钮,我会收到一条错误消息,说明该进程已在调试器中打开,但我启动该应用程序的调试器无效。
我已尝试按照此处的说明启用本地崩溃转储:Collecting User-Mode Dumps。但是,没有生成崩溃转储,我注意到该页面显示“此功能不支持执行自己的自定义崩溃报告的应用程序,包括.NET应用程序。”
答案 0 :(得分:2)
听起来您正在使用托管调试,这是托管项目的默认设置。如果您在本机DLL中崩溃,则需要启用混合模式调试以获取您正在寻找的事件和堆栈。
重复您的方案。
答案 1 :(得分:0)
从SDK安装Debugging Tools for Windows并使用windbg.exe
调试程序。
答案 2 :(得分:0)
当你得到" Blah-blah-app已经停止工作...... "消息,该过程仍然存在。您可以在任务管理器中找到它,右键单击它并选择创建转储文件。