如何调试Android Native崩溃日志(也许是多个webview问题)?

lit*_*hen 10 debugging java-native-interface android android-studio

我遇到了一个我无法直接链接到我的代码的崩溃,然后我发现它是本机崩溃.回溯是这样的

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)
Run Code Online (Sandbox Code Playgroud)

我想知道如何利用它来帮助我找到问题所在.我知道这太宽泛了,难以在我的代码中找到问题.所以我想知道是否有人可以提供任何指示或方向来利用这个日志?为了提供更多信息,我在崩溃时有多个webview,是否可能出现内存碎片错误?如果是这样,我该怎么办?重新创建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)
Run Code Online (Sandbox Code Playgroud)

Rut*_*att 4

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

尝试这个 :

@Override
protected void onDestroy() {
    if (myWbView != null)
        myWbView.destroy();
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

或者

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