【问题标题】:Debugging Linux kernel code on Android platforms在 Android 平台上调试 Linux 内核代码
【发布时间】:2012-12-24 22:31:09
【问题描述】:

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

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

一些链接

【问题讨论】:

  • 您要调试什么样的问题?
  • 我想像在eclipse或者visual studio中那样调试内核代码。
  • 也许值得花点时间看一下“debug”这个词,也就是说,de - bug。如果一个人不试图理解(作为删除的前奏)一个“错误”,那么可以说不是在调试,而只是出于好奇而逐步执行代码。如果你想这样做,最好在 QEMU 等模拟器上这样做,而不是在真实硬件上设置这样做会带来额外的挫败感。
  • 调试与 Eclipse 无关。 Eclipse 只是一个编辑器(或 IDE)。它不是调试器。 (它可能会为调试器提供一些图形界面,...)。

标签: android c linux-kernel arm kgdb


【解决方案1】:

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

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

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

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

【讨论】:

  • 许多手机都有调试串口,可以在内核配置中激活,但通常需要特殊接线(非常低电压转换器等)。
  • 是的,我找到了这个页面,这似乎表明它可以通过 UBS 完成,至少在某些设备上:bootloader.wikidot.com/android:kgdb
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2021-10-29
    • 1970-01-01
    • 2012-07-10
    • 2014-03-30
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多