现在您将在编辑器窗口中看到 Java 代码。
图 15. 安卓项目调试工具
我们现在可以设置断点,并对安卓系统级 Java 代码进行调试。
3.2 调试安卓内建应用
安卓系统内建了许多应用(即所谓的系统应用),例如 Calendar、Settings、Gallery 等。这些项目位于安卓代码库中,并使用 system.img 进行构建。要调试 them ,我们需要为其创建 pseudo(伪) 项目,就像 system_process。 您需要将软件包名称更改为应用名称,而不是输入“system_process”。

图 16. 安卓应用软件包名称
然后转至 DDMS,选择“com.android.calendar”进程,并点击“debug”按钮。

图 17. 选择要调试的应用

图 18. 安卓应用调试工具
4 调试安卓系统 C/C++ 代码
4.1 调试 system_process
我们通常可以使用 gdbserver/gdb 来调试安卓原生 C/C++ 代码。 也就是说,使用 gdbserver 连接至正在运行的进程,然后使用 gdb 进行远程调试。 但是,system_ process 是由 zygote 在系统启动时创建,我们在连接前初始化已经完成。 要从一开始调试 system_process,我们要使用安卓调试实用程序,强迫 system_process 在开始的时候进入一个无限循环,以便我们能够尽早地建立连接。 然后,我们会使 system_process 退出无限循环并继续运行。
4.1.1 创建 C/C++ 项目
我们可以创建一个新的 C/C++ 项目。 此外,我们还可以将现有的安卓项目“system_process”转化为 C/C++ 项目。 点击“File->New->Convert to a C/C++ Project (Adds C/C++ Nature)”,选择 system_process 项目:

图 19. 将安卓项目转化为 C/C++ 项目
4.1.2 创建调试配置
转至“Debug”视图,点击“调试按钮->Debug Configurations”,创建一个 C/C++ 远程应用调试配置,输入 app_process 二进制的名称,并禁用自动构建功能。

图 20. 将应用映像设置为调试
转至安卓调试实用程序所在的目录,编辑 gdb 初始化脚本 sdk_x86_gdb.setup,用您的安卓根目录和设备名称来替换 $android 和 $__board,以便使 gdb 判别正确的符号文件目录:
shell echo set solib-absolute-prefix $android/out/target/product/$__board/symbols > tmp.gdb shell echo set solib-search-path $android/out/target/product/$__board/symbols/system/lib:$android/out/target/product/$ __board/symbols/system/lib/hw:$android/out/target/product/$__board/symbols/system/li b/egl:$android/out/target/product/$__board/symbols/system/lib/soundfx:$android/out/tar get/product/$__board/symbols/system/lib/bluez-plugin:$android/out/target/product/$__b oard/symbols/system/vendor/lib/egl:$android/out/target/product/$__board/symbols/syste m/vendor/lib/hw:$android/out/target/product/$__board/symbols/system/vendor/lib:$andr oid/out/target/product/$__board/symbols/system/lib/parameter-framework-plugins/Audio: $android/out/target/product/$__board/symbols/system/lib/soundfx:$android/out/target/p roduct/$__board/symbols/system/usr/lib/alsa-lib >> tmp.gdb source tmp.gdb |
或者在启动 Eclipse 之前导出两个环境变量:
| $ export android=
|
点击“Debugger”选项卡,输入 sdk_x86_gdb.setup 的路径:

图 21. 设置 gdb 初始化脚本
点击“Connection”选项卡,将端口号改为 1234。

图 22. 设置 gdb 调试端口
4.1.3 调试 system_process
启动安卓设备,并使用 USB 线缆将其连接至主机。 重启 system_process,并使用 gdbserver 进行连接:
| $ cd ~/android-sdk/android-debug-utility/target |