Linux kernel 检查Linux内核调试选项

Linux kernel 检查Linux内核调试选项,linux-kernel,systemtap,Linux Kernel,Systemtap,我如何知道我的linux版本中提供的标准内核是否已选择调试内核启用标志 我认为应该启用调试选项,以便使用诸如kprobe、systemtap之类的工具???标准内核可能不会在编译时启用这些标志,因为这会增加内核的大小。这种开销对大多数用户来说都是不利的 您始终可以选择重新编译自己的自定义版本的内核,在这种情况下,您可以选择自己的选项集 您可以使用lsmod命令列出编译到内核中的模块。要了解内核是如何配置的,请查看/boot/目录。根据发行版的工作方式,可能会有一个config-*文件,其中显示用

我如何知道我的linux版本中提供的标准内核是否已选择调试内核启用标志


我认为应该启用调试选项,以便使用诸如kprobe、systemtap之类的工具???

标准内核可能不会在编译时启用这些标志,因为这会增加内核的大小。这种开销对大多数用户来说都是不利的

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


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

要了解内核是如何配置的,请查看
/boot/
目录。根据发行版的工作方式,可能会有一个
config-*
文件,其中显示用于构建内核的内核配置选项。查找调试设置(例如
CONFIG\u debug\u KERNEL
)。

假设内核具有“通过proc提供配置”,您可以通过查看/proc/CONFIG.gz来检查正在运行的内核的配置

gunzip -c /proc/config.gz | less

如果是RHEL/CentOS/Fedora:

内核配置在内核开发包中


Red Hat用于构建发行版内核的特定配置存储在RHEL 5的/usr/src/kernels/version/.config中。您还可以通过以下方式检查通过内核安装到服务器中的所有驱动程序:

gunzip -c  /boot/symvers-2.6.18-274.3.1.el5.gz | less
注意,您可以通过以下方式获得完整路径:

rpm -ql kernel | grep -i symver*

同样,
lsmod |更多
也应该这样做。希望这会有所帮助。

lsmod
列出了当前加载到内核中的模块。这包括编译为动态加载模块的模块。因此,为了调试内核,我应该再次构建一个启用了所有内核调试标志的新内核??有没有其他方法可以启用它们???@codingfreak,我不认为有其他方法可以启用内核调试标志。如果未启用调试选项,则必须重新生成内核。