我们使用DebugBreak()和/或asm int 3作为在断言发生时停止我们的单元测试框架的方法。单元测试框架作为用户模式应用程序运行。
我们正在运行win 7 x64,企业版,并且通常使用vs2008,还有Windbg。通常,当调用DebugBreak时,会弹出“检查解决方案/关闭/调试”对话框。
在一台用户的计算机(Dell T5500,8核,12GB)上,DebugBreak调用会导致整台机器停止运行。时钟小部件停止滴答,鼠标停止移动,键盘停止响应。即使我们已检查它是否已配置为对话框,也不会弹出该对话框。我们需要强制关闭机器以进一步做任何事情。
是否有人知道可能导致此问题的任何类型的windbg或其他JIT调试选项?这个用户已经猜到他的机器可能就像它的远程调试设置一样,但这不是内核破坏。我们经常使用远程调试,但挂起的机器通常是调试器,而不是debugee。
答案 0 :(得分:2)
因此,在重新考虑并重新调查之后,很久以前开发人员已经启用了他的开发系统上的调试器,因此DebugBreak实际上是在停止内核。从他的机器:
C:\>bcdedit
Windows Boot Manager
--------------------
标识符{bootmgr}
设备分区= \ Device \ HarddiskVolume1
说明Windows启动管理器
locale en-US
继承{globalsettings}
默认{当前}
超时30
resumeobject {fdc7f9bc-32c9-11df-8189-b982443308cd}
displayorder {current}
toolsdisplayorder {memdiag}
Windows Boot Loader
-------------------
标识符{current}
设备分区= C:
path \ Windows \ system32 \ winload.exe
说明Windows 7
locale en-US
继承{bootloadersettings}
recoverysequence {fdc7f9c0-32c9-11df-8189-b982443308cd}
recoveryenabled是的
osdevice partition = C:
systemroot \ Windows
resumeobject {fdc7f9bc-32c9-11df-8189-b982443308cd}
nx OptIn
调试是
禁用使一切正常运行。谢谢你的时间。