为什么kgdb总是从kernel/kgdb.c:1749行开始“ kgdb:等待来自远程gdb的dor连接”只是步入Linux内核之路。

我想从头开始。

我的环境是:


电脑ubuntu10.10
gdb内核2.6.34.1
由busybox制作的filesys
VirtualMach是qemu


按照网络搜索提示,我制作了Linux。我可以顺利使用它,但是当我尝试对它进行remote-gdb时,内核总是从以下位置开始:


  kernel / kgdb.c:1749“ kgdb:等待来自远程gdb的连接”


这与我想见的功能start_kernel太远了。

我正在使用以下内容:

qemu-内核/ usr / src / work / bzImage-追加“ root = / dev / sda kgdboc = ttyS0,115200 kgdbwait”
     -boot c -hda /usr/src/work/busybox.img -k zh-cn -serial tcp :: 4321,服务器

gdb / usr / src / work / vmlinux(gdb)目标远程本地主机:4321


然后添加-S,以便可以从头开始。但是当我gdb时,仍然有问题。

当我输入命令next时,它不会转到下一行并转到其他位置。例如,我在init.c startkernel()之后在next设置了一个断点。它在其他文件中。

最佳答案

如果“ kgdb:等待来自远程gdb的dor连接”对您来说还不够早,那么您将不得不尝试除kgdb之外的其他方法。考虑一下:kgdb是内核提供的服务。您不能“从头开始”调试内核,因为内核必须执行足够的初始化才能为其提供kgdb服务。

幸运的是,还有另一种选择。根据this source的说明,如果使用标志-s -S启动qemu,则qemu将启动系统,并等待您将调试器附加到localhost:1234,然后再加载内核。够早了吗?

关于linux - kgdb距离init.c start_kernel()很远。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8103913/

10-15 12:55