Android下打印调用栈

来源:互联网 发布:unity3d美工 编辑:程序博客网 时间:2024/05/20 15:11

在优化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.javaprivate 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来查看打印出的调用栈了

原创粉丝点击