Как отследить функцию с помощью dtrace?

Я внес несколько изменений в команду dhcpagent, и при тестировании она не работает. Теперь я знаю, какая функция вызывается в конце перед выходом из dhcpagent. Я хочу проследить управление от dhcpagent до этой конкретной функции, скажем, foo(). Я ищу, кто вызывал foo(), кто вызывал эту функцию и т. д., как генеалогическое древо, от dhcpagent до foo(). Как мне это сделать ? У меня есть очень базовые знания о dtrace, например, как создать базовый скрипт, но не более того. Не могли бы вы предложить сценарий/ресурс, где я могу научиться и написать сценарий самостоятельно?

Что я пробовал:

pid$target::functionname:entry  //and the target was dhcpagent from the command line

Спасибо


person jas    schedule 14.07.2014    source источник
comment
Попробуй это . joyent.com/blog/bruning-questions-debugging   -  person Tharanga Abeyseela    schedule 14.07.2014


Ответы (1)


Я думаю, что следующий скрипт может вам помочь:

#!/usr/sbin/dtrace -Fs
pid$target:::entry,  
pid$target:::return
{
}

В приведенном выше скрипте он может напечатать, как вызывается функция. Но вывод может быть очень большим!
Если вас интересует только модуль dhcpagent, я думаю, что следующий сценарий будет лучшим выбором:

#!/usr/sbin/dtrace -Fs
pid$target:dhcpagent::entry,  
pid$target:dhcpagent::return
{
}
person Nan Xiao    schedule 15.07.2014