我正在用C++编写Win32服务.我有一个自定义Assert宏调用DebugBreak()(以及其他东西).当我在Vista下运行我的服务时,服务在到达DebugBreak()调用(int 3汇编程序操作码)时崩溃,显示vista崩溃对话框.错误代码是80000003(硬编码断点).
通常我希望我的服务运行在DebugBreak()调用上,而不会在没有附加调试器的情况下执行任何操作.为什么会崩溃?是否有可能进行更改以使其继续运行?
它崩溃了,因为它是一个断点异常.为了安全起见,您需要检查是否附加了调试器:
if(:: IsDebuggerPresent()):: DebugBreak();
或者使用try/except并为过滤器中的断点异常返回1(带有空处理程序的exceptionexecutehandler).