我正在用C++编写一个Win32服务。我有一个自定义的Assert宏,它调用DebugBreak() (以及其他东西)。当我在Vista下运行我的服务时,服务在到达DebugBreak()调用(一个int3汇编操作码)时崩溃,显示vista崩溃对话框。错误代码是80000003 (硬编码断点)。
通常,当没有附加调试器时,我希望我的服务在DebugBreak()调用上运行,而不执行任何操作。为什么它会崩溃?是否有可能更改设置以使其继续运行?
发布于 2009-01-23 10:49:59
通常,当没有附加调试器时,我希望我的服务在DebugBreak()调用上运行,而不执行任何操作。为什么它会崩溃?
MSDN Help for the DebugBreak function表示:“如果进程未被调试,函数将使用标准异常处理程序的搜索逻辑。在大多数情况下,这会导致调用进程因未处理的断点异常而终止。”
是否有可能更改设置以使其继续运行?
您可以尝试添加结构化异常处理程序。
或者,在调用DebugBreak之前检查一些运行时标志。
https://stackoverflow.com/questions/472476
复制相似问题