2009-02-27 3 views
0

Notez que ceci est pour Mac OS X, bien que j'imagine que mon problème existe sur n'importe quel système d'exploitation compatible dtrace.Création de sondes dtrace pour les plug-ins en utilisant le nom du fournisseur unique

J'ai une application qui utilise beaucoup de plugins. J'y ajoute des sondes d'utilisateur, à la fois dans l'application principale et dans les plugins eux-mêmes. Le problème est que si j'utilise le même nom de fournisseur dans les plugins que l'application principale utilise, ces sondes n'apparaissent pas lorsque j'essaie de créer une liste de sondes disponibles. Il semble que le code qui charge le premier gagne.

mon fichier .d dans mon application principale:

provider MyApp { 
    probe doSomething(); 
}; 

et dans mon plugin:

provider MyApp { 
    probe plugin_doSomethingPluginish(); 
}; 

Modification du nom du fournisseur à quelque chose d'autre, comme MyAppPlugin, fonctionne, mais la liste des fournisseurs va devenir fou (MyAppPlugin1, MyAppPlugin2, etc). Je voudrais penser qu'il existe un moyen d'ajouter de nouvelles sondes définies par plugin sous le même nom de fournisseur que l'application principale, mais je ne le vois pas ou il n'existe pas.

Alors, y a-t-il un moyen de le faire? Et sinon, est-il normal d'avoir un fournisseur différent pour chaque plugin même si le nom du module est déjà unique? On dirait que c'est à ça que sert le nom du module ...

Répondre

0

Vous devriez juste définir un fichier provider.d, puis importer le fichier .h dans chaque classe en utilisant l'une de ces sondes, il n'y a vraiment aucune raison de faire plusieurs Fichiers .d répertoriant chacun le même fournisseur. Je viens de vérifier dans la documentation de DTrace à ce sujet et je ne vois rien à ce sujet, mais oui, je présume que plusieurs fichiers .d définissant chacun le même fournisseur crée une sorte de conflit ou de liste de sonde de chargement pour le même Le fournisseur est comme redéfinir la liste de sonde et ne pas l'étendre comme vous l'avez probablement prévu.

+0

Le problème avec ceci est que chaque plugin est son propre projet. La création de la dépendance des projets de plug-in au projet de l'application principale n'est pas possible. Je suppose que je pourrais construire le fichier .h pour le projet principal, puis le copier dans chaque plugin, mais ce serait difficile à mettre à jour quand un changement est fait. – MyztikJenz

+0

vrai, à tout le moins si vous définissez différents fournisseurs, vous pouvez conserver le même préfixe pour différents fournisseurs et ainsi vous pouvez faire dtrace -l -n MyApp * ::: entrée, etc et ainsi tous les fournisseurs correspondant à ce préfixe être listé –

Questions connexes