C++文件的打印调用堆栈的方法:
1. #include<utils/CallStack.h>
{
usingnamespace android;
CallStackstack;
stack.update();
stack.dump();
}
Java文件打印调用堆栈的方法:
1. 在指定的函数内打印相关java调用
Log.d(TAG,Log.getStackTraceString(newThrowable()));
2. 普通JAVA进程堆栈
ActivityManagerService.dumpStackTraces
保存在系统设置dalvik.vm.stack-trace-file指定的文件data/anr/traces.txt中。可以包含多个进程堆栈信息。
3. 内核进程堆栈
dumpKernelStackTraces,该函数为私有函数,不可调用。
代码在frameworks/base/services/java/com/android/server/Watchdog.java
保存在系统设置dalvik.vm.stack-trace-file指定的文件data/anr/traces.txt中。
Kernel内核打印堆栈
dump_stack();
C加内核打印堆栈(项目自由)
frameworks/native /libs/utils/wangdebug.cpp
frameworks/native/include/utils/wangdebug.h
frameworks/base/libs/utils/Android.mk
+add wangdebug.cpp \
+libutils
DumpCurrentStack();