本质上,我需要调试 FreeRDP Android 项目中包含的本机 C 代码。
我使用指定的 bash 脚本成功编译了从 Github 下载的项目。 https://github.com/FreeRDP/FreeRDP/blob/master/docs/README.android
我还使用 Android Studio 正确编译了 Android 部分。通过连接到几个 Windows 服务器,我可以在几个设备上正确运行 Android 应用程序并且没有问题。
在本机库中更改 C 源代码会产生运行时错误,因此我需要调试 C 源代码。
我有他的问题,没有人能够给出答案,我什至不知道他是否找到了解决方案。不幸的是,我的声誉(<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,tid 32032 中的故障地址 0x28 ( reerdp.afreerdp)
调试停止并出现以下错误:
__ lldb_unnamed_symbol64$$libfreerdp-android2.so
(由于我的声誉,我无法发布 Android Studio 屏幕截图)
当然,创建一个使用本机代码并在本机代码中设置断点的应用程序是没有问题的。 https://developer.android.com/ndk/guides/index.html
环境:
Ubuntu 16.04.3 LTS
Android Studio 2.3.3
Gradle version 3.3
cmake version 3.5.1 (on system)
cmake version 3.6.0-rc2 (on android sdk)
lldb version 4.0.0 (on android sdk)
提前感谢任何可以给我任何帮助的人。
安德烈亚