met*_*ace 61 debugging android kernel
我一直在尝试开始使用kgdb
Nexus One.
我已经从https://android.googlesource.com中提取了内核,并启用了kgdb
包括kgdbts
测试使用的一切menuconfig
.成功构建内核并将其刷新到设备(已解锁并运行CyanogenMod 7)
我也跟着上找到的说明 http://bootloader.wikidot.com/android:kgdb启用USB连接的要求作为一个串行连接kgdb
(和测试,从通信ttyACM0
到ttyGS0
成功).
下列文件夹存在,表明kgdboc
和kgdbts
已建到内核:
/sys/modules/kgdboc/parameters
/sys/modules/kgdbts/parameters
Run Code Online (Sandbox Code Playgroud)
以下是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.
Run Code Online (Sandbox Code Playgroud)
我相信我遇到的问题是让内核触发kgdb
.
# echo -n g > /proc/sysrq-trigger
Run Code Online (Sandbox Code Playgroud)
只是导致让我回到命令提示符并且(我认为)假设冻结所有内容并在usb上发送提示,因为手机没有真正的用户,因此它被用作伪装串口.
从我从研究中得到的结果来看,提示应该是允许我发布的触发器
(gdb) target remote /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)
并连接到内核的调试会话.
我也测试/proc/sysrq-trigger
过b
,c
只是确认我能够传递一些命令sysrq
.
所以我的问题是我的长篇大论尝试提供尽可能多的信息是为什么g
不触发调试器?
这是我在任何系统上进行内核调试的第一次尝试,我已经没有办法在谷歌上搜索我的搜索,所以我转向你.谢谢!
(我也尝试将kdgbwait放在内核命令行中但没有成功,因为我相信Android内核尚不支持)
Android内核问题在[SO]上很少见,因为没有其他人回答我在这个问题上提供了我的发现.不幸的是,我没有一个nexus来测试这个,所以这个答案不是为了逐步解决你的问题,而是应该指向你正确的方向.
我在这个问题上找到的唯一有用的资源是在Dongdong Deng的LKML补丁中,因此配置问题不太可能,因为这些通常是丰富且广为人知的.
这表明您的内核构建存在问题.我很想再次使用最新版本的CM,看看问题是否消失了.
如果做不到这一点,请尝试向氰基团队报告,看看这是一个已知问题还是有一个简单的解决方法.
作为最后的手段,如果版本兼容,您可以尝试修补程序.唯一的选择是卷起袖子并开始攻击CM内核以合并补丁.
祝好运.
归档时间: |
|
查看次数: |
9863 次 |
最近记录: |