Невозможно получить доступ к локальным переменным с помощью systemtap
Я только начинаю использовать systemtap. В моей 64-битной системе Ubuntu 13.04 я установил systemtap и dependencies + systemtap-doc и elfutils, затем добавил репозиторий ddep в свой apt/sources.list и установил пакет dbgsym для своего ядра (3.8.0-29.42).
Затем я попытался запустить примеры в /usr/share/doc/systemtap-doc/examples/general (например, key.stp), но получил
semantic error: not accessible at this address [man error::dwarf] ... identifier '$event_type' at key.stp:8:7
Затем я запустил сценарий "Обойти поврежденный файл dbgsym layount...", как описано на http://wiki.ubuntu.com/Kernel/Systemtap
Тем не менее та же самая ошибка и подобные ошибки возникают при запуске других сценариев при каждом обращении к локальной переменной.
Поэтому на той же странице я написал небольшой сценарий, следующий за разделом "Определение локальных переменных в точке проверки", чтобы получить список локальных переменных в kbd_event.
probe begin {
printf ("probe installed")
}
probe kernel.function("kbd_event") {
printf ("%s locals [%s]\n", probefunc(), $$locals)
exit()
}
что дает мне
probe installed
kbd_event locals []
Похоже, что stap не видит локальных переменных, и я застрял здесь.
Есть идеи, что мне не хватает или что я мог бы попробовать дальше?
Спасибо!
PS: та же процедура отлично работает на моем 64-битном 12.04 с ядром 3.2.0-49.75.
Обновление: теперь я даже пересобрал ядро с помощью символов отладки, используя gcc 4.7, но все еще без улучшений.