Android 堆栈打印
Framework/Java 堆栈
方式 一
Log.d(TAG, Log.getStackTraceString(new Throwable()));
方式 二
Exception e = new Exception("this is a log");
e.printStackTrace();
方式 三
RuntimeException e = new RuntimeException();
e.fillInStackTrace();
Log.d(TAG, "stackTrace", e);
方式 四
// 获取当前线程的堆栈
for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
Log.d(TAG, i.toString());
}
Native/C++ 堆栈
1.增加库文件(二选一):
Android.mk
LOCAL_SHARED_LIBRARIES += libutilscallstack
Android.bp
shared_libs: [
"libutilscallstack",
],
2.调用文件
头文件:
#include <utils/CallStack.h>
代码:
android::CallStack callstack;
callstack.update();
callstack.log(LOG_TAG, ANDROID_LOG_DEBUG, "this is c++ stack");
在C++层LOG打印
#define LOG_TAG “AlarmManagerService”
+ #undef NDEBUG
+ #define LOG_NDEBUG 0
#include <utils/Log.h>
//使用打印
ALOGD(“this is a log”);
Kernel/C 堆栈
dump_stack();