我正在用C ++编写一个无法使用F5调试的类。代码将从另一个将调用它的“服务”运行。
在过去,我使用了__debugbreak()
,当我有一个窗口告诉我选择了一个异常进行调试时。
最近我更新到了Windows 7并且它已经工作了一段时间。
今天当我尝试调试我的代码而不是显示常规对话框,告诉我VSTestHost已停止工作并使我能够调试应用程序时,我得到了一个不同的对话框,建议我将数据发送到microsoft用于分析。
有谁知道如何解决这个问题,以便我能够调试我的代码?
答案 0 :(得分:22)
最后我找到了问题的原因。 这是Vista / Win7的原因:
虽然这更像是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)
在那种情况下......
以下是在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)
您可以尝试调试>附加到流程。