如何使用cmake调试外部编译的android本机C库

时间:2017-09-29 12:12:47

标签: android-studio debugging android-ndk java-native-interface freerdp

基本上我需要调试FreeRDP Android项目中包含的本机C代码。

我使用指定的bash脚本成功编译了从Github下载的项目。 https://github.com/FreeRDP/FreeRDP/blob/master/docs/README.android

我还使用Android Studio正确编译了Android部分。 通过连接到几台Windows服务器,我可以在几台设备上正确运行Android应用程序。

本机库中对C源的更改会产生运行时错误,因此我需要调试C源代码。

我确切地his problem没有人能够给出答案,我甚至不知道他是否找到了解决方案。 不幸的是,我的声誉(< 50)不允许我在该帖子下发表评论(和其他类似的人)

我认为.so文件已正确编译,我已使用objdump --symsobjdump --debugging进行了检查,但我无法进入本机代码。 在Android Studio中,我设置了Debug type: Dual,我也尝试将LLDB Startup Commands放在breakpoint set --name <function>之类的内容,但没有效果。

当本机代码抛出异常时

  

---------崩溃的开始
  10-02 14:42:22.064 32032-32032 / com.freerdp.afreerdp A / libc:致命信号11(SIGSEGV),代码1,故障地址0x28 in tid 32032(reerdp.afreerdp)

调试因以下错误而停止:

  

__ lldb_unnamed_symbol64 $$ libfreerdp-android2.so

(由于我的声誉,我无法发布Android Studio截图)

当然,创建使用本机代码并在本机代码中设置brackpoint的应用程序没有问题。 https://developer.android.com/ndk/guides/index.html

环境:
Ubuntu 16.04.3 LTS
Android Studio 2.3.3
Gradle版本3.3
cmake版本3.5.1(在系统上)
cmake版本3.6.0-rc2(在android sdk上)
lldb版本4.0.0(在android sdk上)

提前感谢任何可以给我任何帮助的人。

安德烈

0 个答案:

没有答案