【发布时间】:2015-12-01 11:01:34
【问题描述】:
如何在 Linux 中调试模块?因为他们将没有模块的可执行文件? ELF 会做什么?只有我编译的 Makefile 并给了我目标文件和其他各种文件。
【问题讨论】:
-
通常有调试版本的库等。
-
printk及其变体是你的朋友(假设你的意思是 Linux 内核模块)。
标签: c linux linux-device-driver
如何在 Linux 中调试模块?因为他们将没有模块的可执行文件? ELF 会做什么?只有我编译的 Makefile 并给了我目标文件和其他各种文件。
【问题讨论】:
printk 及其变体是你的朋友(假设你的意思是 Linux 内核模块)。
标签: c linux linux-device-driver
因为它们将没有模块的可执行文件?
没有可执行文件(如a.out),但有内核对象文件*.ko。内核对象文件通过insmod 和rmmod添加到或从内核中删除。
因此,您至少需要能够执行以下操作来调试内核模块:
*.c 文件和对应的*.ko 内核对象)。printk
rmmod 旧模块,insmod 新版本。dmesg。【讨论】:
有几种方法可以通过打印(即printk)、观看、查询进行调试
Refer 了解模块的不同调试方法。显而易见的方法是我们可以使用 printk 并在插入 (insmod) 和删除 (rmmod) 模块之后,可以使用 $dmesg 在内核缓冲区中看到该消息
【讨论】: