Estou apenas começando a usar o systemtap. No meu sistema Ubuntu 13.04 de 64 bits, eu instalei systemtap e dependências + systemtap-doc e elfutils então adicionei o repositório ddep ao meu apt / sources.list e instalei o pacote dbgsym para o meu kernel (3.8.0-29.42).
Tentei executar os exemplos em / usr / share / doc / systemtap-doc / examples / general (por exemplo, key.stp), mas recebi
semantic error: not accessible at this address [man error::dwarf] ... identifier '$event_type' at key.stp:8:7
Em seguida, executei o script "Trabalhar em torno do lay-out do arquivo dbgsym ..." - script descrito em wiki.ubuntu.com/Kernel / Systemtap
Ainda o mesmo erro e erros semelhantes ocorrem executando os outros scripts sempre que uma variável local é acessada.
Então eu escrevi um pequeno script seguindo a seção "Determinar variáveis locais no ponto de teste" na mesma página para me fornecer uma lista de variáveis locais em kbd_event.
probe begin {
printf ("probe installed")
}
probe kernel.function("kbd_event") {
printf ("%s locals [%s]\n", probefunc(), $$locals)
exit()
}
que me dá
probe installed
kbd_event locals []
Então, parece que o stap não vê nenhuma variável local e é aí que estou preso.
Alguma idéia do que estou perdendo ou o que eu poderia tentar em seguida?
Obrigado!
PS: O mesmo procedimento funciona bem no meu 64bit 12.04 com o kernel 3.2.0-49.75.
Atualização: Eu agora reconstruo o kernel com símbolos de depuração usando o gcc 4.7, mas ainda não há melhorias.