Visual Studio即时调试程序立即退出

时间:2016-04-23 00:55:20

标签: c# c++ visual-studio-2015

我有一个WinForms托管应用程序,它调用本机C ++ DLL。我为项目启用了混合托管和非托管调试,我可以在调试项目时进入非托管代码。 我对JIT调试感兴趣,因为在调试器外部运行调试版本并且只有在违反某些断言后才开始调试。当托管代码中引发异常时,JIT Debugger工作正常。当我JIT调试独立的C ++应用程序时,它也可以工作。但是,每当从WinForms应用程序调用的非托管代码中引发异常时,JIT调试器在我启动调试会话后立即退出。我在Options / Debugging / Just-In-Time列表中启用了所有JIT调试器。是否支持这种情况?

更新

我已经运行了一些测试,我可以看到

  1. 此问题并非特定于WinForms应用程序。当托管控制台应用程序调用本机dll时,JIT Debug也会失败,从而引发断言异常。
  2. 问题似乎并不依赖于框架版本。我尝试了版本3.5,4,4.5,4.6。
  3. 当我将调试器附加到托管主机应用程序时,调试器也无法在非托管代码中断断断言异常。

2 个答案:

答案 0 :(得分:0)

我以前经历过这种情况。我认为问题是调试器没有捕获异常。

我做了以下操作,也许这会有所帮助。

  

点击调试 - > Windows->例外设置。

或者您只需在快速启动时搜索“例外”。

您可能会发现默认设置没有捕获到很多异常。

答案 1 :(得分:0)

我觉得自己很蠢。解决方案就在我面前。 Visual Studio Just-In-Time Debugger对话框中有一个选项。它被称为"手动选择调试引擎"。必须选择Managed和Native引擎。