ben*_*nkc 8 java-native-interface android
对一些StackOverflow问题的评论指出,deadd00d的故障地址表示故意的VM中止.
I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
Run Code Online (Sandbox Code Playgroud)
事实上,当通过ndk-stack运行日志时,我看到堆栈帧的顶部解码为:
Stack frame #00 pc 00050b0e /system/lib/libdvm.so (dvmAbort)
Run Code Online (Sandbox Code Playgroud)
然后评论说要在日志中查看问题.究竟我在寻找什么 - 是否有特定的标签或字符串可供搜索?(也许dalvikvm?)我滚动了很多页面的日志而没有找到任何相关的东西 - 这是正常的,还是应该在故障发生之前?
deadd00d最常发生在对GetObjectClass()的特定调用中.我试过在该行之前立即调用env-> ExceptionCheck,但它没有报告任何先前的错误.
我也试过打开CheckJNI
adb shell setprop debug.checkjni 1
Run Code Online (Sandbox Code Playgroud)
根据此处和此处的说明,但在杀死并重新启动应用程序时,我看不到预期的消息
D Late-enabling CheckJNI
Run Code Online (Sandbox Code Playgroud)
反而
D AndroidRuntime: CheckJNI is OFF
Run Code Online (Sandbox Code Playgroud)
使用adb shell getprop表明该物业真的开启了,所以我不确定那里发生了什么.
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |