//String str = Log.getStackTraceString(new Throwable());
//Log.d("yunshouhu", str);
jclass jcl_Log = (*env)->FindClass(env, "android/util/Log");
jmethodID mid_getStackTraceString = (*env)->GetStaticMethodID(env, jcl_Log, "getStackTraceString", "(Ljava/lang/Throwable;)Ljava/lang/String;");
jclass cls_Throwable = (*env)->FindClass( env, "java/lang/Throwable");
jmethodID fn_Throwable = (*env)->GetMethodID(env, cls_Throwable, "<init>", "()V" );
jobject obj_Throwable = (*env)->NewObject(env, cls_Throwable, fn_Throwable);
jstring trace = (*env)->CallStaticObjectMethod(env, jcl_Log, mid_getStackTraceString,obj_Throwable);
const char *trace_str = (*env)->GetStringUTFChars(env, trace, 0);
LOGI("%s",trace_str);
(*env)->DeleteLocalRef(env, jcl_Log);
(*env)->DeleteLocalRef(env, cls_Throwable);
(*env)->DeleteLocalRef(env, obj_Throwable);
(*env)->ReleaseStringUTFChars(env, trace, trace_str);
(*env)->DeleteLocalRef(env,trace);
android ndk调用Log.getStackTraceString(new Throwable())输出堆栈信息
最新推荐文章于 2023-01-10 10:18:16 发布