在需要打印调用栈的方法中调用 getStackTrace() 方法,该方法以字符串的形式返回调用栈。
/**
* 打印函数的调用栈
*
* @return 调用栈
*/
public String getStackTrace() {
StringBuilder sb = new StringBuilder("");
Exception e = new Exception();
StackTraceElement[] trace = e.getStackTrace();
for (int i = 0; i < trace.length; i++) {
sb.append(trace[i] + "\n");
}
return sb.toString();
}做一个简单的测试,在点击事件中打印调用栈,测试结果如下:
com.yang.testdemo.activity.MainActivity.getStackTrace(MainActivity.java:33)
com.yang.testdemo.activity.MainActivity.onClick(MainActivity.java:28)
com.yang.testdemo.activity.MainActivity$$ViewBinder$1.doClick(MainActivity$$ViewBinder.java:17)
butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
android.view.View.performClick(View.java:4438)
android.view.View$PerformClick.run(View.java:18439)
android.os.Handler.handleCallback(Handler.java:733)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:136)
android.app.ActivityThread.main(ActivityThread.java:5095)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
dalvik.system.NativeStart.main(Native Method)