Создание зондов dtrace для плагинов с использованием одного имени провайдера - PullRequest
0 голосов
/ 27 февраля 2009

Обратите внимание, что это для Mac OS X, хотя я полагаю, что моя проблема существует в любой ОС с поддержкой dtrace.

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

мой .d файл в моем главном приложении:

provider MyApp {
    probe doSomething();
};

и в моем плагине:

provider MyApp {
    probe plugin_doSomethingPluginish();
};

Изменение имени провайдера на что-то другое, например, MyAppPlugin, работает, но затем список провайдеров станет безумным (MyAppPlugin1, MyAppPlugin2 и т. Д.). Я хотел бы думать, что есть способ добавить новые определенные плагином пробники под тем же именем провайдера, что и основное приложение, но я либо не вижу его, либо его нет.

Так есть ли способ сделать это? А если нет, то нормально ли иметь разных провайдеров для каждого плагина, хотя имя модуля уже уникально? Похоже, это то, что имя модуля для ...

1 Ответ

0 голосов
/ 28 февраля 2009

Вы должны просто определить один файл provider.d, а затем импортировать файл .h в каждый класс, используя любой из этих тестов, на самом деле нет причин создавать несколько файлов .d, каждый из которых перечисляет одного и того же провайдера. Я только что проверил документацию DTrace по этому поводу и не вижу ничего об этом сразу, но да, я бы предположил, что несколько файлов .d, каждый из которых определяет одного и того же провайдера, создает какой-то конфликт или этот список загрузки загрузки для одного Поставщик подобен переопределению списка зондов и не расширяет его, как вы, вероятно, намеревались.

...