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() { }