JNI调用接口:在jni调用期间报告SIGSEGV

时间:2011-08-03 05:44:50

标签: android

我有一个协议实现,其中一部分协议需要将元数据写入数据库,更确切地说,协议是关于在主机系统和移动手机之间同步歌曲。

协议实现在C / C ++中,对于数据库,我们使用sqlite作为后端,实现在java中使用android内容提供程序。此外,我们使用JNI调用将歌曲元数据从C传递给Java。

此实现适用于少数歌曲但是当大量歌曲(比如说50个)同时同步时,同步会在约37-38首歌曲同步后突然停止。

这是由于SIGSEGV发生的,我们从/ data / tombstones了解到这一点,并发现崩溃总是在JNI调用期间发生,调用env->方法。

请让我知道可能出现的问题和解决方法。

1 个答案:

答案 0 :(得分:0)

只要您使用JNI,就应该使用CheckJNI:http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html

它会告诉你你做错了什么并彻底放弃。

(另外,没有人能够在没有堆栈跟踪的情况下调试崩溃。)