[О блоге] [наверх] [пред] [2025-01-29 22:27:00+03:00] [d4f65ecfd845dea39045336c7cd6aa3c70215482]

DTrace помогает на работе

https://www.brendangregg.com/blog/2011-02-11/dtrace-pid-provider-arguments.html
https://www.brendangregg.com/blog/2011-02-14/dtrace-pid-provider-return.html
Есть задача по трассировке всех вызовов функций в Си программе.
DTrace-овский "pid" провайдер добавляет пробы при входе и выходе из
функции, даже которая была static.

    pid$target::mylib*:entry {}
    pid$target::mylib*:return {}

Будет выводить факты вызовов всех функций с префиксом mylib в имени.
И аргументы функций доступны через arg0, arg1, .... Без изменения
программы можно чуть ли не полностью трасировать всё что в ней
происходит. Хотя мне и пришлось добавить свои пробы дополнительные,
которые где-то в середине функций имеются. Можно и Си-шные структуры
тоже разбирать прямо внутри DTrace.

    [оставить комментарий]