我的应用程序出现静默错误(AndroidRuntime:关闭VM)

时间:2016-05-17 15:09:58

标签: android android-ndk

MyApplication 以静默方式终止。它打印的最后一件事是来自函数的tracelog,然后Vm关闭而不引用我的应用程序。

这是日志片段

05-17 15:25:28.294  4385  4385 D MyApplication: MyFunction()
05-17 15:25:28.294  4385  4385 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.369  4400  4400 W app_process: type=1400 audit(0.0:76): avc: denied { write } for name="system@framework@boot.art" dev="dm-0" ino=149 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file permissive=0
05-17 15:25:28.419  4400  4400 W main    : type=1400 audit(0.0:77): avc: denied { write } for name="arm64" dev="dm-0" ino=143 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=dir permissive=0
05-17 15:25:28.371  4400  4400 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
05-17 15:25:28.375  4400  4400 D AndroidRuntime: CheckJNI is OFF
05-17 15:25:28.417  4400  4400 D ICU     : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
05-17 15:25:28.458  4400  4400 I Radio-JNI: register_android_hardware_Radio DONE
05-17 15:25:28.478  4385  4385 D AndroidRuntime: Shutting down VM
05-17 15:25:28.526  4400  4400 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.546  4400  4400 D AndroidRuntime: Shutting down VM

应用程序继续运行。 除了通用名称05-17 15:25:28.546 4400 4400 D AndroidRuntime: Shutting down VM

之外,没有明确的指标

1 个答案:

答案 0 :(得分:2)

错误是由我写的本机代码中的StackOverflow引起的。

Stackoverflows在Android Native Code中静默关闭,与segfaults相反,因此很难找到。

使用Tracelogging / Logdebug找到最后一段代码或使用Android Studio的调试器,您将找到错误的位置。

静默终止的指示符是:“关闭VM

05-17 15:25:28.478  4385  4385 D AndroidRuntime: Shutting down VM
05-17 15:25:28.526  4400  4400 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.546  4400  4400 D AndroidRuntime: Shutting down VM

应用程序继续运行,因为代码是在自己的进程中执行的(通过ProcessBuilder.command()