`

打印调用堆栈

阅读更多
平常我们遇到不清楚代码逻辑的,可以通过打印调用堆栈来理清楚,如下为各层打印堆栈的方法:
1. Java打印调用堆栈
Exception e = new Exception("test");
e.printStackTrace();
或者
Log.d("test",Log.getStackTraceString(new Throwable()));

2. JNI打印调用堆栈
class  throwable_class = env->FindClass("java/lang/Throwable");
jmethodID  throwable_init = env->GetMethodID(throwable_class, "<init>", "(Ljava/lang/String;)V");
jobject throwable_obj = env->NewObject(throwable_class, throwable_init, env->NewStringUTF("setDisplayOrientation"));
    jmethodID throwable_mid = env->GetMethodID(throwable_class, "printStackTrace", "()V");
env->CallVoidMethod(throwable_obj, throwable_mid);
3.
C++打印调用堆栈
#include <utils/CallStack.h>
… …
CallStack stack(LOG_TAG);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics