如何跟踪致命信号11(SIGSEGV)

3

我正在开发一个安卓应用程序,使用opencv和tesseract进行OCR。我借鉴了guat.am基础OCR的一些代码。

Bitmap bmp = Bitmap.createBitmap(ima.cols(), ima.rows(), Bitmap.Config.ARGB_8888);
        Utils.matToBitmap(imagethre, bmp,true);

        TessBaseAPI baseApi = new TessBaseAPI();
        baseApi.setDebug(true);
        baseApi.init(DATA_PATH, lang);
        baseApi.setImage(bmp);
        String recognizedText = baseApi.getUTF8Text();

这不是路径或语言等问题,因为它可以工作,但有时候,对于某些图片它能正常运行,而对于其他图片则不能...

我该如何追踪这个错误并了解发生了什么?

应用程序在我发布的代码的最后一行崩溃。

调试后,我现在发现当调用TessBaseApi.class时应用程序会崩溃,具体来说是这一行:

String text = nativeGetUTF8Text();

有什么想法吗?

它是否对某些图像始终有效,但对其他图像始终失败?如果是这样,您应该发布成功和失败情况的示例图像。 - rmtheis
1个回答

0

我找不到确切的方法来做到这一点,但我所做的是在每行代码后打印日志语句,如果有时失败,则会打印到该点为止的日志。因此,让您知道没有日志出现的那一行代码导致了错误。


谢谢,我没有说出来,但我知道哪一行失败了,现在我会编辑我的问题... 但我不想知道哪一行失败了(因为我知道.. :)) 我想知道为什么失败了... - fabrigm
所以你正在使用 NDK 从那里获取一些字符串,对吧? - Amit Hooda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接