- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不知道为什么会抛出这个错误。仅当使用循环时应用程序才会崩溃。我正在将 ArrayList < ArrayList < Point >> 导入 ndk。我无法使用 opencv 在 ndk 中打开视频文件进行视频处理,因此我在 java 端使用 javacv 获取位置(一般来说我是 android 新手,我找不到更优雅的方法)
外部数组的长度为 10(最大 50),内部数组的长度不同(200 - 500)
我最初认为这可能是由于 android 中的内存限制。我现在相信这不可能,因为我运行了一个空循环迭代 10 次。它给了我同样的错误。我不明白这个错误是什么意思。
我是安卓新手。有人可以帮我吗?这件事该怎么办呢?我很感激任何和所有的建议。提前致谢!
CODE:
// Class totd to get obj arraylist
jclass totd = env -> FindClass ("java/util/ArrayList");
//Methods in totd
jmethodID totd_get = env-> GetMethodID (totd, "get", "(I)Ljava/lang/Object;");
jmethodID totd_size = env-> GetMethodID (totd, "size", "()I");
//Get length of ArrayList
jint totd_len = env-> CallIntMethod (totdat,totd_size);
//start loop for each frame process data:
jint i;
vector<vector<Point> > totalpnts;
for (i=0;i<=totd_len;i++){
//Get postion data for current frame
jobject fd = env-> CallObjectMethod (totdat,totd_get,i);
jclass curd = env-> FindClass ("java/util/ArrayList");
//Get methods of inner array
jmethodID curd_get = env-> GetMethodID (curd, "get", "(I)Ljava/lang/Object;");
jmethodID curd_size = env-> GetMethodID (curd, "size", "()I");
//Get no. of objects found
jint objcnt = env-> CallIntMethod (fd,curd_size);
//Extract data from point
jlong j = 0;
vector<Point> framepnts;
//for(j = 0; j <= objcnt ; j++){
//Id objlist
jobject ptxy = env-> CallObjectMethod (fd,curd_get,j);
jclass pnt = env-> GetObjectClass(ptxy);
jmethodID constr = env->GetMethodID(pnt, "<init>", "(II)V");
jfieldID fix = env->GetFieldID(pnt, "x", "I");
jfieldID fiy = env->GetFieldID(pnt, "y", "I");
Point xy;
xy.x = env-> GetIntField(ptxy,fix);
xy.y = env-> GetIntField(ptxy,fiy);
framepnts.push_back(xy);
//}
totalpnts.push_back(framepnts);
}
ERROR:
05-08 13:30:38.593: E/dalvikvm(17064): VM aborting
05-08 13:30:38.595: A/libc(17064): Fatal signal 6 (SIGABRT) at 0x000042a8 (code=-6), thread 17064 (st.trackerproto)
最佳答案
我不是来自 NDK/C++ 世界,但是 I know that debugging in NDK world is a complicated task 。从java端,你总是会得到致命信号N(SIGABRT)(无论NDK层发生什么),这意味着你的C++代码中发生了一些错误。但你不会知道它是什么类型的错误(但是 N 值可能不同,如 6 或 11),因为它是 Java 并且它不知道为什么。您认为循环是一个问题,但您不确定,也许它发生在循环之后、之前或内部。肯定是你的 C++ 代码出了问题。
另请参阅Debugging Android NDK native apps
关于java - For循环原因: VM aborting - Fatal signal 6 (SIGABRT) code=-6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119180/
我的代码在使用 malloc 时遇到问题。直到一个小时前它一直运行良好。它导致这一行 temp2 = (Temp*)malloc(sizeof(Temp));
我的应用程序运行完美,没有任何问题。但是当我尝试调试它时,android studio 卡住了。所以我收到消息“等待调试器”,然后该消息消失,接下来我在模拟器中只看到黑屏。 我也收到了消息 SIGNA
我用 node-js 和 fluent-ffmpeg 编写了一个 node-js api: 'use strict'; require('babel-register'); const path =
我只是在过去一直工作的模拟器上运行我的代码。我真正为启动代码所做的唯一一件事就是设置用户默认值 NSUserDefaults *defaults = [NSUserDefaults standard
我遇到应用程序每次运行时都会在模拟器上崩溃。由于某种原因,他们收到一个中止信号(见附件截图)。最近才开始用,不知道是不是和10.8.4升级有关。 我刚刚基于“单一 View 应用程序”模板创建了一个新
我的应用程序中存在一个错误,使我发疯!尝试隐藏navigationController工具栏后,主线程会收到SIGABRT消息。 [self.navigationController setToolb
我无法理解以下崩溃,因为它是随机发生的,并且我怀疑可能是多线程问题,但是这里是: Incident Identifier: 0BE956AB-228A-4B1B-8A3D-A99A481F7F3F C
我最近设置了 Crashlytics 以从我的 iOS 应用程序接收崩溃日志,并且我不断收到 SIGABRT 崩溃日志,但我找不到它的来源。 如果你能帮我一点,这是崩溃日志: Exception Ty
我正在尝试通过指针来理解这项工作。所以我编写了一个测试程序,其中通过删除分隔点将名称分成标签。每个标签都表示为长度/数据对,如下所示:google.ru 表示为“x\06googlex\02ru”当我
我正在研究教授给我们的一些旧课本,为即将到来的考试做准备,我遇到了这个问题。 我的任务是从结构如下的文本文件中读取信息: [十进制数字],[罗马数字(字符串)],[o 或 u(优化或未优化的罗马数字)
#toggle the string #include int main() { char S[100],ch; int i=0; gets(S); while((S[i]!
我正在开展一个学校项目,我需要从文件中获取矩阵的信息(高度、宽度、单元格状态)。像这样的事情: 30 40 /*height and width*/ 3 /*nr of lines
我学习 Swift 一段时间了,SIGABRT 信号随机出现了好几次。我尝试过一些在线教程,但似乎并不总是有效。 这次我试图用两个 View Controller 设置一个待办事项列表。一个有一个表格
我在我的项目中添加了第二个目标,以便能够对多个应用程序使用相同的 Xcode 项目(基本应用程序的风格略有变化)。我重命名了目标,更改了方案以匹配名称,还重命名了第二个 info.plist。现在,当
我试图运行一个简单的代码,它编译但当我尝试运行它时我得到(核心转储)错误。于是用gdb查看错误是什么。 代码: #include #include #include void gerar() {
我为这个问题苦苦挣扎了 2 天。我有一个解决方法,但我想了解更多会发生什么。让我们开始吧。我有一个非常原始的异常类,它保存一条错误消息作为指向字符数组的指针(我知道 std::string 的利润)。
NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
我正在尝试从框架动态加载类,但应用程序因转换发送 SIGABRT 信号而崩溃: let newClassType = NSClassFromString("MyFramework.CustomClas
当我运行我的应用程序时, View Controller 中会调用一个函数,当发生这种情况时,我会收到信号 SIGABRT。 如何解决这个问题? 功能: func setRootViewControl
我正在尝试保存 UISwitch 结果并使用它们来填充 Parse.com 推送通知的“ channel ”。我遵循了解析指南,但每次我尝试单击保存开关值的保存按钮时,我都会收到一个 SIGABRT。
我是一名优秀的程序员,十分优秀!