有各种需要调试符号的系统范围的调试工具(sysprof、oprofile、systemtap)。获取用户空间应用程序的调试符号很容易:https ://wiki.ubuntu.com/DebuggingProgramCrash
ddebs 存储库也包含linux-image-$(uname -r)-dbgsym
软件包,但即使我安装了它,sysprof 仍继续向我显示无用的“在内核中”而没有详细信息。我在哪里可以获得 sysprof 可以使用的调试符号?
systemtap 包有一个 Suggests:linux-debug-2.6。apt-cache search 找不到任何名为 linux-debug-2.6 的东西。它在某处可用吗?或者这是一个非生产性的死胡同?
顺便说一句,oprofile 可以使用上述 dbgsym 包中的调试符号,但不是开箱即用的——它需要
/lib/modules/$(uname -r)/build/vmlinux
,我必须告诉它使用 use /usr/lib/debug/boot/vmlinux-$(uname -r)-generic
。但是 oprofile 缺少一个不错的 GUI,所以我更喜欢 sysprof。
那么,我怎样才能说服 sysprof 向我展示内核中正在发生的事情呢?
据我所知,我弄错了,sysprof 实际上并没有提供“内核”之外的任何细节级别。这是 sysprof-1.0.12/process.c,第 350 到 355 行: