我們正在爲我們的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