您的位置:首页 > 运维架构 > Linux

KGDB debug on linux

2016-09-01 13:48 211 查看
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会运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: