DebugBreak无法中断程序

20

我正在用C++编写一个类,但无法使用 F5 进行调试。代码将从另一个“服务”中运行并调用它。

过去,我曾使用 __debugbreak(),当出现异常并弹出窗口时选择进行调试。

最近我升级到了Windows 7,它一直能够正常工作。

今天当我尝试调试我的代码时,没有显示常规的对话框告诉我 VSTestHost 已停止工作,并启用了应用程序的调试。取而代之的是出现了一个不同的对话框,建议我向 Microsoft 发送数据进行分析。

是否有人知道如何解决这个问题,以便我可以调试我的代码?

4个回答

27

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

  1. 打开“操作中心”控制面板
  2. 进入“操作中心设置”
  3. 进入“问题报告设置”
  4. 选择“每次出现问题时,在检查解决方案之前询问我”

虽然这更像是IT解决方案/问题,但我整天为此问题苦恼,希望与其他遇到此问题的开发人员分享解决方案。


1
它肯定在Win 8上停止了报告,但它也不提供启动调试器的选项。 它只是显示错误1067:进程意外终止。 - mlt

18

我在这里终于找到了解决Windows 10/11问题的方法:https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/enabling-postmortem-debugging

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

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

  • 键为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug,值为Auto=1(类型为REG_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

5
这对我在Windows 10上有所帮助(具体来说是添加“Auto”步骤),谢谢! - Emerick Rogul
谢谢,这对我在Windows 11上很有帮助。 - Sabuncu

1

在这种情况下...

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位操作系统,则还必须在此文件夹中设置相同的密钥(DbgJITDebugLaunchSetting)[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]为2。 如果遇到任何问题,请尝试以管理员身份运行CodeSmith Studio和Visual Studio。 现在,当 CodeSmith 进入断点时,您将看到类似以下内容的信息:

不错的发现,但我已经成功解决了问题,而无需将键的值更改为2(默认为16)。 - Dror Helper
这些设置仅适用于CLR调试。问题涉及本机C++代码。 - ceztko

-2
你可以尝试使用调试器的“附加到进程”功能。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接