基本上我需要调试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 --syms
和objdump --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上)
提前感谢任何可以给我任何帮助的人。
安德烈