Как активировать sh DTrace Provider?

Я узнал о патчахupdates) для двоичного файла x86 sh в 2007 году для поддержки поставщика sh DTrace.

Однако я не могу найти никаких проб на OS X. Я проверяю:

$ sudo dtrace -l | grep command-entry

Смотрите: /bin/sh DTrace Provider на сайте Oracle (в той же статье на блог)

Может быть, потому что мой sh совпадает с GNU bash?

$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

Где эти зонды были реализованы, как я могу их найти или как я могу их активировать?

Были ли реализованы только на Solaris?

Ответы

Ответ 1

Патча, на который вы ссылаетесь, была специфичной для оболочки bourne на Solaris, и насколько я знаю, что она никогда не была перенесена на другие оболочки.

В истории фиксации подсветки (née OpenSolaris) мы видим, что /bin/sh было изменено как символическая ссылка на ksh93 в commit ead1f93, 2 марта 2010 года. Учитывая, что сообщение в блоге Alan датируется 2007 годом, это не было включено в Solaris 10, по крайней мере, не изначально, поскольку Solaris 10 была выпущена в 2005 году. Возможно, это одно из обновлений 2007 года но я вроде как сомневаюсь в этом. Из существующего кода я даже не могу найти, что предоставил /bin/sh перед переключением на ksh, что может означать, что это был один из закрытых битов.

В любом случае, он никогда не был частью релиза освещения, и я не вижу ссылок на dtrace-зонды для command-entry в истории событий освещения. Если Алан или кто-то другой, близкий к этому вопросу, не выскажусь, он, вероятно, потеряет время.

Итак, насколько я могу судить, эти патчи никогда не включались в выпущенный продукт от Sun или иначе. Это почти наверняка придется перепроектировать с нуля на любую существующую оболочку с открытым исходным кодом.

Ответ 2

Я никогда не добавлял его в оболочку bourne в публичной Solaris (хотя я получил одобрение PSARC для него), так как во время тестирования я обнаружил некоторые основные хиты производительности в том, что вилки оболочки bourne. Чтобы решить эту проблему, мне пришлось бы перенести ее на использование posix_spawn(). Учитывая, что мы отошли от использования этой оболочки в Solaris 11, это был объем работы, который был бы довольно бесплодным. Я не отказался от других снарядов, но это не один из моих ближайших приоритетов.

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