检查Linux内核调试选项

4

我如何知道我所使用的Linux版本中提供的标准内核是否已选择了DEBUG KERNEL ENABLED标志?

我认为必须启用DEBUG选项才能使用诸如kprobe、systemtap等工具?

5个回答

6
假设内核具备“通过proc提供配置”的功能,您可以通过查看/proc/config.gz来检查运行中的内核配置。
gunzip -c /proc/config.gz | less

2

要查找内核的配置方式,请检查 /boot/ 目录。 根据您所用的发行版,可能会有一个 config-* 文件,其中显示了用于构建内核的内核配置选项。 查找调试设置(例如 CONFIG_DEBUG_KERNEL)。


1
如果是RHEL / CentOS / Fedora:
内核配置位于kernel-devel软件包中。
Red Hat用于构建您的发行版内核的特定配置存储在/usr/src/kernels/version/.config中。

1
在RHEL 5中,您还可以通过内核检查安装在服务器上的所有驱动程序,方法如下:
gunzip -c  /boot/symvers-2.6.18-274.3.1.el5.gz | less

请注意,您可以通过以下方式获取完整路径:

rpm -ql kernel | grep -i symver*

还有一个选择是使用lsmod | more,希望这能帮到你。


0

标准内核可能没有启用这些标志进行编译,因为这会增加内核的大小。对于大多数用户来说,这种开销是一个缺点。

您始终可以重新编译自己定制的内核版本,在这种情况下,您可以选择自己的选项集

您可以使用lsmod命令列出已编译到内核中的模块。


lsmod 列出当前加载到内核中的模块,其中包括编译为动态加载模块的模块。 - quack quixote
为了调试内核,我需要再次构建一个启用所有内核调试标志的新内核吗?还有其他启用它们的方法吗? - codingfreak
@codingfreak, 我认为没有其他方法可以启用内核调试标志。 如果内核没有启用调试选项,则必须重新构建内核。 - kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接