Существуют различные общесистемные средства отладки (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 отсутствует хороший графический интерфейс, поэтому я бы предпочел sysprof.
Итак, как я могу убедить sysprof показать мне, что происходит в ядре?
Насколько я могу судить, я ошибся, и sysprof на самом деле не обеспечивает какой-либо уровень детализации, кроме "в ядре". Вот sysprof-1.0.12 / process.c, строки с 350 по 355:
if (address == 0x1)
{
kernel.name = "in kernel";
kernel.address = 0x0001337;
return &kernel;
}