gpt4 book ai didi

Android 内核调试

转载 作者:IT老高 更新时间:2023-10-28 13:22:45 25 4
gpt4 key购买 nike

我一直在尝试让 kgdb 在 Nexus One 上工作。

我已从 https://android.googlesource.com 中提取内核并启用了与 kgdb 相关的所有功能,包括使用 menuconfig 进行的 kgdbts 测试。成功构建内核并将其刷入设备(已解锁并运行 CyanogenMod 7)

我还按照 http://bootloader.wikidot.com/android:kgdb 上的说明进行操作使 USB 连接按照 kgdb 的要求充当串行连接(并成功测试了从 ttyACM0ttyGS0 的通信)。

存在以下文件夹,表明 kgdbockgdbts 已内置到内核中:

/sys/modules/kgdboc/parameters
/sys/modules/kgdbts/parameters

以下是 dmesg 的输出,显示正在完成的 kgdbts 测试显示(我认为)成功完成了测试:

# dmesg | grep kgdb
<6>[ 12.974060] kgdb: Registered I/O driver kgdbts.
<6>[ 12.981781] kgdbts:RUN plant and detach test
<6>[ 12.995178] kgdbts:RUN sw breakpoint test
<6>[ 13.002441] kgdbts:RUN bad memory access test
<6>[ 13.010864] kgdbts:RUN singlestep test 1000 iterations
<6>[ 13.019042] kgdbts:RUN singlestep [0/1000]
<6>[ 13.077850] kgdbts:RUN singlestep [100/1000]
<6>[ 13.132720] kgdbts:RUN singlestep [200/1000]
<6>[ 13.187500] kgdbts:RUN singlestep [300/1000]
<6>[ 13.242370] kgdbts:RUN singlestep [400/1000]
<6>[ 13.297149] kgdbts:RUN singlestep [500/1000]
<6>[ 13.351928] kgdbts:RUN singlestep [600/1000]
<6>[ 13.406829] kgdbts:RUN singlestep [700/1000]
<6>[ 13.461578] kgdbts:RUN singlestep [800/1000]
<6>[ 13.516540] kgdbts:RUN singlestep [900/1000]
<6>[ 13.570922] kgdbts:RUN do_fork for 100 breakpoints
<6>[ 21.117645] kgdb: Unregistered I/O driver kgdbts, debugger disabled.

我相信我遇到的问题是让内核触发 kgdb

# echo -n g > /proc/sysrq-trigger

只是导致我回到命令提示符,并且(我认为)假设卡住所有内容并通过 USB 发送提示,该提示被用作伪串行端口,因为手机没有真正的串行端口。

根据我从研究中收集到的信息,提示应该是允许我发出问题的触发器

(gdb) target remote /dev/ttyACM0

并连接到与内核的调试 session 。

我还用 bc 测试了 /proc/sysrq-trigger 只是确认我能够将一些命令传递给 sysrq.

所以在我冗长地尝试提供尽可能多的信息之后,我的问题是为什么 g 没有触发调试器?

这是我第一次尝试在任何系统上进行内核调试,我已经用尽了在谷歌上搜索的方法,所以我求助于你。谢谢!

(我也尝试过将 kdgbwait 放入内核命令行但没有成功,因为我认为 android 内核尚不支持)

最佳答案

Android 内核问题在 [SO] 上很少见,因为没有其他人回答我已经提供了我对这个问题的发现。不幸的是,我没有一个可以测试这个的关系,所以这个答案不是为了逐步解决你的问题,而是应该指出你在哪里寻找的正确方向。

我在这个问题上找到的唯一有用资源是 LKML patch by Dongdong Deng ,因此不太可能是配置问题,因为这些通常很丰富且广为人知。

这表明您的内核构建存在问题。我很想重新开始使用最新版本的 CM,看看问题是否会消失。

如果失败,请尝试向 cyanogen 团队报告此问题,看看这是一个已知问题还是有简单的解决方法。

作为最后的手段,如果版本兼容,您可以尝试该补丁。唯一的选择是卷起袖子,开始破解 CM 内核以整合补丁。

祝你好运。

关于Android 内核调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com