我正在尝试对我的Nexus One进行内核调试,并且一直在遵循http://bootloader.wikidot.com/android:kgdb的指导。我想知道是不是有人真的让它起作用了?有没有人为使用KGDB调试内核提供了更新的解决方案?
发布于 2015-08-17 17:30:54
当我在Android上寻找KGDB的信息时,我发现了这篇文章,所以,尽管它已经有几年的历史了,但我认为值得发布一个链接,指向我为在Nexus 6上启动和运行它所做的一些工作。
http://www.contextis.com/resources/blog/kgdb-android-debugging-kernel-boss/
我希望这对其他寻找类似答案的人有所帮助。
编辑了以下反馈(感谢所有人):
为了让它正常工作,我必须制作一条基于this Accuvant blog的UART调试电缆。这是一个相当简单的电路,由一个FTDI3.3V基本分路器(在撰写本文时可从SparkFun获得)、4个电阻器(2 x 1K欧姆、1 x 1.2K欧姆和1 x 100欧姆)和一个4元件针尖环套(TRRS)耳机插孔组成。电阻本质上提供了一个电压分压器,将3.3v的电压降低到对你的手机更安全的地方。通过插入音频插孔,另一端连接到您的电路板,音频子系统识别其中一个引脚上的电压(~2.8V),并知道通过该电缆提供UART接口。FTDI breakout通过USB插入您的PC,从这里您可以通过minicom等终端仿真器访问控制台消息。但是,您现在有了一个通过相同机制的串行接口,这就是我们可以用于KGDB连接的接口。
因此,在这一点上,需要对Nexus6的串行驱动程序(msm_serial_hs_lite.c)进行一些相对较小的更改,以支持KGDB (特别是执行原子字符I/O操作的能力)。我刚刚从Linux内核主线代码移植了these changes,因为一个叫Stephen Boyd的家伙已经完成了完整的MSM (高通)串行驱动程序msm_serial.c的艰苦工作。他的更改可以在这里找到,或者在谷歌上搜索"msm_serial: add support for poll_“。移植并不困难,我的代码可以是found on github。
除此之外,您还需要能够为您的N6构建一个自定义内核,其中谷歌provides lots of information on。然后,您需要创建一个引导映像,其中包含github存储库中的KGDB修改。我从https://developers.google.com/android/nexus/images获取了常用内核,将其解压缩(使用-x),然后使用以下命令将其与我的自定义内核(zImage-dtb)和其他命令行参数一起重新打包,以确保KGDB将被加载并指向我的串行端口,如下所示:
abootimg -u boot.img -k zImage-dtb -c 'cmdline=console=ttyHSL0,115200,n8 kgdboc=ttyHSL0,115200 kgdbretry=4'创建好我的boot.img后,我可以使用命令boot boot boot boot.img启动它,打开一个adb shell,然后使用以下命令在安卓内核中触发一个断点:
echo -n g > /proc/sysrq-trigger为了完整起见,值得一提的是,您需要超级用户权限才能访问/proc/sysrq-trigger,因此您需要root权限。
在手机挂起并连接调试电缆的情况下,在主机PC上启动用于ARM的GDB版本,并将未压缩的内核作为参数(例如arm-eabi-gdb./vmlinux)。注意:我正在运行Ubuntu 14.04,并使用AOSP源代码库中'prebuilts‘目录中的arm-eabi-gdb。最后,输入以下命令:
set remoteflow off
set remotebaud 115200
target remote /dev/ttyUSB0如果一切顺利,这应该会立即进入kgdb断点(写入/proc/sysrq-trigger ),然后就可以开始调试了。
发布于 2011-03-13 19:10:38
我知道你已经在Android内核开发人员列表上问了一个问题,但是没有得到答案,但是你在档案中搜索过关于kgdb和调试的帖子吗?:http://groups.google.com/group/android-kernel/search?group=android-kernel&q=kgdb&qt_g=Search+this+group
特别是,你可能想看看这篇文章:http://groups.google.com/group/android-kernel/browse_thread/thread/5233e03391867c98/320beef11e737a62
下面是其他一些可能会有帮助的随机链接:
无论如何,这是一个有趣的问题,我真的很难找到任何关于它的东西。你可能想尝试一下IRC (#android-dev或#android-root on freenode),向那里的一些人请教(请在这里发布你找到的),或者在the xda-developers Android forums上询问。
https://stackoverflow.com/questions/4937322
复制相似问题