在​​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();