2011-08-04 72 views
0

我希望能够在创建和运行开源Android操作系统时能够放置断点,并查看调用堆栈,逐步执行代码。我也可能希望在Dalvik VM中进行调试。操作系统是使用make构建的,所以我想我需要使用gdb。我只能找到关于如何做到这一点的最新指令。有没有人设法在Android操作系统内进行调试,或者是否找到有关此操作的最新指令?调试Android开源操作系统

回答

1

如果您以root用户身份运行(在模拟器中正常情况下,可能在开发人员手机上或通过可能使用的安全漏洞),您可以将gdb(实际上,gdbserver)附加到几乎任何已经运行的用户空间进程。请注意,许多事情可能对于暂停任何有用的时间长度反应不佳。

如果您未以root用户身份运行,则只能调试以用户身份运行的进程,您可以说服用户运行gdbserver - 即使用adb启动的进程,或者使用应用程序的运行工具应用程序进程使用调试标志集进行构建并具有Internet权限(用于gdb-gdbserver通信)。

如果你想调试内核,你需要弄清楚如何让kgdb工作,或者更可能只是在有趣的地方加载printk的内核。这当然需要重建和重新安装内核的能力。

+0

hm thx提示!如果我的构建配置指定“用户调试”,则文档指出这提供了根访问权限。希望这有效(否则我没有扎根我的手机..)。 –

0

不要使用模拟器,这是浪费你宝贵的时间。 获得一部android手机,调试将像您喜欢的一样快速简单。

+0

谢谢,是的,我确实有电话,但我不知道如何设置调试。 –

0

当然。

只要你有Eclipse IDE,这很容易。您只需在调试中运行程序并转到DDMS选项卡。

一些链接,这将有助于你:

http://www.droidnova.com/debugging-in-android-using-eclipse,541.html

http://developer.android.com/guide/developing/debugging/index.html

编辑: 我想你必须下载并编译Android的来源为您的目的。这个链接可能会帮助你:http://source.android.com/source/initializing.html

+0

感谢您的提示 - 尽管我不想调试应用程序,但是在Android操作系统本身以及Dalvik虚拟机中。我使用'make'来构建操作系统,所以我想我需要使用gdb,但不知道如何? –

+0

编辑了答案,希望能帮到你 – pandre

+0

谢谢,虽然我其实已经通过了这一点。我只需要弄清楚如何附加一个调试器:) –

0

这取决于你的桌面情况,但模拟器可以通过增加emulator RAM来改善。这不是很好,但会得到改善。

要在设备上进行调试,请使用USB电缆将其连接到计算机。当您通过Eclipse运行该项目时,它将提示要运行哪个设备/模拟器,在这种情况下,您需要选择您的手机。然后您将切换到Debug透视图。

+0

感谢您的提示,虽然我不想调试应用程序,但在Android操作系统本身和潜在的Dalvik虚拟机。我使用'make'来构建操作系统,所以我想我需要使用gdb,但不知道如何设置它。 –