2009-02-27 50 views
0

請注意,這是針對Mac OS X的,但我想我的問題可能存在於任何支持dtrace的操作系統上。使用單個提供程序名稱爲插件創建dtrace探針

我有一個應用程序,利用了很多插件。我在覈心應用程序和插件本身中都添加了userland探針。問題是,如果我在主應用程序正在使用的插件中使用相同的提供程序名稱,那麼當我嘗試創建可用探測列表時,這些探測不會顯示出來。看起來無論誰是第一個加載的代碼都會贏。

在我的主要應用我.D文件:

provider MyApp { 
    probe doSomething(); 
}; 

,在我的插件:

provider MyApp { 
    probe plugin_doSomethingPluginish(); 
}; 

更改供應商到別的東西,像MyAppPlugin的名稱,作品,但隨後的提供商列表將會變得瘋狂(MyAppPlugin1,MyAppPlugin2等)。我想認爲有一種方法可以在與主應用程序相同的提供程序名稱下添加新插件定義的探針,但是我沒有看到它或者它不存在。

那麼有沒有辦法做到這一點?如果沒有,即使模塊名稱已經是唯一的,爲每個插件提供不同的提供程序是否正常?看起來像這就是模塊名稱是...

回答

0

你應該只是定義一個provider.d文件,然後導入.h文件到每個類使用任何這些探針,真的沒有理由做多個.d文件每個列出相同的提供者。我剛剛檢查了DTrace文檔,並沒有看到任何關於它的事情,但是我會假設每個定義相同提供程序的多個.d文件都會產生某種衝突或者加載相同的探測列表提供者就像重新定義探測列表,而不是按照您的預期擴展它。

+0

這個問題是每個插件都是自己的項目。創建從插件項目到主應用項目的依賴是不可能的。 我想我可以爲主項目構建.h文件,然後將其複製到每個插件中,但是當做出更改時更新會很痛苦。 – MyztikJenz 2009-02-27 21:14:53

相關問題