Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 504f982f authored by Jeff Brown's avatar Jeff Brown
Browse files

Use libcorkscrew to format the stack trace.

Change-Id: I3a5439ada76bc77c2dd491eaed2272e16a811cc7
parent 9c9793dd
Loading
Loading
Loading
Loading
+10 −22
Original line number Diff line number Diff line
@@ -101,17 +101,10 @@ void CallStack::dump(const char* prefix) const {

    get_backtrace_symbols(mStack, mCount, symbols);
    for (size_t i = 0; i < mCount; i++) {
        const backtrace_frame_t& frame = mStack[i];
        const backtrace_symbol_t& symbol = symbols[i];
        const char* mapName = symbol.map_name ? symbol.map_name : "<unknown>";
        const char* symbolName = symbol.demangled_name ? symbol.demangled_name : symbol.name;
        if (symbolName) {
            LOGD("%s#%02d  pc %08x  %s (%s)\n", prefix,
                    int(i), uint32_t(symbol.relative_pc), mapName, symbolName);
        } else {
            LOGD("%s#%02d  pc %08x  %s\n", prefix,
                    int(i), uint32_t(symbol.relative_pc), mapName);
        }
        char line[MAX_BACKTRACE_LINE_LENGTH];
        format_backtrace_line(i, &mStack[i], &symbols[i],
                line, MAX_BACKTRACE_LINE_LENGTH);
        LOGD("%s%s", prefix, line);
    }
    free_backtrace_symbols(symbols, mCount);
}
@@ -122,17 +115,12 @@ String8 CallStack::toString(const char* prefix) const {

    get_backtrace_symbols(mStack, mCount, symbols);
    for (size_t i = 0; i < mCount; i++) {
        const backtrace_frame_t& frame = mStack[i];
        const backtrace_symbol_t& symbol = symbols[i];
        const char* mapName = symbol.map_name ? symbol.map_name : "<unknown>";
        const char* symbolName = symbol.demangled_name ? symbol.demangled_name : symbol.name;
        if (symbolName) {
            str.appendFormat("%s#%02d  pc %08x  %s (%s)\n", prefix,
                    int(i), uint32_t(symbol.relative_pc), mapName, symbolName);
        } else {
            str.appendFormat("%s#%02d  pc %08x  %s\n", prefix,
                    int(i), uint32_t(symbol.relative_pc), mapName);
        }
        char line[MAX_BACKTRACE_LINE_LENGTH];
        format_backtrace_line(i, &mStack[i], &symbols[i],
                line, MAX_BACKTRACE_LINE_LENGTH);
        str.append(prefix);
        str.append(line);
        str.append("\n");
    }
    free_backtrace_symbols(symbols, mCount);
    return str;