summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-05-17 00:50:00 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-05-17 00:50:00 +0000
commit1bcfe061aaeabaa6a2d764adad3cb35a4e6c30f2 (patch)
tree2cb2004154a637183629c5c1f9a1ef9dc8a29fd6 /debuggerd
parenta7e8f8615d357357712660d1ed3863c274c2c7bb (diff)
parenta7952c5c5911f612fd1f99259f2e06dc9d1b319d (diff)
downloadsystem_core-1bcfe061aaeabaa6a2d764adad3cb35a4e6c30f2.zip
system_core-1bcfe061aaeabaa6a2d764adad3cb35a4e6c30f2.tar.gz
system_core-1bcfe061aaeabaa6a2d764adad3cb35a4e6c30f2.tar.bz2
am a7952c5c: am 5e742107: am c4afc192: Merge "Add SIGTRAP support to crasher and debuggerd."
* commit 'a7952c5c5911f612fd1f99259f2e06dc9d1b319d': Add SIGTRAP support to crasher and debuggerd.
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/crasher.c4
-rw-r--r--debuggerd/debuggerd.cpp5
2 files changed, 7 insertions, 2 deletions
diff --git a/debuggerd/crasher.c b/debuggerd/crasher.c
index 01ce0be..4721da9 100644
--- a/debuggerd/crasher.c
+++ b/debuggerd/crasher.c
@@ -144,6 +144,9 @@ static int do_action(const char* arg)
close(pipe_fds[0]);
write(pipe_fds[1], "oops", 4);
return EXIT_SUCCESS;
+ } else if (!strcmp(arg, "SIGTRAP")) {
+ raise(SIGTRAP);
+ return EXIT_SUCCESS;
} else if (!strcmp(arg, "heap-usage")) {
abuse_heap();
}
@@ -164,6 +167,7 @@ static int do_action(const char* arg)
fprintf(stderr, " LOG_ALWAYS_FATAL_IF call LOG_ALWAYS_FATAL\n");
fprintf(stderr, " SIGPIPE cause a SIGPIPE\n");
fprintf(stderr, " SIGSEGV cause a SIGSEGV (synonym: crash)\n");
+ fprintf(stderr, " SIGTRAP cause a SIGTRAP\n");
fprintf(stderr, "prefix any of the above with 'thread-' to not run\n");
fprintf(stderr, "on the process' main thread.\n");
return EXIT_SUCCESS;
diff --git a/debuggerd/debuggerd.cpp b/debuggerd/debuggerd.cpp
index 76bd7a3..94232cf 100644
--- a/debuggerd/debuggerd.cpp
+++ b/debuggerd/debuggerd.cpp
@@ -322,15 +322,16 @@ static void handle_request(int fd) {
}
break;
- case SIGILL:
case SIGABRT:
case SIGBUS:
case SIGFPE:
- case SIGSEGV:
+ case SIGILL:
case SIGPIPE:
+ case SIGSEGV:
#ifdef SIGSTKFLT
case SIGSTKFLT:
#endif
+ case SIGTRAP:
XLOG("stopped -- fatal signal\n");
// Send a SIGSTOP to the process to make all of
// the non-signaled threads stop moving. Without