KGDB debug on linux

1. 编译内核&module

make menuconfig   : Kernel Hacking-->

                    Compile the kernel with frame pointers勾选

                    KGDB:kernel debugging with remote gdb勾选

                    Write protect kernel read-only data structures不勾选

make

make modules_install

make install

client机运行应用程序,要调试的内核模块放到server机上,client机控制server机上内核模块的运行,client机执行gdb vmlinux。


2. 确定串口 dmesg|grep tty

dmesg|grep tty 查看新增的串口名称,假设为ttyS0


测试 server控制台输入 cat /dev/ttyS0

     client控制台输入 echo hello > /dev/ttyS0

     server上如果能看到输入的hello,说明串口通讯正常


3. 在/etc/default/grub kernel行末添加kgdbwait kgdboc=ttyS0,115200

4. 内核模块调试

server端:


    cat /sys/module/<module name>/sections/.text

    0xda234567

    得到模块的.text段地址

    echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc

    注册kgdboc 后, 以后用魔幻字母 "g" 控制呼出kgdb
    echo "g" > /proc/sysrq-trigger

    server系统进入等待状态


client端:

    cd /usr/src/linux

    gdb vmlinux

    set remotebaud 115200

    target remote /dev/ttyS0

    add-symbol-file /path to ko/xxxx.ko 0xda234567

    add-symbol-file 参数1是client上module文件的位置,参数2是得到的server端上module的.text段的地址

    break func1

    coutinue

    server会运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值