如何调试本机 Android 平台代码?
How can I debug native Android platform code?
我有兴趣了解 Android 运行time (ART),我希望能够在其上安装调试器,以便我可以单步执行代码。我有一个 AOSP 版本,我已经 运行 在模拟器上运行了。
附加和 运行 来源的最佳方式是什么?我应该只在模拟器上使用 gdbserver 吗?是否有人们用于本机调试的 IDE?
如果你想调试本机代码,你将需要源代码,这当然意味着要获得 AOSP。设置 AOSP 后,请执行以下操作:
- 在您的 AOSP 目录中,运行 "choosecombo"。 Select "debug" 并选择一个 "eng" 构建。
- 构建 AOSP
- 启动模拟器(即:在 Linux、"emulator &" 上)
- adb shell 进入模拟器和 运行 "setprop debug.db.uid 32767"。这可以防止 debuggerd 附加到它认为已停止并导致问题的进程。有关详细信息,请参阅 AOSP 中的 system/core/debuggerd/debuggerd.cpp。
- 在您构建 AOSP 的同一个 shell 中,运行 "gdbclient [process name]"。这将附加并加载您感兴趣的进程的调试信息。您也可以附加到 pid,但最终必须自己加载符号信息。
- 享受调试本机Android平台代码
看起来你明白了这一点,但为了完整起见,这里有一些官方文档的 link,基本上涵盖了你所说的内容:http://source.android.com/devices/tech/debug/index.html
我有兴趣了解 Android 运行time (ART),我希望能够在其上安装调试器,以便我可以单步执行代码。我有一个 AOSP 版本,我已经 运行 在模拟器上运行了。
附加和 运行 来源的最佳方式是什么?我应该只在模拟器上使用 gdbserver 吗?是否有人们用于本机调试的 IDE?
如果你想调试本机代码,你将需要源代码,这当然意味着要获得 AOSP。设置 AOSP 后,请执行以下操作:
- 在您的 AOSP 目录中,运行 "choosecombo"。 Select "debug" 并选择一个 "eng" 构建。
- 构建 AOSP
- 启动模拟器(即:在 Linux、"emulator &" 上)
- adb shell 进入模拟器和 运行 "setprop debug.db.uid 32767"。这可以防止 debuggerd 附加到它认为已停止并导致问题的进程。有关详细信息,请参阅 AOSP 中的 system/core/debuggerd/debuggerd.cpp。
- 在您构建 AOSP 的同一个 shell 中,运行 "gdbclient [process name]"。这将附加并加载您感兴趣的进程的调试信息。您也可以附加到 pid,但最终必须自己加载符号信息。
- 享受调试本机Android平台代码
看起来你明白了这一点,但为了完整起见,这里有一些官方文档的 link,基本上涵盖了你所说的内容:http://source.android.com/devices/tech/debug/index.html