【发布时间】:2012-01-07 23:48:38
【问题描述】:
我的原生 Android 代码面临崩溃问题。
我的应用类似于scenario (Click here) 中描述的应用。
Java 层会通过调用一些原生 API 来调用原生层并启动一些流程。
在本机中启动线程进行处理时,本机调用立即返回。
一旦处理完成,本机线程将调用java函数(回调函数)通知结果。这是通过使用 JNI 函数和使用 *jvm->AttachCurrentThread() 来完成的。
我从 log cat 中的堆栈跟踪转储中观察到的是,它甚至没有完成处理,它总是在 malloc 或 free 时崩溃(在一些 malloc 或一些 free 之后并且不一致)。
有没有办法在android的本机代码中找到内存损坏?
正如上面链接中提到的,我尝试通过添加来使用此解决方案
LOCAL_EXPORT_LDLIBS += -lc
android.mk 文件中的标志。但这没有帮助,我仍然能够观察到崩溃。
如果有人知道相同的解决方案,请告诉我。
P.S:我用于本机处理的代码已针对其他产品(不在 android 上)进行了全面测试。尝试移植到 android 时遇到问题。
感谢和问候,
SSuman185
【问题讨论】:
-
你能给出最小的可行样本吗?
-
我尝试过但无法创建可行的示例。
标签: android memory-management android-ndk malloc free