android - 如何使用 Android NDK 进行命令行调试

标签 android c++ android-ndk lldb

我正在尝试使用 Android NDK r20 调试 C++ Android 应用程序。

该项目过去使用旧的构建方式,使用 ndk-build 和 android.mk 文件。

现在项目迁移到使用 gradle 和 cmake。因此,ndk-gdb 脚本不再有效,因为它使用需要 android.mk 文件的旧构建系统。

那么我应该如何使用最新的 ndk 以及 gradle/cmake 构建系统从命令行进行调试?是否提供了新的脚本?

最佳答案

ndk-gdb 现在不知道如何开箱即用。您可以在 gradle 项目中设置一些符号链接(symbolic link),使目录布局与独立的 ndk-build 项目相匹配,这将使 ndk-gdb 工作。参见 https://android.googlesource.com/platform/ndk/+/refs/heads/master/samples/NdkGdbSample/举个例子。

ndk-gdb 尽管 CMake 根本不起作用。

参见 https://github.com/android-ndk/ndk/issues/1024 (我假设实际上是您提交的)。我不知道我们什么时候能做到,但那里描述的基本上就是我们将要做的。我们将保留现有脚本,让它与 gradle 项目一起工作,并(最终)在幕后将其切换到 lldb。

使用 Android Studio 是目前在 Android 上进行 native 调试的最佳选择。

关于android - 如何使用 Android NDK 进行命令行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779299/

相关文章:

c++ - native 代码 : cannot use typeid with -fno-rtti

c++ - Android OpenSL ES 在初始化时崩溃

android - 让 : Circular . .. 依赖项被删除

java - 如何在不频繁轮询的情况下了解 GMail 上的传入电子邮件?

android - 如何在通知栏中添加应用程序图标?

Android SQLite建表语句

android - 进行某种 onMeasure 缓存可能/安全吗?

c++ - 为 OpenAL 加载 .WAV 文件

c++ - 如果为空,则从 QListWidget 中删除可编辑项

c++ - 编写可以处理隐式共享但对不可复制类型(如 unique_ptr)关闭它的容器?