diff options
Diffstat (limited to 'debuggerd')
-rw-r--r-- | debuggerd/backtrace.cpp | 6 | ||||
-rw-r--r-- | debuggerd/tombstone.cpp | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/debuggerd/backtrace.cpp b/debuggerd/backtrace.cpp index c2a1dbc..79ee4e5 100644 --- a/debuggerd/backtrace.cpp +++ b/debuggerd/backtrace.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define LOG_TAG "DEBUG" + #include <stddef.h> #include <stdlib.h> #include <string.h> @@ -27,6 +29,8 @@ #include <sys/ptrace.h> #include <backtrace/Backtrace.h> + +#include <log/log.h> #include <UniquePtr.h> #include "backtrace.h" @@ -95,6 +99,8 @@ static void dump_thread( UniquePtr<Backtrace> backtrace(Backtrace::Create(tid, BACKTRACE_CURRENT_THREAD)); if (backtrace->Unwind(0)) { dump_backtrace_to_log(backtrace.get(), log, " "); + } else { + ALOGE("Unwind failed: tid = %d", tid); } if (!attached && ptrace(PTRACE_DETACH, tid, 0, 0) != 0) { diff --git a/debuggerd/tombstone.cpp b/debuggerd/tombstone.cpp index b7e6b17..4c804ee 100644 --- a/debuggerd/tombstone.cpp +++ b/debuggerd/tombstone.cpp @@ -448,6 +448,8 @@ static bool dump_sibling_thread_report( UniquePtr<Backtrace> backtrace(Backtrace::Create(pid, new_tid, map)); if (backtrace->Unwind(0)) { dump_backtrace_and_stack(backtrace.get(), log); + } else { + ALOGE("Unwind of sibling failed: pid = %d, tid = %d", pid, new_tid); } log->current_tid = log->crashed_tid; @@ -650,9 +652,13 @@ static bool dump_crash(log_t* log, pid_t pid, pid_t tid, int signal, int si_code dump_registers(log, tid); if (backtrace->Unwind(0)) { dump_backtrace_and_stack(backtrace.get(), log); + } else { + ALOGE("Unwind failed: pid = %d, tid = %d", pid, tid); } dump_memory_and_code(log, tid); - dump_all_maps(backtrace.get(), map.get(), log, tid); + if (map.get() != nullptr) { + dump_all_maps(backtrace.get(), map.get(), log, tid); + } if (want_logs) { dump_logs(log, pid, 5); |