Lines Matching full:backtrace
43 #include <backtrace/Backtrace.h>
44 #include <backtrace/BacktraceMap.h>
48 #include "backtrace.h"
239 Backtrace* backtrace, log_t* log, uintptr_t* sp, size_t words, int label) {
242 size_t bytes_read = backtrace->Read(*sp, reinterpret_cast<uint8_t*>(&stack_data[0]), sizeof(word_t) * words);
256 backtrace->FillInMap(stack_data[i], &map);
260 std::string func_name(backtrace->GetFunctionName(stack_data[i], &offset));
275 static void dump_stack(Backtrace* backtrace, log_t* log) {
277 for (size_t i = 0; i < backtrace->NumFrames(); i++) {
278 const backtrace_frame_data_t* frame = backtrace->GetFrame(i);
292 word_t sp = backtrace->GetFrame(first)->sp - STACK_WORDS * sizeof(word_t);
293 dump_stack_segment(backtrace, log, &sp, STACK_WORDS, -1);
298 const backtrace_frame_data_t* frame = backtrace->GetFrame(i);
304 dump_stack_segment(backtrace, log, &sp, STACK_WORDS, i);
315 dump_stack_segment(backtrace, log, &sp, words, i);
332 static void dump_abort_message(Backtrace* backtrace, log_t* log, uintptr_t address) {
345 if (!backtrace->ReadWord(address, &data)) {
359 static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, pid_t tid) {
419 if ((it->flags & PROT_READ) && elf_get_build_id(backtrace, it->start, &build_id)) {
437 static void dump_backtrace_and_stack(Backtrace* backtrace, log_t* log) {
438 if (backtrace->NumFrames()) {
439 _LOG(log, logtype::BACKTRACE, "\nbacktrace:\n");
440 dump_backtrace_to_log(backtrace, log, " ");
443 dump_stack(backtrace, log);
459 std::unique_ptr<Backtrace> backtrace(Backtrace::Create(pid, tid, map));
461 dump_abort_message(backtrace.get(), log, abort_msg_address);
464 if (backtrace->Unwind(0)) {
465 dump_backtrace_and_stack(backtrace.get(), log);
471 dump_memory_and_code(log, backtrace.get());
473 dump_all_maps(backtrace.get(), map, log, tid);