我有一个协议实现,其中一部分协议需要将元数据写入数据库,更确切地说,协议是关于在主机系统和移动手机之间同步歌曲。
协议实现在C / C ++中,对于数据库,我们使用sqlite作为后端,实现在java中使用android内容提供程序。此外,我们使用JNI调用将歌曲元数据从C传递给Java。
此实现适用于少数歌曲但是当大量歌曲(比如说50个)同时同步时,同步会在约37-38首歌曲同步后突然停止。
这是由于SIGSEGV发生的,我们从/ data / tombstones了解到这一点,并发现崩溃总是在JNI调用期间发生,调用env->方法。
请让我知道可能出现的问题和解决方法。
答案 0 :(得分:0)
只要您使用JNI,就应该使用CheckJNI:http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html
它会告诉你你做错了什么并彻底放弃。
(另外,没有人能够在没有堆栈跟踪的情况下调试崩溃。)