![kgdb 启动失败](https://linux22.com/image/41244/kgdb%20%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5.png)
我花了一段时间努力让 kgdb 在我的系统中工作,但与此同时它却没有。我使用的是基于 2.6.37 git 的 TI 的 SDK。当尝试使用串行时,我总是遇到以下异常:
我已经在两种模式下尝试过 kgdb,但都失败了:
1)从启动: 我在 bootargs 中添加了:
"kgdboc=ttyO0,115200 kgdbwait".
------------[ cut here ]------------
WARNING: at drivers/serial/serial_core.c:399 uart_get_baud_rate+0x124/0x138()
Modules linked in:
Backtrace:
[<c004ffc4>] (dump_backtrace+0x0/0x110) from [<c03ee140>] (dump_stack+0x18/0x1c)
r6:c04f4d9f r5:0000018f r4:00000000 r3:60000013
2)从控制台:
root@dm814x:~# echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
kgdb: Registered I/O driver kgdboc.
root@dm814x:~# echo g > /proc/sysrq-trigger
SysRq : DEBUG
Entering KGDB
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c4368000
[00000000] *pgd=84042031, *pte=00000000, *ppte=00000000
Internal error: Oops: 80000007 [#1]
last sysfs file: /sys/module/kgdboc/parameters/kgdboc
KGDB: re-enter exception: ALL breakpoints killed
Backtrace:
内核配置使用:
CONFIG_KGDB
CONFIG_KGDB_SERIAL
有猜出问题是什么吗?也许我需要使用 kgdb 适当的补丁来修补内核?
答案1
在尝试使用 ttyS0 时,我也遇到了空指针取消引用。结果表明我必须指定 ttyO0 而不是 ttyS0。我发现您在启动期间的设置中写入了 ttyO0,并在启动后的替代交互式设置中写入了 ttyS0,这可能会揭示有关此主题的一些混淆。因此,请澄清您正在使用哪个 tty。有关 KDB 作为 kgdb 前端的更多信息,请参阅http://elinux.org/KDB 这对我帮助很大,因为它是详细的描述,包括示例以及如何配置内核以至少使用 kgdb/kdb 的大部分功能。