我们正在为我们的Visual Studio解决方案设置Appveyor,该解决方案生成一个C++库。我们的一些测试[愚蠢]模糊C++对象,以确保它们不会做出意想不到的事情。在调试版本下,它会导致触发一个断言(并且在发布版本中它只是抛出)。如何安装DebugBreak处理程序?
我们使用自定义断言来避免正在调试的程序崩溃的Posix行为。如下所示。看来Appveyor或者如果断言火灾操作系统杀死程序和调试器不附:
我们要安装一个DebugBreak
处理程序,如果调试不存在。这应该确认其操作系统正在进行杀戮。理想情况下,处理程序将从Windows XP开始工作,VS2002及更高版本(这些是我们支持的Windows组合)。
我们如何在Windows平台上安装DebugBreak
处理程序?
# define MYLIB_ASSERT(exp) { \
if (!(exp)) { \
std::ostringstream oss; \
oss << "Assertion failed: " << (char*)(__FILE__) << "(" \
<< (int)(__LINE__) << "): " << (char*)(__FUNCTION__) \
<< std::endl; \
std::cerr << oss.str(); \
__debugbreak(); \
} \
}
我们真的不能告诉谁负责的,因为该行为不是在MSDN在DebugBreak and __debugbreak或C/C++ Assertions记录。
'DebugBreak处理程序' - 存在一般异常处理程序,您必须安装它。没有特殊的'DebugBreak处理程序' – RbMm