我正在用C++编写一个类,但无法使用 F5 进行调试。代码将从另一个“服务”中运行并调用它。
过去,我曾使用 __debugbreak()
,当出现异常并弹出窗口时选择进行调试。
最近我升级到了Windows 7,它一直能够正常工作。
今天当我尝试调试我的代码时,没有显示常规的对话框告诉我 VSTestHost 已停止工作,并启用了应用程序的调试。取而代之的是出现了一个不同的对话框,建议我向 Microsoft 发送数据进行分析。
是否有人知道如何解决这个问题,以便我可以调试我的代码?
我正在用C++编写一个类,但无法使用 F5 进行调试。代码将从另一个“服务”中运行并调用它。
过去,我曾使用 __debugbreak()
,当出现异常并弹出窗口时选择进行调试。
最近我升级到了Windows 7,它一直能够正常工作。
今天当我尝试调试我的代码时,没有显示常规的对话框告诉我 VSTestHost 已停止工作,并启用了应用程序的调试。取而代之的是出现了一个不同的对话框,建议我向 Microsoft 发送数据进行分析。
是否有人知道如何解决这个问题,以便我可以调试我的代码?
最终我找到了问题的原因。 这是一个Vista/Win7的问题:
虽然这更像是IT解决方案/问题,但我整天为此问题苦恼,希望与其他遇到此问题的开发人员分享解决方案。
我在这里终于找到了解决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
在这种情况下...
这是启用 Microsoft Windows 7 机器上调试的快速概述:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
。
将DbgJITDebugLaunchSetting的值设置为2。
如果您使用64位操作系统,则还必须在此文件夹中设置相同的密钥(DbgJITDebugLaunchSetting)[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]
为2。
如果遇到任何问题,请尝试以管理员身份运行CodeSmith Studio和Visual Studio。
现在,当 CodeSmith 进入断点时,您将看到类似以下内容的信息: