相关疑难解决方法(0)

调试Android NDK本机应用程序

我正在尝试调试并逐步执行段错误的Android应用程序.我试过了ndk-gdb,但运气不好.我还提到了Android NDK调试而无法调试我的应用程序.

当我尝试时ndk-gdb --start,我得到:

$ ndk-gdb --start --verbose
Android NDK installation path: /opt/android-ndk-r7
Using default adb command: /opt/android-sdk-linux/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using final ADB command: '/opt/android-sdk-linux/platform-tools/adb'
Using auto-detected project path: .
Found package name: com.example.native_plasma
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi-v7a
Found debuggable flag: true
Found device gdbserver: /data/data/com.example.native_plasma/lib/gdbserver
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain …
Run Code Online (Sandbox Code Playgroud)

debugging android android-ndk

16
推荐指数
2
解决办法
3万
查看次数

ndk-gdb失败并显示消息:无效的属性名称:package

将Nexus One连接到运行Snow Leopard的Mac.从Eclipse运行"debug".显示执行

/usr/local/android-ndk-r5b/ndk-build NDK_DEBUG=1 
Run Code Online (Sandbox Code Playgroud)

负载Nexus One就好了.然后我尝试运行调试器,以便进入JNI层:

$ $NDK_DIR/ndk-gdb 
Run Code Online (Sandbox Code Playgroud)

失败了这些消息:

Invalid attribute name: 
          package
Invalid attribute name: 
          package
Invalid attribute name: 
          package
ERROR: Non-debuggable application installed on the target device.
       Please re-install the debuggable version!
Run Code Online (Sandbox Code Playgroud)

所以我检查了bin中的apk,它有

lib/armeabi/gdbserver
Run Code Online (Sandbox Code Playgroud)

看一下ndk-dbg脚本,这条消息意味着它没有尝试在手机上找到gdbserver.所以我试着手工做一些ls命令:

$ adb shell ls /data
opendir failed, Permission denied
Run Code Online (Sandbox Code Playgroud)

所以我看了/ data,权限是771.

到目前为止,我做错了什么?

macos gdb android-ndk

15
推荐指数
1
解决办法
6349
查看次数

SIGNAL 11 SIGSEGV code = 2 Android崩溃

我正在尝试使用本机函数处理从MediaMetadataretriever抓取的帧中的位图。但我却死机了

SIGNAL 11 (SIGSEGV) at 0x422d8f20 (code=2)
SIGNAL 11 (SIGSEGV) at 0x42311320 (code=2)
Run Code Online (Sandbox Code Playgroud)

我尝试进行日志记录,以查看问题所在。当我调用本机函数时,它似乎崩溃了。下面是我调用的本机函数。

 protected Bitmap processFrame(Bitmap l_frame) {
    WarnC='a';
    int[] rgba = mRGBA;
    byte[] src_array =stream;
    ByteArrayOutputStream src_stream = new ByteArrayOutputStream();
    l_frame.compress(Bitmap.CompressFormat.PNG, 0, src_stream);
    src_array = src_stream.toByteArray();   
Log.i("test", "ok");
    WarnC= processcaller.LaneDetection(mFrameWidth, mFrameHeight, src_array, rgba);
    Bitmap bmp = g_frame; 
    bmp.setPixels(rgba, 0/* offset */, mFrameWidth /* stride */, 0, 0, mFrameWidth,mFrameHeight);  
    rgba =null;
    src_array=null;
    return bmp;
}
Run Code Online (Sandbox Code Playgroud)

Log.i("test","ok"); 我在网上搜索后立即看到崩溃信号,并看到大多数人说这是分段错误,可能是由于调用未初始化的函数或不存在的函数引起的。但是浏览我的代码,我什么都找不到。有指针吗?

android opencv native

5
推荐指数
0
解决办法
4053
查看次数

标签 统计

android ×2

android-ndk ×2

debugging ×1

gdb ×1

macos ×1

native ×1

opencv ×1