首先加载模块,获得加载在target端模块可执行程序的text段开始地址,然后使用sysrq机制触发kgdb调试功能,等待host端连接,host端设置完连接波特率,使用串口之后,连接成功后加载内核模块的符号表,以便在调试过程中显示源码。 接下来在host端为内核模块的nl_send_msg和nl_rcv_msg添加断点,运行程序。 在target端使用gdb调试内核空间程序,为send_pck_to_kernel和recv_from_nl添加断点,运行程序。 程序首先到达用户模块的send_pck_to_kern函数,如下所示:
接着用户空间程序停止执行,到达内核模块的nl_rcv_msg函数,如下所示:
然后由内核模块发送数据,到达内核模块的nl_send-_msg函数,如下:
用户空间程序接收到来自内核的数据,到达recv_rom_nl,如下:
同时显示从内核接收到的数据,如下所示:
|
联系客服