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

Commit dec36238 authored by Christopher Ferris's avatar Christopher Ferris Committed by Gerrit Code Review
Browse files

Merge "Move from libbacktrace to libunwindstack."

parents 5a8cd452 dfb50b44
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -108,7 +108,6 @@ cc_defaults {
        // In particular, DO NOT add libutils nor anything "above" libui
        "libgraphicsenv",
        "libnativewindow",
        "libbacktrace",
        "libbase",
    ],
}
@@ -165,6 +164,7 @@ cc_library_shared {
        "libnativeloader_lazy",
        "libutils",
        "libSurfaceFlingerProp",
        "libunwindstack",
    ],
    static_libs: [
        "libEGL_getProcAddress",
+9 −6
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@

#pragma once

#include <backtrace/Backtrace.h>
#include <log/log.h>
#include <unwindstack/AndroidUnwinder.h>

#include <memory>

@@ -26,12 +26,15 @@ public:
    // Create a callstack with the current thread's stack trace.
    // Immediately dump it to logcat using the given logtag.
    static void log(const char* logtag) noexcept {
        std::unique_ptr<Backtrace> backtrace(
                Backtrace::Create(BACKTRACE_CURRENT_PROCESS, BACKTRACE_CURRENT_THREAD));
        if (backtrace->Unwind(2)) {
            for (size_t i = 0, c = backtrace->NumFrames(); i < c; i++) {
        unwindstack::AndroidLocalUnwinder unwinder;
        unwindstack::AndroidUnwinderData data;
        if (unwinder.Unwind(data)) {
            for (size_t i = 2, c = data.frames.size(); i < c; i++) {
                auto& frame = data.frames[i];
                // Trim the first two frames.
                frame.num -= 2;
                __android_log_print(ANDROID_LOG_DEBUG, logtag, "%s",
                                    backtrace->FormatFrameData(i).c_str());
                                    unwinder.FormatFrame(frame).c_str());
            }
        }
    }