调试库项目中的本机代码

时间:2014-04-30 07:17:49

标签: android android-ndk android-library ndk-gdb

我正在尝试调试我的android应用程序,该应用程序使用具有本机代码的库。 我查看了这个SO question并配置了其中提到的ndk调试器,并且能够启动调试器,但我无法单步执行我设置的断点。 在启动调试器之前,我收到此警告:

  

映射共享库部分时出错:   `/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/libjpeg.so' ;:    不是可执行格式:文件格式无法识别

     

警告:" /home/raneez/Documents/android/workspace/SmartCardLibrary/obj/local/armeabi/libcrypto.so"的动态部分;是不是在预期的地址(错误的库或版本不匹配?)

     

警告:" /home/raneez/Documents/android/workspace/SmartCardLibrary/obj/local/armeabi/libssl.so" .dynamic部分。是不是在预期的地址(错误的库或版本不匹配?)

     

警告:无法加载120个库的共享库符号,例如/系统/斌/连接器。   使用" info sharedlibrary"命令查看完整列表。

     

你需要"设置solib-search-path"或者"设置sysroot"?   警告:无法找到动态链接器断点功能。   GDB将重新进行重试。同时,很可能   GDB无法调试共享库初始化程序   或者在dlopen()之后解决挂起的断点。

     

[新主题13826]

     

[新主题13827]

     

[新主题13828]

     

[新主题13829]

     

[新主题13833]

     

[新主题13834]

     

[新主题13835]

     

[新主题13837]

     

[新主题13838]

     

[新主题13850]

     

[新主题13852]

1 个答案:

答案 0 :(得分:0)

错误发生在您正在使用的libjpeg.so文件中,它是针对x86_64桌面Linux编译的,但您需要为正在运行的Android架构重新编译版本(armeabi-v7a,x86等)。

关于libcrypto.so和libssl.so libs的其他警告。使用的是来自设备的,而不是来自您的应用程序。你很好。