调试Linux内核操做指南(withing kgdb)

kgdb在内核2.6.26中加入,用于调试内核。kdb是内建的内核调试器,由SGI开发。 网络

二者差别是:数据结构

 

  • 使用kgdb须要两个机器,经过网络链接,其中客户端使用gdb。而kdb能够直接在目标机器上调试。
  • Kgdb支持C代码级别调试,能够识别内核数据结构,而kdb只能识别汇编级别。

  这里两台机器(使用的是两台VBox的虚拟机),一个是目标机器(被调试内核的机器),另外一台是开发机器(链接被调试内核的机器)。frontend

要使用kgdb,须要从新编译下内核,先修改相关配置:spa

[*] Compile the kernel with debug infodebug

[*] KGDB: kernel debugger  ---> 调试

 [*]   KGDB_KDB: include kdb frontend for kgdb 开发

 

CONFIG_DEBUG_INFO选项使得编译中生产调试信息。虚拟机

CONFIG_STRICT_KERNEL_RWX选项会阻止内核的某些断点,因此禁止(4.15.15中并未看到此项)。并增长KDB。最后查看.config配置文件包含以下:it

CONFIG_FRAME_POINTER=y编译

CONFIG_KGDB=y

CONFIG_KGDB_SERIAL_CONSOLE=y

CONFIG_KGDB_KDB=y

CONFIG_DEBUG_INFO=y

       而后进行编译安装,make –j2 && make modules_install && make install

1.   内核参数

 

在内核启动参数中添加,表示启动,经过串口ttyS0来实现kgdb调试。

 kgdbwait kgdboc=ttyS0,115200

相关文章
相关标签/搜索