一、在c/c++库中打印调用栈
C++代码架构经常特别复杂,可以使用android::CallStack将所在线程的调用栈打印出来
基本用法:
先引用头文件:
#inclucde<utils/CallStack.h>
#include<utils/Log.h>
然后在要打印的地方添加如下代码:
android::CallStack stack;
stack.update();
stack.dump(1); //输出到printf
stack.log(debug); //输出到logcat
添加之后,在logcat就可以看到对应log
二、在kernel中打印调用栈
在kernel代码中需要打印函数调用栈的地方添加代码
dump_stack();
或者使用
WARN_ON(1);
然后通过cat /proc/kmsg即可查看到对应的堆栈log
三、在java App中打印调用栈
这个最简单,直接在需要打印的地方增加语句
new Exception().printStackTrace();
在logcat中就可以看到对应的调用栈了。
附上一张经典Android 系统架构图: