Android 打印堆栈的几种方法

下图转自:https://blog.51cto.com/zhaoyanjun/3814556

 

 

 

android.os.Debug
Debug类里面有几个getCaller方法可以获得当前的StackTrace,在需要调试的方法法中直接调用即可

public void dumpStackTrace(){
  android.os.Debug.getCallers(9);
}

Log.d(TAG,"log "+Debug.getCallers(9));

 

Android 打印堆栈的几种方法

public void ThrowException() {
    Thread.dumpStack();


    // 调试打印堆栈而不退出
    Log.d(TAG, Log.getStackTraceString(new Throwable()));

    // 创建异常打印堆栈
    Exception e = new Exception("this is a log");
    e.printStackTrace();

    // 获取当前线程的堆栈
    for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
        Log.i(TAG, i.toString());
    }

    RuntimeException re = new RuntimeException();
    re.fillInStackTrace();
    Log.i(TAG, "stackTrace", re);

    // 主动抛出异常调试
    try {
        Log.i(TAG,
                "--------------------------------NullPointerException-----------1");
        throw new NullPointerException();
    } catch (NullPointerException e1) {
        // TODO: handle exception
        Log.i(TAG, "--------------------------------NullPointerException");
        Log.e(TAG, Log.getStackTraceString(e1));
        // e1.printStackTrace();
    }
    Log.i(TAG,
            "--------------------------------NullPointerException-----------end");
}



posted @ 2022-07-11 16:03  行走的思想  阅读(2524)  评论(0编辑  收藏  举报