【问题标题】:If a program is crashing and Windows error screen comes up but not the JIT dialog how do I get it to bring up the JIT window instead?如果程序崩溃并且出现 Windows 错误屏幕但没有出现 JIT 对话框,我如何让它显示 JIT 窗口?
【发布时间】:2013-06-01 16:28:01
【问题描述】:

我正在使用 Visual C++ 2008 编写一个 DLL,然后加载并在另一个应用程序中运行(一个用 Visual C++ 编写的 exe,我没有源代码)。尽管如此,我还是必须调试有时会发生的插件崩溃。

我已在 Visual C++ 2008 调试器属性中启用 JIT 调试。 我还为其他项目安装了大约 4 个其他版本的 Visual Studio,我不确定我是否还必须为已安装的所有其他版本的 Visual C++/Visual Studio 禁用 JIT。

在这里使用 JIT 调试会非常方便。但是,当主程序崩溃时,我得到了这个对话框:

   Title: "<Program name> has stopped working"
   Message: Windows is collecting more information about the problem.

然后我收到“您要发送有关该问题的更多信息吗?”对话。 它告诉我它在 c:\users\myuserid\AppData\Local\Temp\WER*.* 中创建了一些文件。*

如何修改 windows 环境,或者如何创建一个有效的清单文件,我可以将它放在主崩溃 EXE 的外部以使其启用 JIT 调试?

【问题讨论】:

  • 如果 jit 调试器安装正确,那么您将在 WER 对话框中看到一个 Debug 按钮。也许你没有正确安装它。通常,在这里要做的明智的事情是从一开始就使用调试器运行程序。请记住,它也适用于发布版本,只是调试起来并不容易。
  • 我猜肯定不是。我是否必须重新安装 Visual Studio 2010 + SP1?
  • 你可以转动命运之轮。最好先找出你的注册表有什么问题,Ben 的链接中的 aedebug 键。

标签: debugging visual-studio-2008 visual-c++ jit


【解决方案1】:

Here is the MSDN documentation for JIT。您可以使用的另一个策略是加载您的 dll 项目,使用主机程序作为调试属性中的命令运行它,您将已经在调试器中;另一种选择是附加到使用您的 dll 的进程。祝你好运,希望这会有所帮助:)

【讨论】:

  • 现在我正在使用附加到进程,并使用 MessageBox 来停止事情直到我附加,我认为这很糟糕,我希望有更好的方法,而且 JIT 看起来很好。跨度>
  • MessageBox 是模态的,但不一定会在您的 dll 中停止处理;此外,将 UI 功能添加到您的 dll 会引入您可能无法解释的未知数。尝试使用 _asm {int 3}(DebugBreak() 函数是发布代码中的 nop)来触发调试器中断。这应该会提示您进行调试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多