DebugBreak 不中断

Posted

技术标签:

【中文标题】DebugBreak 不中断【英文标题】:DebugBreak not breaking 【发布时间】:2010-11-05 20:35:33 【问题描述】:

我正在用 C++ 编写一个无法使用 F5 进行调试的类。代码将从另一个调用它的“服务”运行。 过去我使用过__debugbreak(),当我得到一个窗口告诉我抛出异常时,选择对其进行调试。

最近我已经更新到 Windows 7 并且它一直工作了一段时间。

今天,当我尝试调试一段代码而不是显示告诉我 VSTestHost 已停止工作并使我能够调试应用程序的常规对话框时,我得到了一个不同的对话框,建议我将数据发送给微软进行分析。

有谁知道我该如何解决这个问题,以便能够调试我的代码?

【问题讨论】:

【参考方案1】:

我终于找到了问题的原因。 这是 Vista/Win7 的原因:

    打开操作中心控件 转到操作中心设置 转到问题报告设置 选择“每次出现问题时,在检查解决方案之前询问我”

虽然这更多是 IT 解决方案/问题,但我整天都被这个问题所困扰,并希望与遇到此问题的其他开发人员分享解决方案。

【讨论】:

它确实停止了关于 Win 8 的报告,但它也不提供启动调试器。它只是说错误 1067:进程意外终止。【参考方案2】:

我终于在这里找到了适用于 Windows 10 的解决方案: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/enabling-postmortem-debugging

还有:https://docs.microsoft.com/en-us/windows/desktop/Debug/configuring-automatic-debugging

要启用自动调试器启动,您应该添加一个注册表值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug,值Auto = 1REG_DWORD类型)

配置的调试器由值Debugger(类型REG_SZ)设置; Visual Studio 安装将此设置为:

"C:\WINDOWS\system32\vsjitdebugger.exe" -p %ld -e %ld

请注意,在 64 位操作系统上,这仅适用于 64 位 可执行文件。要在 32 位 可执行文件中启用相同的行为,请在此键中设置相同的值:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug

【讨论】:

这在 Windows 10 上帮助了我(特别是添加“自动”的步骤)。谢谢!【参考方案3】:

这样的话……

http://community.codesmithtools.com/blogs/blake/archive/2009/06/03/tips-amp-tricks-debugging-codesmith-on-microsoft-windows-7.aspx

以下是在 Microsoft Windows 7 计算机上启用调试所需要做的快速概述:

更新即时调试器设置 DbgJITDebugLaunchSetting。该设置位于注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]。 将 DbgJITDebugLaunchSetting 的值设置为 2。 如果您使用的是 64 位操作系统,则还必须将此文件夹 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework] 中的相同密钥 (DbgJITDebugLaunchSetting) 设置为 2。 如果您遇到任何问题,请尝试以管理员身份运行 CodeSmith Studio 和 Visual Studio。 现在,当 CodeSmith 进入断点时,您将看到如下内容:

【讨论】:

很好的发现,但我已经设法解决了这个问题,而无需将键的值更改为 2(默认为 16) 这些设置仅用于 CLR 调试。问题是关于原生 C++ 代码的。【参考方案4】:

您可以尝试调试 > 附加到进程。

【讨论】:

有时这可能是一个问题,因为当您附加到进程时,您的代码已经超过了那个点。在这些情况下,我发现在我想要中断的点之前放置一个 Sleep(10000) 很有帮助。给了我足够的时间来处理这个过程。 我不是在寻找另一种调试方式 - 我想修复当前为什么要调试我的代码

以上是关于DebugBreak 不中断的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL glAttachShader 1281 错误

arm7的捕获和中断有啥区别呢

在ucos中 我使用了CAN的接受中断 程序就一直执行中断,不去执行任务,然后不喂狗超时重启,这个怎么解决

最近在自学STM32,写了一个按键中断程序,但是中断总是不响应...望大虾赐教,谢谢....程序如下

调试使用 nmake 编译的 C 程序

Linux中断补充