gdb远程调试过程

    在另一篇文章里已经介绍过如何编译安装可以远程gdb调试的内核,在这里我们就来详细介绍一下图和利用gdb远程调试内核和驱动。

    网上有很多关于gdb远程调试内核的文章,但是很多文章都说得很杂,而且很多都是利用主机来调试嵌入式的开发板,我们这里说的是利用主机去调试另一台主机的内核和驱动模块。

    1,硬件条件

    两台主机,一条RS232母对母交叉线(由于主机上的RS232串口线都是公口,所以我们需要一条两端都是母口的串口线,还有就是不是所有的两端都是母口的串口线都可以的,有的母对母串口线是延长线,两端的借口连线是一样的,我第一次就买得这种串口线。。。。我们必须用一种母对母的交叉线才行)。

    2,软件条件

    两台主机的系统都必须是linux,其中目标机(装载可以调试内核的主机)必须是编译好的可以启动的,可调试的内核。

    3,调试过程

    首先:启动目标机

    我们首先会看到如下的提示:

    KGDB:wait for connection from remote gdb...

    然后:在开发机上启动gdb,建立远程连接

    gdb vmlinux

  set remotebaud 115200

  target remote /dev/ttyS0

    continue

    这里,由于我们只想调试驱动,所以我们这里先让内核启动起来,等到启动完成,用户登录后,我们再开始调试。

    4,配置目标机的串口

    这一步很重要,我看网上很多文章都没有提到,在这一步,我们要把终端屏幕重定向到/dev/ttyS0,不然接下来的调试会进行不下去,这在下面会有介绍。

    stty ispeed 115200 ospeed 115200 -F /dev/ttyS0

    5,中断目标机

    echo g > /proc/sysrq_trigger

    这个时候开发机上gdb就会从continue状态里跳出来,变成正常的可调试得状态,但是如果没有做第4步的话,经过这里命令之后,开发机没有响应,同时目标机会停留在中断状态,这个时候就无法调试。

    6,继续运行

    在开发机上的gdb中输入:

    continue

    这个时候目标机又重新回到运行状态,而开发机又重新回到gdb中的continue状态。

  

你可能感兴趣的:(Linux,Linux,kernel)