【问题标题】:Visual Studio Just-in-Time Debugger quits immediatelyVisual Studio 即时调试器立即退出
【发布时间】:2016-08-16 18:24:01
【问题描述】:

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

更新

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    点击调试->Windows->异常设置。

    或者您只是在快速启动时搜索“异常”。

    你可能会发现很多异常没有被默认捕获。

    【讨论】:

    • 谢谢,但这里似乎并非如此。断言异常已启用,并且在我运行独立的本机应用程序时被正确捕获。只有在从托管代码调用的本机 dll 中引发断言异常时,它才无法进行即时调试。但以防万一我启用了所有例外。同样的问题。
    【解决方案2】:

    我觉得自己很愚蠢。解决方案就在我面前。 Visual Studio 即时调试器对话框中有一个选项。它被称为“手动选择调试引擎”。必须选择托管引擎和本机引擎。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2019-10-05
      相关资源
      最近更新 更多