LINUX.ORG.RU

Трассировка выполнения функций ядра

 ,


1

2

Всем привет!

Часто случается, что во время отладки дров или какого то программного модуля в ядре, возникает необходимость понять, какая функция за какой вызывается в том или ином исходничке. Для этих приходится тупо вставлять printk, компилить, смотреть на результат, затем снова printk и так до посинения, пока не завершишь интересующий тебя «reverse-engenering.»

Быть может есть в ядре, стандартные способы снятия такой трассировки? из опробованных strace (и подобных) научился только этой самой тулзой запускать какой то процесс (по сути бинарник в user-space) и только в этих условиях видеть цепочки вызовов. А для ядреных процессов такой не нашлось

Ответ на: комментарий от post-factum

Есть ещё lttng, ну или был, я не слежу пока-что.

pon4ik ★★★★★
()
Ответ на: комментарий от Rx0

Спасибо за ссылочку - полезная инфа с примерами использования. Если нужно протрассировать процесс/приложение - самое то.

А что если нужно протрассировать работу сетевой подсистемы? там нет процесса, есть пакет, который двигается из функции в функцию. Хорошо, если он порожден softirq (получен по сетевому интерфейсу), и можно, к примеру, подключиться strace’ом к softirq процессу. А если нет?

k000858
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.