如何显示调用堆栈

来源:互联网 发布:程序员必读书籍 知乎 编辑:程序博客网 时间:2024/06/17 20:39

最近在调试bug时候,由于做的是sdk,并不能确定外部是如何调用sdk的函数,所以需要知道调用堆栈。打log肯定是可行的。
在阅读Log.java后发现可以在函数中放入Throwable作为参数,这样日志就会输出调用栈。
具体如下:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Exception e = new Exception();        Log.w("naruto", "naruto", e);        findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "Naruto", Toast.LENGTH_SHORT).show();            }        });    }

日志提供了这种方式,非常简单的就打出了调用栈。只是之前一直不知道。

Log.javapublic static int d(String tag, String msg)public static int d(String tag, String msg, Throwable tr)public static int e(String tag, String msg)public static int e(String tag, String msg, Throwable tr)public static int i(String tag, String msg)public static int i(String tag, String msg, Throwable tr)public static int v(String tag, String msg)public static int v(String tag, String msg, Throwable tr)public static int w(String tag, String msg)public static int w(String tag, String msg, Throwable tr)public static int w(String tag, Throwable tr)

以上这些函数中除了可以打普通的log,还可以打印调用栈。推荐使用w的最后一个,简单。

0 0
原创粉丝点击