java - 使用 NDK 中实现的异常时发生 SIGTRAP

标签 java android exception android-ndk crash

我有一个关于 ndk 的问题
我在 native 模块中创建了一个异常,并尝试在 java 主应用程序中实现异常,但是当应用程序崩溃时我遇到了 SIGTRAP。
你有什么线索吗?

日志猫

12-11 14:12:43.212 28091 28091 F libc    : Fatal signal 5 (SIGTRAP), code 1 in tid 28091 (d2002.myndkapp3)
12-11 14:12:43.267   444   444 F DEBUG   : pid: 28091, tid: 28091, name: d2002.myndkapp3  >>> com.hhd2002.myndkapp3 <<<
12-11 14:12:43.548   403   403 E lowmemorykiller: Error writing /proc/28091/oom_score_adj; errno=22
12-11 14:12:43.551   474   474 I Zygote  : Process 28091 exited due to signal (5)
12-11 14:12:43.588  1231  3425 I ActivityManager: Process com.hhd2002.myndkapp3 (pid 28091) has died

原生来源
extern "C"
JNIEXPORT jint
JNICALL
Java_com_hhd2002_myndkapp3_MainActivity_throwMyException(
        JNIEnv *env,
        jobject instance) {

    auto exClass = env->FindClass("java/lang/Exception");
    env->ThrowNew(exClass, 0);
    env->DeleteLocalRef(exClass);

}

java源码
public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
...

        this.findViewById(R.id.btn_0).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    throwMyException();
                } catch (Exception e) {
                    Log.d("mainactivity", e.toString());
                }
            }
        });
    }

    private native int throwMyException() throws Exception;
}

最佳答案

这是我的错误。
c++的函数类型必须有返回值,但是缺少那个代码,
所以我把return改成了void。

extern "C"
JNIEXPORT void
JNICALL
Java_com_hhd2002_myndkapp3_MainActivity_throwMyException(
        JNIEnv *env,
        jobject instance) {

    auto exClass = env->FindClass("java/lang/Exception");
    env->ThrowNew(exClass, 0);
    env->DeleteLocalRef(exClass);
}

关于java - 使用 NDK 中实现的异常时发生 SIGTRAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746945/

相关文章:

java - 如何正确读取http请求?

java - 如何使用 poi 3.15 处理 java 报告中的自动大小问题?

android - 单击登录按钮后 react native 发布签名的 apk 文件崩溃

android - 从 ionic 应用程序调用 native Android 应用程序

exception - 将数据加载到 Hive 时出错

java - Java中的异常线程中的异常 "AWT-EventQueue-0"java.lang.NullPointerException

python - 为什么没有捕获到多父异常?

静态方法中的 Java 类型推断

java - Java foreach 循环是否创建一个新对象?

java - Firebase token 生成器在 APN 中失败