文章正文
Android 堆栈打印方法总结
framework层(java层)
try { Log.i(TAG,"--------------NullPointerException-------begin"); throw new NullPointerException(); } catch (NullPointerException e1) { // TODO: handle exception Log.i(TAG, "-------------NullPointerException"); Log.e(TAG, Log.getStackTraceString(e1)); } Log.i(TAG,"----------------NullPointerException---------end");
Native层
Android在新版(至少5.0, 6.0)里加入了CallStack类,这个类可以打出当前的backtrace。用法很简单:
* 前面确保包含头文件#include 《utils/CallStack.h》//这个博客模板不支持头文件的尖括号
* Android.mk的库依赖列表(LOCAL_SHARED_LIBRARIES)里包含libutils,一般都已经包含了。
* 然后在要打印堆栈处加入
android::CallStack cs(“zachary”);
“haha”是在logcat输出的TAG,这里可以自己定义。如果上下文已经在android namespace里,”android::”前缀就不必加了。
Native C++的输出log可以在logcat里看到。
kernel层
在内核中打印堆栈只要加入下面的语句即可:
dump_stack()
如果有问题,欢迎留言
Dec. 31, 2017, 4:16 p.m. 作者:zachary 分类:Android 阅读(2285) 评论(2)
评论: