更多内容:XiaoJ的知识星球
目录
- 一、环境准备
- 1.1 安装llvm/NDK
- 1.2 开启lldb-server服务
- 1.3 lldb连接lldb-server
- 二、使用lldb调试Android native源码
- 2.1 运行调试
- 2.2 .lldbinit文件
下面介绍Android设备(Android手机为例),在Linux中远程lldb调试。
一、环境准备
1.1 安装llvm/NDK
安装工具,需要包含:
-
1.lldb 和 lldb-server。
-
2.clang交叉编译工具链。
请自行安装(建议使用android-ndk-r26c)
-
下载解压NDK:https://developer.android.google.cn/ndk/downloads?hl=zh-cn
-
指定版本NDK: https://github.com/android/ndk/wiki/Unsupported-Downloads
1.2 开启lldb-server服务
找到lldb-server:(例如如下目录)
android-ndk-r26c/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/lib/linux/aarch64/lldb-server
执行以下命令,将其push进手机,并开启。
$ adb push lldb-server /data/local/tmp/
$ adb shell
$ cd /data/local/tmp
$ chmod 755 lldb-server
# $ ./lldb-server p --server --listen unix-abstract:///data/local/tmp/debug.sock
$ ./lldb-server platform --listen '*:1025' --server
保持当前终端不要关闭,进程会一直执行,这样lldb-server就启动了。
1.3 lldb连接lldb-server
打开另一个终端,执行以下命令,在ubuntu上使用lldb连接lldb-server
$ lldb
(lldb) platform list # 查看lldb可以连接的平台
(lldb) platform select remote-android
(lldb) platform status # 查看平台状态
# (lldb) platform connect unix-abstract-connect:///data/local/tmp/debug.sock
(lldb) platform connect connect://:1025
当出现以下输出,表示连接成功。
二、使用lldb调试Android native源码
2.1 运行调试
(1)加载可执行文件,并运行:
(lldb) file path/demo.elf # 指定要调试的可执行文件
(lldb) breakpoint set -f main.cpp -l 57
(lldb) run
如果你需要添加额外的模块(例如动态链接库),可以使用:
(lldb) target module add /local/path/to/module
(lldb) target module add /local/path/to/another-module
(2)常用命令:
使用一些常用GDB命令调试即可。
2.2 .lldbinit文件
在 LLDB 中,也有类似 GDB 的 .gdbinit
的文件,叫.lldbinit
文件。
你可以在这个文件中设置别名、命令别名、环境变量、调试选项等。
例如:
# 设置环境变量
settings set target.env-vars MY_VAR=value
# 设置别名
command alias bt backtrace
# 设置命令别名
command alias ps print stack
# 设置断点
breakpoint set -n main
# 设置只读文件系统时的挂载选项
settings set target.load-cwd-lldbinit false
当你启动 LLDB 时,使用 -s
参数指定一个不同的初始化文件:
lldb -s /path/to/custom/lldbinit myprogram
这样,LLDB 会使用指定的初始化文件而不是默认的 .lldbinit
文件。
声明:资源可能存在第三方来源,若有侵权请联系删除!