Android打印堆栈方法(java和c)

2 阅读1分钟

- Java

Log.d("Tag", "Message", new Throwable());

- C语言

#include <utils/CallStack.h>
CallStack::logStack("Tag", CallStack::getCurrent().get(), ANDROID_LOG_DEBUG);
//方法带缺省值,可以直接传入第一个参数tag即可,默认为debug log
CallStack::logStack("Tag");
//system/core/include/utils/CallStack.h
static void ALWAYS_INLINE logStack(const char* logtag, CallStack* stack = getCurrent().get(),
                                   android_LogPriority priority = ANDROID_LOG_DEBUG) {
    if (reinterpret_cast<uintptr_t>(logStackInternal) != 0 && stack != nullptr) {
        logStackInternal(logtag, stack, priority);
    } else {
        ALOG(LOG_WARN, logtag, "CallStack::logStackInternal not linked");
    }
}