Невозможно получить доступ к локальным переменным с помощью 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, но все еще без улучшений.

0 ответов

Другие вопросы по тегам