【问题标题】:Debugging of module in linuxlinux中模块的调试
【发布时间】:2015-12-01 11:01:34
【问题描述】:

如何在 Linux 中调试模块?因为他们将没有模块的可执行文件? ELF 会做什么?只有我编译的 Makefile 并给了我目标文件和其他各种文件。

【问题讨论】:

  • 通常有调试版本的库等。
  • printk 及其变体是你的朋友(假设你的意思是 Linux 内核模块)。

标签: c linux linux-device-driver


【解决方案1】:

因为它们将没有模块的可执行文件?

没有可执行文件(如a.out),但有内核对象文件*.ko。内核对象文件通过insmodrmmod添加到从内核中删除

因此,您至少需要能够执行以下操作来调试内核模块:

  • 找到模块本身(*.c 文件和对应的*.ko 内核对象)。
  • 添加(很多)printk
  • 重建内核。
  • rmmod 旧模块,insmod 新版本。
  • 注意调试日志,通常通过dmesg

【讨论】:

    【解决方案2】:

    有几种方法可以通过打印(即printk)、观看、查询进行调试 Refer 了解模块的不同调试方法。显而易见的方法是我们可以使用 printk 并在插入 (insmod) 和删除 (rmmod) 模块之后,可以使用 $dmesg 在内核缓冲区中看到该消息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      相关资源
      最近更新 更多