为什么kgdb
总是从kernel/kgdb.c:1749
行开始“kgdb:从远程gdb等待dor连接”只是踩到Linux内核的路上。
我想从头开始。
我的环境是:
根据网络搜索的提示,我已经制作了我的linux。我可以顺利使用它但是当我尝试远程gdb时,内核总是从:
开始kernel / kgdb.c:1749“kgdb:等待来自远程gdb的连接”
离我想见的函数start_kernel
太远了。
我使用以下内容:
qemu -kernel /usr/src/work/bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait" -boot c -hda /usr/src/work/busybox.img -k en-us -serial tcp::4321,server gdb /usr/src/work/vmlinux (gdb) target remote localhost:4321
然后我添加-S
,以便它可以从头开始。但是当我gdb
时,它仍然有问题。
当我输入命令next
时,它不会转到下一行并转到其他地方。例如,我在init.c startkernel()
之后的next
处设置了一个断点。它在其他文件中。
答案 0 :(得分:0)
如果“kgdb:从远程gdb等待dor连接”对你来说还不够早,你将不得不尝试除kgdb以外的其他东西。想一想:kgdb是内核提供的服务。您无法“从头开始”调试内核,因为内核必须执行足够的初始化才能提供kgdb服务。
幸运的是,还有另一种选择。根据{{3}},如果您使用标志-s -S
启动qemu,qemu将启动系统并等待您在调试器加载内核之前将调试器附加到localhost:1234
。那是那么早吗?