android - 如何调试 Android Native 崩溃日志(可能是多个 webview 问题)?

标签 android android-studio debugging java-native-interface

<分区>

我发现无法直接链接到我的代码的崩溃,然后我发现它是 native 崩溃。回溯是这样的

Abort message: '[FATAL:jni_android.cc(259)] Please include Java exception stack in crash report
    '
        r0 00000000  r1 00003c12  r2 00000006  r3 00000008
        r4 7cb80978  r5 00000006  r6 7cb80920  r7 0000010c
        r8 7cb7ffad  r9 7cb7ffac  sl 7cb80408  fp 7cb80404
        ip 0000000b  sp 7cb7ff38  lr b3eab4b7  pc b3eadd20  cpsr 600f0010

A/DEBUG: backtrace:
        #00 pc 0004ad20  /system/lib/libc.so (tgkill+12)
        #01 pc 000484b3  /system/lib/libc.so (pthread_kill+34)
        #02 pc 0001dd89  /system/lib/libc.so (raise+10)
        #03 pc 00019511  /system/lib/libc.so (__libc_android_abort+34)
        #04 pc 00017150  /system/lib/libc.so (abort+4)
        #05 pc 0079a29b  /data/app/com.android.chrome-1/base.apk (offset 0xfa5000)

我想知道如何利用它来帮助我找到我的问题。我知道这太宽泛了,很难在我的代码中定位问题。所以我想知道是否有人可以给出任何使用此日志的说明或方向?为了提供更多信息,当它崩溃时我有多个 webview,是否可能是内存 fragment 错误?如果是这样,我该怎么办?重新创建 WebView ? 之前好像有什么东西

System.err: java.lang.IllegalStateException: get field slot from row 25 col 46 failed
        at net.sqlcipher.CursorWindow.getLong_native(Native Method)
05-29 15:38:24.016 22757-23608/com.boxer.email W/System.err:     at net.sqlcipher.CursorWindow.getLong(CursorWindow.java:450)
        at net.sqlcipher.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:110)
        at net.sqlcipher.AbstractCursor.moveToPosition(AbstractCursor.java:201)
        at net.sqlcipher.AbstractCursor.moveToNext(AbstractCursor.java:230)
05-29 15:38:24.017 22757-23608/com.boxer.email W/System.err:     at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
        at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
        at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
        at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)

最佳答案

尝试在 onDestroy() 方法中销毁 webview,因为 WebView 客户端或 Chromium 客户端即使在您的 Activity 或 fragment 销毁后仍在加载数据。

试试这个:

@Override
protected void onDestroy() {
    if (myWbView != null)
        myWbView.destroy();
    super.onDestroy();
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    webView=null; // remove webView, prevent chromium to crash
}

关于android - 如何调试 Android Native 崩溃日志(可能是多个 webview 问题)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529867/

相关文章:

Android:按钮 OnClickListener 不工作

android-studio - Flutter:当您离开屏幕或按回时如何摆脱小部件?

android-studio - 具有-keep标志的任务':app:transformClassesAndResourcesWithProguardForRelease'的执行失败

HTML 布局调试

c# - VSPackage 中的 OnEnterRunMode 不起作用

android - Firebase 云消息传递 : not receiving message in android 12

android - 空 EditText 问题

android - 将 'CallLog.Calls' 存储到另一个表中

java - 设置 setOnItemSelectedListener 时微调器错误

c - 用于调试我的操作系统的调试器