DebugBreak没有破坏

时间:2009-06-25 13:59:30

标签: c++ windows debugging windows-7

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

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

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

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

4 个答案:

答案 0 :(得分:22)

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

  1. 打开动作中心控件
  2. 转到操作中心设置
  3. 转到问题报告设置
  4. 选择“每次出现问题时,请在检查解决方案前询问我”
  5. 虽然这更像是IT解决方案/问题,但我一直困扰着这个问题,并希望与遇到此问题的其他开发人员分享解决方案。

答案 1 :(得分:7)

我终于在这里找到了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 = 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

答案 2 :(得分:1)

在那种情况下......

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

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

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

答案 3 :(得分:-1)

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