当前位置:  开发笔记 > 编程语言 > 正文

为什么我的服务在Vista上的DebugBreak()崩溃?

如何解决《为什么我的服务在Vista上的DebugBreak()崩溃?》经验,为你挑选了1个好方法。

我正在用C++编写Win32服务.我有一个自定义Assert宏调用DebugBreak()(以及其他东西).当我在Vista下运行我的服务时,服务在到达DebugBreak()调用(int 3汇编程序操作码)时崩溃,显示vista崩溃对话框.错误代码是80000003(硬编码断点).

通常我希望我的服务运行在DebugBreak()调用上,而不会在没有附加调试器的情况下执行任何操作.为什么会崩溃?是否有可能进行更改以使其继续运行?



1> deemok..:

它崩溃了,因为它是一个断点异常.为了安全起见,您需要检查是否附加了调试器:

if(:: IsDebuggerPresent()):: DebugBreak();

或者使用try/except并为过滤器中的断点异常返回1(带有空处理程序的exceptionexecutehandler).

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有