diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c index ba62e6d4c4c485ccd21bf7566147058c8bcbb919..225658f5e2afaf79c698e6576a02d73a94c20e5f 100644 --- a/test/core/util/test_config.c +++ b/test/core/util/test_config.c @@ -66,10 +66,20 @@ LONG crash_handler(struct _EXCEPTION_POINTERS* ex_info) { return EXCEPTION_EXECUTE_HANDLER; } +void abort_handler(int sig) { + gpr_log(GPR_DEBUG, "Abort handler called."); + if (IsDebuggerPresent()) { + __debugbreak(); + } else { + _exit(1); + } +} + static void install_crash_handler() { SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER) crash_handler); _set_abort_behavior(0, _WRITE_ABORT_MSG); _set_abort_behavior(0, _CALL_REPORTFAULT); + signal(SIGABRT, abort_handler); } #else static void install_crash_handler() { }