5

似乎这个主题没有一个很好的完整的一个地方文档。

这是没有任何解决方案的参考。任何人都可以贡献他的知识,了解如何在 linux 内核和 Android 平台中进行调试和跟踪。

一些链接

4

2 回答 2

5

传统的方法(我大部分时间都使用)是简单地将 printk 添加到代码的相关部分,然后阅读代码并在缩小范围后修复任何问题。我相信这通常是大多数内核开发人员所做的(当然,我团队中的所有 6 位同事,以及在不同组中工作的五六位同事)。[我在 PC 上使用 Linux,而不是在 Android 设备上,但它本质上是相同的内核......]

我确信 kgdb 可以以某种方式使用,但它依赖于具有合适的端口(例如串行或以太网)来连接调试器,串行在现代 PC 上很难找到,并且在移动设备中根本不存在电话。以太网会很好,但大多数手机(和其他 Android 平台)往往只有 WiFi,据我了解,这需要在常规 IP 堆栈之上安装大量其他软件才能使其正常工作。我不相信 kgdb 支持 wifi。

对不起,我不能给你更好的答案。[我从你的链接中看到你没有找到一个好的答案......]

编辑:但是,也许这至少有时会有所帮助: http ://bootloader.wikidot.com/android:kgdb

于 2012-12-24T22:40:36.130 回答
3

我为 android 编写 Linux 设备驱动程序。使用 adb 是 android 开发者的首选工具。您可以使用“adb shell cat /proc/kmsg”命令获取内核日志。如果您在提供串行终端的平台上工作,则可以从中获取这些内核日志。使用 printk 和内核日志是我用来调试内核代码的唯一工具。

您可以挂载 debugfs 并获取硬件特定信息。

Android 附带了一组工具,如堆栈实用程序来获取堆栈跟踪等。我知道那里没有太多适用于 android 平台开发人员的文档。大多数文档用于应用程序开发。

于 2012-12-25T02:34:40.870 回答