Android - JNI // NDK无法找到SIGSEV

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android - JNI // NDK无法找到SIGSEV相关的知识,希望对你有一定的参考价值。

我有NDK C ++代码,产生SIGSEGV错误。我无法追踪它。自定义信号处理返回空堆栈跟踪。

如果我在android Studio调试器中捕获错误,我得到了这个跟踪:

线程93 - RxNewThreadSche

void std::__1::__tree_remove<std::__1::__tree_node_base<void*>*>(std::__1::__tree_node_base<void*>*, std::__1::__tree_node_base<void*>*) 0x00000000f0ae86ea
art::gc::allocator::RosAlloc::RefillRun(art::Thread*, unsigned int) 0x00000000f0ae2174
art::gc::allocator::RosAlloc::AllocFromRun(art::Thread*, unsigned int, unsigned int*, unsigned int*, unsigned int*) 0x00000000f0ae22de
art::mirror::Object* art::gc::Heap::AllocObjectWithAllocator<true, true, art::mirror::SetLengthVisitor>(art::Thread*, art::mirror::Class*, unsigned int, art::gc::AllocatorType, art::mirror::SetLengthVisitor const&) 0x00000000f0a8f086
art::mirror::ObjectArray<art::mirror::Object*>::Alloc(art::Thread*, art::mirror::Class*, int, art::gc::AllocatorType) 0x00000000f0bc1fe0
art::Array_createObjectArray(_JNIEnv*, _jclass*, _jclass*, int) 0x00000000f0c44af0
java.lang.Object java.lang.reflect.Array.createObjectArray(java.lang.Class, int) 0x000000007229d5d2

这些代码都不是“我的”。只有“熟悉”才是第一线,但我不知道在哪里找到它。有任何想法吗?

答案

不确定它是否与此有关......

我有代码:

env->NewObjectArray(size, env->FindClass("java/lang/String"), NULL)

更换后用

env->NewObjectArray(size, env->FindClass("java/lang/String"), env->NewStringUTF(""))

错误不会被抛出

以上是关于Android - JNI // NDK无法找到SIGSEV的主要内容,如果未能解决你的问题,请参考以下文章

jni/ndk: android studio external tool 自定义工具(Javah/ndk-build命令)

如何将字节数组从android java类传递给JNI C NDK?

Android 使用 jni Demo示例

Android 使用 jni Demo示例

Android JNI——NDK与JNI基础

带有 Google 测试的 Android NDK