【问题标题】:How to use kgdb over ethernet (kgdboe)?如何通过以太网使用 kgdb (kgdboe)?
【发布时间】:2020-05-05 05:25:44
【问题描述】:

我使用的是 ubuntu 12.04,内核版本是 3.12.6,我想学习如何使用 kgdb 调试内核。我没有得到太多信息。关于kgdboe(通过以太网的kgdb)。我已经编译内核并在 menuconfig 中启用了 kgdb,我在开发机器上使用 ma​​ke bzImage 创建了内核映像并在目标机器上复制了相同的映像,现在的问题是如何连接两个目标和开发机器。我没有为 kgbdoe 设置参数。如果有人知道如何通过以太网使用 kgdb,请帮忙

【问题讨论】:

    标签: linux


    【解决方案1】:

    您是否阅读过以下内容: https://www.kernel.org/pub/linux/kernel/people/jwessel/kgdb/ch03s04.html ?

    您必须使用特殊选项运行已调试的内核 - 例如:

    kgdbwait kgdbcon kgdboe=@192.168.248.76/,@192.168.242.24/00:11:22:33:44:55
    

    在调试方面,您运行以下命令:

    gdb
    file vmlinux
    target remote udp:192.168.248.76:6443
    

    它对我有用。

    【讨论】:

    • 我试过上面的命令,它显示 kgdbwait : command not found
    • 我的意思是你必须启动内核,将这些选项添加到内核命令行——例如到 grub.conf 或 uboot 或 redboot——这取决于你使用的是什么。
    • 好的,我在 /etc/default/grub 文件中添加了 kgdbwait kgdbcon kgdboe=@dev_machine_ip/,@target_machine_ip/mac_of_target,重新启动系统并在另一台机器上运行 gdb。给目标远程 udp:ip:port 后,它显示连接被拒绝。
    • 网络好像有问题,请检查两个系统之间是否有连接,或者IP地址是否打印错误?很早启动后调试的系统应该等待默认端口 6443 上的 gdb 连接。
    • 连接正确...目标机器正在从开发机器ping...我不知道为什么它不等待连接...我在开发机器上编辑了grub文件并重新启动它然后在测试机器上我启动了 gdb。
    【解决方案2】:

    您可以从here 获取 kgdboe 源,构建它并将其加载到您的内核中:

    make -C /lib/modules/$(uname -r)/build M=$(pwd)
    sudo insmod kgdboe.ko
    

    然后键入“dmesg”以查看加载日志并获取有关从 gdb 连接的说明。

    【讨论】:

    • 要使insmod 工作,我必须将适配器传递给它才能使用,如下所示:insmod kgdboe.ko device_name=enp0s25 udp_port=3333
    猜你喜欢
    • 2012-10-10
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多