kgdb调试开发板linux驱动,使用KGDB调试Linux内核

概要

本文是讲述如何使用两台机器通过串口线连接,调试Linux内核。基于Linux 2.6.21.1版本。

过程

补丁

$ tar jxf linux-.tar.bz2

$ cp -a kgdb-2 linux-/patches

$ cd linux-

$ quilt push -a

如果不想使用quilt,则必须手动将所有patch打进内核:

$ tar jxf linux-.tar.bz2

$ cd linux-

$ for p in $(grep patch ../kgdb-2/series);do patch -p1 -si ../kgdb-2/$p;done

编译

编译内核,将下列选择选编入内核

Device Drivers —>

Character devices —>

Serial drivers —>

8250/16550 and compatible serial support

[*] Console on 8250/16550 and compatible serial port

Kernel hacking —>

[*] KGDB: kernel debugging with remote gdb

[*] KGDB: Console messages through gdb

Method for KGDB communication (KGDB: On generic serial port (8250)) —>

(X) KGDB: On generic serial port (8250)

[*] Simple selection of KGDB serial port

(115200) Debug serial port baud rate

(0) Serial port number for KGDB

启动

如果要使用串口来调试内核,那么就在grub中,内核的启动参数上加上kgdbwait,它将会在系统启动内核的时候停下来等待调试。如果要改变串 口的参数,使用kgdb8250驱动,那内核启动参数为kgdb8250=0,115200,0代表使用串口0(/dev/ttyS0),波特率是 115200

例1:使用串口ttyS0,波特率为115200的参数是:

kgdb8250=0,115200 kgdbwait

例2:要使KGDB在启动的时候停下来等待连接,参数是:

kgdbwait

系统内核在启动过程中,有可能没有输出信息,过一段时间就会出现Login提示符,这可能视编译内核时的选项所决定。

调试

内核调试

被调试内核的机器叫target machine,使用某一台机器去连接target machine的机器叫development machine。当在development machine上调试target machine机器上的内核时,在development machine上执行:

$ cd linux-

$ gdb ./vmlinux

(gdb) set remotebaud 115200

(gdb) target remote /dev/ttyS0

如果是通过网络调试内核,那么内核启动参数为:

kgdboe=@10.0.0.6/,@10.0.0.3/ (kgdboe=@LOCAL-IP/,@REMOTE-IP/)

调试命令是:

$ gdb ./vmlinux

(gdb) target remote udp:HOSTNAME:6443

模块调试

$ gdbmod-2.4 ./vmlinux

通过网络调试内核

如果通过网络调试内核,则NAPI特性必须禁止。NAPI是用于在1G和10G以太网卡上快速通讯设计的。当一个包到达时,它能开启网卡的以太网驱 动模式 (ethernet driven mode)和切换到查询模式(switch to polling mode)。查询模式是尽快的关闭了到达包的暂停( The polling mode is turned off as soon as incoming packets take a pause.)。KGDB不能在这种情况下工作,即使是100M网卡,NAPI也要关闭。

更多信息

去http://kgdb.linsyssoft.com/ 或在kgdb-2的源码目录下输入”make htmldocs”(或pdfdocs, psdocs等) 来获得更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值