Skip to content

Commit

Permalink
Print out the signal code along with signal number and address.
Browse files Browse the repository at this point in the history
Change-Id: I60a8b13f706714e80b11bc517101715dfe1c73c1
  • Loading branch information
Carl Shapiro committed Oct 9, 2010
1 parent 6be460d commit 83c6b05
Showing 1 changed file with 48 additions and 2 deletions.
50 changes: 48 additions & 2 deletions debuggerd/debuggerd.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,50 @@ const char *get_signame(int sig)
}
}

const char *get_sigcode(int signo, int code)
{
switch (signo) {
case SIGILL:
switch (code) {
case ILL_ILLOPC: return "ILL_ILLOPC";
case ILL_ILLOPN: return "ILL_ILLOPN";
case ILL_ILLADR: return "ILL_ILLADR";
case ILL_ILLTRP: return "ILL_ILLTRP";
case ILL_PRVOPC: return "ILL_PRVOPC";
case ILL_PRVREG: return "ILL_PRVREG";
case ILL_COPROC: return "ILL_COPROC";
case ILL_BADSTK: return "ILL_BADSTK";
}
break;
case SIGBUS:
switch (code) {
case BUS_ADRALN: return "BUS_ADRALN";
case BUS_ADRERR: return "BUS_ADRERR";
case BUS_OBJERR: return "BUS_OBJERR";
}
break;
case SIGFPE:
switch (code) {
case FPE_INTDIV: return "FPE_INTDIV";
case FPE_INTOVF: return "FPE_INTOVF";
case FPE_FLTDIV: return "FPE_FLTDIV";
case FPE_FLTOVF: return "FPE_FLTOVF";
case FPE_FLTUND: return "FPE_FLTUND";
case FPE_FLTRES: return "FPE_FLTRES";
case FPE_FLTINV: return "FPE_FLTINV";
case FPE_FLTSUB: return "FPE_FLTSUB";
}
break;
case SIGSEGV:
switch (code) {
case SEGV_MAPERR: return "SEGV_MAPERR";
case SEGV_ACCERR: return "SEGV_ACCERR";
}
break;
}
return "?";
}

void dump_fault_addr(int tfd, int pid, int sig)
{
siginfo_t si;
Expand All @@ -326,8 +370,10 @@ void dump_fault_addr(int tfd, int pid, int sig)
if(ptrace(PTRACE_GETSIGINFO, pid, 0, &si)){
_LOG(tfd, false, "cannot get siginfo: %s\n", strerror(errno));
} else {
_LOG(tfd, false, "signal %d (%s), fault addr %08x\n",
sig, get_signame(sig), si.si_addr);
_LOG(tfd, false, "signal %d (%s), code %d (%s), fault addr %08x\n",
sig, get_signame(sig),
si.si_code, get_sigcode(sig, si.si_code),
si.si_addr);
}
}

Expand Down

0 comments on commit 83c6b05

Please sign in to comment.