我正在从源代码构建 AOSP,并创建了一个小型 C++ 程序,在启动时将一些消息打印到
logcat
。现在我想根据https://source.android.com/devices/tech/debug/gdb来调试程序
在参考资料中,鼓励您使用
lldb
而不是 gdb
,并且还有一小节介绍如何使用 VS Code 作为调试器。
但是,我在源代码和 Android 代码搜索中都找不到提到的脚本
lldbclient
,似乎只有 gdbclient.py
存在。
Q1:哪里可以找到lldbclient脚本?
运行
gdbclient.py
脚本时,选项 --setup-forwarding vscode
似乎被忽略,并且 gdb
始终启动。
Q2:如果没有
lldbclient
脚本,我必须传递哪些选项给 gdbclient.py
才能使用 lldb
和 vs code 进行调试?
到目前为止我做了什么?
gdbclient.py -r /data/mysample_bin --setup-forwarding vscode
启动带有附加
gdb
的本机程序,并允许我单步执行我的程序。
虽然我不知道如何编写Python代码,但我能够在脚本中找到方法
generate_setup_script
的调用序列,该方法是用参数debugger=gdb
调用的。因此,不会创建 VS Code 的 lldb
配置。将 --no-gdb
或 --lldb
传递给脚本不会改变此行为。
Q1:您可以在存储库https://android.googlesource.com/platform/development、分支 android-s-beta-2(或另一个 android-s 分支)中找到 lldbclient.py 脚本。
Q2:Android 还提供了一些使用 Vscode 调试的教程:https://source.android.com/devices/tech/debug/gdb#vscode.
您需要检查AOSP的版本。
gdbclient.py -r /data/mysample_bin --setup-forwarding vscode
我已经尝试过,在 Android 11 上运行正常,但在 Android 9 上却提示我。
gdbclient.py -p 476 --setup-forwarding vscode
usage: gdbclient.py [-h] [--adb ADB_PATH] [-a | -d | -e | -s SERIAL]
(-p PID | -n NAME | -r ...) [--port [PORT]]
[--user [USER]]
gdbclient.py: error: unrecognized arguments: --setup-forwarding vscode
具体内容是
development/scripts/gdbclient.py
。