…… // flag variable for debuging volatile bool g_enable_breakon_sigint = false; // function for gdb breakpoint void gdb_breakon_sigint() { printf("A chance to break on SIGINT\n"); } …… int main(int argc, char **argv) { …… // Process signal. switch (signal) { case SIGTERM: printf("SIGTERM arrived. Exit now.\n"); return 0; case SIGINT: // do not exit if flag is true. if (g_enable_breakon_sigint) { gdb_breakon_sigint(); break; } printf("SIGINT arrived. Exit now.\n"); return 0; default: printf("Unhandled signal [%d]\n", signal); break; } …… }