[Add] Let's catch SIGTRAP too.

This commit is contained in:
Allanis 2013-11-26 19:32:27 +00:00
parent 58ee934426
commit 8716d14016

View File

@ -615,6 +615,7 @@ static void print_SDLversion(void) {
static const char* debug_sigCodeToStr(int sig, int sig_code) { static const char* debug_sigCodeToStr(int sig, int sig_code) {
if(sig == SIGFPE) if(sig == SIGFPE)
switch(sig_code) { switch(sig_code) {
case SI_USER: return "SIGFPE (raised by program)";
case FPE_INTDIV: return "SIGFPE (integer divide by zero)"; case FPE_INTDIV: return "SIGFPE (integer divide by zero)";
case FPE_INTOVF: return "SIGFPE (integer overflow)"; case FPE_INTOVF: return "SIGFPE (integer overflow)";
case FPE_FLTDIV: return "SIGFPE (floating-point divide by zero)"; case FPE_FLTDIV: return "SIGFPE (floating-point divide by zero)";
@ -627,10 +628,18 @@ static const char* debug_sigCodeToStr(int sig, int sig_code) {
} }
else if(sig == SIGSEGV) else if(sig == SIGSEGV)
switch(sig_code) { switch(sig_code) {
case SI_USER: return "SIGSEGV (raised by program)";
case SEGV_MAPERR: return "SIGEGV (address not mapped to object)"; case SEGV_MAPERR: return "SIGEGV (address not mapped to object)";
case SEGV_ACCERR: return "SIGEGV (invalid permissions for mapped object)"; case SEGV_ACCERR: return "SIGEGV (invalid permissions for mapped object)";
default: return "SIGSEGV"; default: return "SIGSEGV";
} }
else if(sig == SIGTRAP)
switch(sig_code) {
case SI_USER: return "SIGTRAP (raised by program)";
case TRAP_BRKPT: return "SIGTRAP (process breakpoint)";
case TRAP_TRACE: return "SIGTRAP (process trace trap)";
default: return "SIGTRAP";
}
/* No suitable code found. */ /* No suitable code found. */
return strsignal(sig); return strsignal(sig);
} }
@ -681,6 +690,9 @@ static void debug_sigInit(void) {
sigaction(SIGFPE, &sa, &so); sigaction(SIGFPE, &sa, &so);
if(so.sa_handler == SIG_IGN) if(so.sa_handler == SIG_IGN)
DEBUG("Unable to set up SIGFPE signal handler."); DEBUG("Unable to set up SIGFPE signal handler.");
sigaction(SIGTRAP, &sa, &so);
if(so.sa_handler == SIG_IGN)
DEBUG("Unable to get set up SIGTRAP signal handler.");
#endif /* #if defined(LINUX) && !defined(NODEBUG) */ #endif /* #if defined(LINUX) && !defined(NODEBUG) */
} }