[Add] Let's catch SIGTRAP too.
This commit is contained in:
parent
58ee934426
commit
8716d14016
@ -615,22 +615,31 @@ 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 FPE_INTDIV: return "SIGFPE (integer divide by zero)";
|
case SI_USER: return "SIGFPE (raised by program)";
|
||||||
case FPE_INTOVF: return "SIGFPE (integer overflow)";
|
case FPE_INTDIV: return "SIGFPE (integer divide by zero)";
|
||||||
case FPE_FLTDIV: return "SIGFPE (floating-point divide by zero)";
|
case FPE_INTOVF: return "SIGFPE (integer overflow)";
|
||||||
case FPE_FLTOVF: return "SIGFPE (floating-point overflow)";
|
case FPE_FLTDIV: return "SIGFPE (floating-point divide by zero)";
|
||||||
case FPE_FLTUND: return "SIGFPE (floating-point underflow)";
|
case FPE_FLTOVF: return "SIGFPE (floating-point overflow)";
|
||||||
case FPE_FLTRES: return "SIGFPE (floating-point inexact result)";
|
case FPE_FLTUND: return "SIGFPE (floating-point underflow)";
|
||||||
case FPE_FLTINV: return "SIGFPE (floating-point invalid operation)";
|
case FPE_FLTRES: return "SIGFPE (floating-point inexact result)";
|
||||||
case FPE_FLTSUB: return "SIGFPE (subscript out of range)";
|
case FPE_FLTINV: return "SIGFPE (floating-point invalid operation)";
|
||||||
default: return "SIGFPE";
|
case FPE_FLTSUB: return "SIGFPE (subscript out of range)";
|
||||||
|
default: return "SIGFPE";
|
||||||
}
|
}
|
||||||
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) */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user