gpt4 book ai didi

linux - kgdb 的启动距离 init.c start_kernel() 很远

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:44 25 4
gpt4 key购买 nike

为什么kgdb总是从kernel/kgdb.c:1749行“kgdb:waiting dor Connection from Remote gdb”开始,只是走上了Linux内核的路。

我想从头开始。

我的环境是:

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

根据网络搜索的提示,我制作了我的linux。我可以顺利地使用它,但是当我尝试远程 gdb 时,内核总是从以下位置启动:

kernel/kgdb.c:1749 "kgdb:waiting for connection from remote 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,servergdb /usr/src/work/vmlinux  (gdb) target remote localhost:4321

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

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

最佳答案

如果“kgdb:WAITING来自远程 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com