我正在将一个项目迁移到新的Android Native开发工具包(JNI),如果发生 SIGSEGV (可能还有 SIGILL、SIGABRT、SIGFPE) 将显示一个漂亮的崩溃报告对话框,而不是当前发生的情况:进程立即死亡,而操作系统可能会试图重新启动它。(编辑:JVM / Dalvik VM 捕捉到信号并记录堆栈跟踪和其他有用信息; 我只想向用户提供将该信息发送给我的选项。)
情况是:大量C代码(我没有编写)在应用程序中执行了大部分工作(所有游戏逻辑),虽然它已经在许多其他平台上进行了充分测试,但很可能我在Android端口中输入垃圾数据,导致本地代码崩溃,因此我需要当前在Android日志中显示的崩溃转储(包括本机和Java的)。(我猜在非Android环境中它将是stderr)。我可以随意修改C和Java代码,尽管回调(无论是进入还是离开JNI)数量约为40,但显然,差异小的奖励点更高。
我听说过J2SE中的信号链接库libjsig.so,如果我可以在Android上安全地安装这样的信号处理程序,那么我的问题就解决了,但我没有找到适用于Android / Dalvik的此类库。
情况是:大量C代码(我没有编写)在应用程序中执行了大部分工作(所有游戏逻辑),虽然它已经在许多其他平台上进行了充分测试,但很可能我在Android端口中输入垃圾数据,导致本地代码崩溃,因此我需要当前在Android日志中显示的崩溃转储(包括本机和Java的)。(我猜在非Android环境中它将是stderr)。我可以随意修改C和Java代码,尽管回调(无论是进入还是离开JNI)数量约为40,但显然,差异小的奖励点更高。
我听说过J2SE中的信号链接库libjsig.so,如果我可以在Android上安全地安装这样的信号处理程序,那么我的问题就解决了,但我没有找到适用于Android / Dalvik的此类库。