Android下打印调用栈
在优化Android启动过程时,同事给出一种打印出调用栈的函数。分享一下
- java.util.Map<Thread, StackTraceElement[]> ts = Thread.getAllStackTraces();
- StackTraceElement[] ste = ts.get(Thread.currentThread());
- for (StackTraceElement s : ste) {
- android.util.Slog.e("SS ", s.toString()); //这个是android自带的,如果没有,用其他的打印函数一样
- }
为了打印出在android启动时,Zygote启动的所有java应用。在
- //frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
- private final void startProcessLocked(ProcessRecord app,
- String hostingType, String hostingNameStr) {
- //debug add
- java.util.Map<Thread, StackTraceElement[]> ts = Thread.getAllStackTraces();
- StackTraceElement[] ste = ts.get(Thread.currentThread());
- for (StackTraceElement s : ste) {
- android.util.Slog.e("SS ", s.toString());
- }
- }
就可以在终端中使用命令
logcat来查看打印出的调用栈了