转自 :
开发的windows版本服务器Program中,难免发生Crash,而windows的异常提示窗口,让看门狗进程无法作用,因此需要关闭windows的提示。
key code :
#define CRASH_SILENTLY 1 #if defined(_MSC_VER) && CRASH_SILENTLY #include <excpt.h> #define Q_TRY_BEGIN __try { #define Q_TRY_END } //EXCEPTION_EXECUTE_HANDLER #define Q_EXCEPT __except(EXCEPTION_EXECUTE_HANDLER) { \ printf("Shit happens!\n");fflush(NULL); \ return 1;} #else #define Q_TRY_BEGIN #define Q_TRY_END #define Q_EXCEPT #endif int main(int, char**) { Q_TRY_BEGIN int *a = 0; *a = 0; Q_TRY_END Q_EXCEPT printf("Exiting 0...\n"); fflush(NULL); return 0; }
如果把CRASH_SILENTLY定义为0,那么在程序崩溃就会弹出对话框,设为一就只打印Shit happens!然后就返回。
vs2008 去掉编译选项 去掉/EHsc的方法是 : Properties->C/C++->Code Generation->Enable C++ Exceptions 关闭即可。