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

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

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

$ sudo dtrace -l | grep command-entry

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

Может потому что мой sh такое же как GNU bash?

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

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

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам