1.Java层打印调用栈方法
RuntimeException here = new RuntimeestException("exception");
here.fillInStackTrace();
Log.w(TAG,"XXXXXX: " + this, here);
A. Thread.dumpStack()
B. Log.d(String tag,String msg, Throwable tr)
C. new Throwable().printStackTrace()
2. cpp层打出栈的backtrace
#include <utils/CallStack.h>
CallStack stack;
stack.update();
stack.log("XXXXXX",ANDROID_LOG_ERROR);
其中“XXXXXX”指的是TAG
3. c函数打调用栈
参考CallStack.cpp的实现,通过调用_Unwind_Backtrace完成
4. kernel打调用栈
dump_stack()

本文介绍如何在不同层级打印调用栈信息,包括Java层使用Log与RuntimeException结合、C/C++层利用CallStack.h库及_Unwind_Backtrace函数、内核层使用dump_stack()函数的具体方法。
6038

被折叠的 条评论
为什么被折叠?



