Третье упражнение раздела 2.3 Упражнения для официального руководства по systemtap

Описание проблемы:

Листинг: socket_trace.stp

probe kernel.function("*@net/socket.c").call{
    printf("%s -> %s\n", thread_indent(1), ppfunc())
}
probe kernel.function("*@net/socket.c").return {
    printf("%s <- %s\n", thread_indent(-1), ppfunc())
}

Измените листинг, удалив модификатор .call из первого зонда. Обратите внимание, что запись функции и возврат функции теперь больше не совпадают. Это связано с тем, что теперь первый зонд будет соответствовать как обычной записи функции, так и встроенным функциям. Попробуйте вернуть модификатор .call и добавить еще один пробник только для пробы. .call и .return вывод потока с отступом?

Я понятия не имею, как показать, что вызов встроенной функции происходит (если есть) в обработчике возврата функции? Кто-нибудь может предложить руку? Заранее спасибо.


person storypku    schedule 25.12.2013    source источник


Ответы (1)


person    schedule
comment
Как правило, в дополнение к публикации кода рекомендуется объяснить, почему ваше решение работает. - person ApproachingDarknessFish; 26.12.2013
comment
В контексте, какая часть не говорит сама за себя? - person fche; 26.12.2013
comment
Ваше решение совпадает с моим. Однако описание проблемы просит добавить еще один зонд только для зонда kernel.function(*@net/socket.c).return, что меня сильно смущает... - person storypku; 27.12.2013
comment
Я исправил формулировку учебника. sourceware.org/git/ - person fche; 27.12.2013