andorid 打印调用栈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35427437/article/details/89401167

Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。

验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么

在android中如果找不到方法调用位置可以使用   打印调用栈

public void  ThrowException() {
        // 调试打印堆栈而不退出
        Log.d(TAG, Log.getStackTraceString(newThrowable()));
        // 创建异常打印堆栈
        Exception e = new Exception("this is a log");
        e.printStackTrace();
        // 获取当前线程的堆栈
        for(StackTraceElement i : Thread.currentThread().getStackTrace()) {
           Log.i(TAG, i.toString());
        }
        RuntimeException re = newRuntimeException();
        re.fillInStackTrace();
        Log.i(TAG, "stackTrace", re);
        // 主动抛出异常调试
        try
        {
            Log.i(TAG, "--------------------NullPointerException-------1");
            thrownew  NullPointerException();
        } catch(NullPointerException e1) {
            // TODO: handle exception
            Log.i(TAG, "--------------------------------NullPointerException");
            Log.e(TAG, Log.getStackTraceString(e1));
            // e1.printStackTrace();
        }
        Log.i(TAG, "--------------------------------NullPointerException-----------end");

    }

1、Log.d(TAG, Log.getStackTraceString(new Throwable()));

Exception e = new Exception("this is a log");
e.printStackTrace();

猜你喜欢

转载自blog.csdn.net/qq_35427437/article/details/89401167
今日推荐