使用 sysprof 分析现有的 Ubuntu 内核:如何使用?

使用 sysprof 分析现有的 Ubuntu 内核:如何使用?

有多种系统范围的调试工具(sysprof、oprofile、systemtap)需要调试符号。获取用户空间应用程序的调试符号很容易:https://wiki.ubuntu.com/DebuggingProgramCrash

ddebs 存储库也包含linux-image-$(uname -r)-dbgsym软件包,但即使我安装了它,sysprof 仍会向我显示无用的“内核”,且不提供详细信息。我在哪里可以获取 sysprof 可以使用的调试符号?

systemtap 软件包有一个建议:linux-debug-2.6。Apt-cache 搜索无法找到任何名为 linux-debug-2.6 的东西。它在某处可用吗?或者这是一条毫无意义的死胡同?

顺便说一句,oprofile 可以使用上述 dbgsym 包中的调试符号,但不是开箱即用的——它需要 /lib/modules/$(uname -r)/build/vmlinux,我必须告诉它使用/usr/lib/debug/boot/vmlinux-$(uname -r)-generic。但 oprofile 缺少一个不错的 GUI,所以我更喜欢 sysprof。

那么,我怎样才能让 sysprof 向我展示内核中发生的情况?

答案1

据我所知,我错了,sysprof 实际上并没有提供任何超出“内核”的详细信息。这是 sysprof-1.0.12/process.c,第 350 行到第 355 行:

    if (address == 0x1)
    {
        kernel.name = "in kernel";
        kernel.address = 0x0001337;
        return &kernel;
    }

相关内容