Debugging 调试内核模块时,kgdb找不到源代码

Debugging 调试内核模块时,kgdb找不到源代码,debugging,linux-kernel,kernel,kernel-module,kgdb,Debugging,Linux Kernel,Kernel,Kernel Module,Kgdb,我想用kgdb调试内核模块,请执行以下操作: gdb:添加符号文件/home/gaoqiang/kernel-32/fs/ext4/ext4.ko 0xffffffffff0122000-s.bss 0xffffffffff016b380-s.data 0xffffffffffff0168400 gdb:中断ext4\u getattr gdb:c 我成功地到达了临界点,但gdb告诉我:“[没有可用的来源]”然后 如何让gdb找到模块的源代码?根据您的问题 (gdb)添加符号文件/home/ga

我想用kgdb调试内核模块,请执行以下操作:

gdb:添加符号文件/home/gaoqiang/kernel-32/fs/ext4/ext4.ko 0xffffffffff0122000-s.bss 0xffffffffff016b380-s.data 0xffffffffffff0168400

gdb:中断ext4\u getattr gdb:c

我成功地到达了临界点,但gdb告诉我:“[没有可用的来源]”然后 如何让gdb找到模块的源代码?

根据您的问题

(gdb)添加符号文件/home/gaoqiang/kernel-32/fs/ext4/ext4.ko 0xffffffffff0122000-s.bss 0xffffffffffff016b380-s.data 0xffffffffff0168400

我假设模块位于目录/home/gaoqiang/kernel-32/fs/ext4/中。如果您的源代码也在目录中,gdb将不会给出错误/警告


因此,如果
ext4.ko
模块的源文件说
ext4.c
和其他文件不在该目录中,请将它们复制到该目录中

它是您构建的内核还是Linux发行版提供的内核?对于后者,GDB所需的调试信息实际上可以位于单独的文件中,而不是ext4.ko本身。您可以在发行版的存储库中查找诸如kernel-*-debug、kernel-*-debuginfo等包。顺便说一句,您能描述一下您试图通过kgdb了解ext4的情况吗?在某些情况下,收集所需数据的方法可能比使用调试器更简单。
 (gdb)set solib-search-path /home/gaoqiang/kernel-32/fs/ext4/