DTrace


DTrace — фреймворк динамической трассировки, созданный компанией Sun Microsystems, предназначенный для отладки ядра и приложений в реальном времени. Изначально DTrace был создан для Solaris, затем был открыт под лицензией Common Development and Distribution Licence (CDDL) и портирован на ряд Unix-подобных систем.

DTrace может использоваться для наблюдения за количеством потребляемой памяти, процессорным временем, файловыми системами и сетевыми ресурсами, используемыми активными процессами, на работающей системе. Также можно получить более детальную информацию, например, список аргументов, с которыми вызывается каждая функция, или список процессов, использующих определённый файл.

Сценарии трассировки разрабатываются на специализированном языке[⇨]. Инструмент поддерживает взаимодействие с кодом, сгенерированным для программ, написанным на следующих языках программирования: Си, C++, Java, Erlang, JavaScript, Perl, PHP, Python, Ruby, Tcl, распознавая вызовы функций и исходные контексты вызовов. Ряд Unix-программ поддерживают DTrace, обеспечивая отслеживание операций и системных вызовов, в частности, специальные DTrace-провайдеры разработаны для СУБД MySQL, PostgreSQL, Oracle Database, грид-платформы Univa Grid Engine, браузера Firefox.

Инструмент безопасен для использования в работающей среде: во время тестирования почти не происходит снижения производительности.

Сценарии трассировки записываются на специально разработанном для инструмента языке D с си-подобным синтаксисом и оснащённый готовыми функциями и переменными, специфическими для трассировки[1]. Программы на D по структуре напоминают программы awk; они включают список датчиков (англ. probe), которым соответствуют действия. При удовлетворении определённому условию датчик срабатывает и выполняется соответствующее действие. Условием может являться, например, открытие определённого файла, запуск процесса или исполнение определённой строки кода. Существует возможность передавать информацию от одного датчика другому.

Поскольку инструмент обеспечивает отслеживание с минимальными накладными издержками, одновременно могут быть запущены десятки тысяч датчиков, новые датчики могут быть созданы динамически.