1、Franmework中c文件打印堆栈的方法
../boot/frameworks/native/libs/utils/CallStack.cpp的dump函数中的ALOGD打印改为ALOGE,并重编libutils.so
打印堆栈的文件里:
#include <utils/CallStack.h>
CallStack stack;
stack.update();
stack.dump();
2、Kernel中打印堆栈的方法
WARN_ON_ONCE(TRUE);
该宏定义在kernel\include\asm-generic\Bug.h 文件中
3、java文件打印堆栈
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable())); 获取调用栈信息
4、间接通过/system/bin/debuggerd来打印堆栈
在adb shell下面执行kill -3 <pid>会促发debugger将该pid进程打印到/data/anr/traces.txt文件中
5、直接用debuggerd来进行堆栈打印
debuggerd –b <pid>会促发debuggerd直接在控制台打印该dumpstack