2010-02-02 160 views
3

我想在這裏使用 建議建立在Xcode項目使用DTrace目標:如何在Mac OS X上構建DTrace?

http://osx86.boeaja.info/2009/10/building-xnu-kernel-on-snow-leopard/

,但我得到: libproc.m:24:49:錯誤:CoreSymbolication/CoreSymbolication.h :沒有這樣的 文件或目錄

我意識到CoreSymbolication是一個私人的框架,但爲了蘋果必須 使這個頭可以拿到我打造的DTrace, 吧?有人能指出我建立dtrace所需的文件嗎?

+0

DTrace被構建到Snow Leopard的標準運輸內核中。你到底想做什麼? – Yuji 2010-02-02 19:21:57

+0

我想從頭開始構建它。我認爲這是與開源(CDDL)軟件包交易的一部分,但也許蘋果公司並不需要提供所有的東西來實現這一點。 – JanePhanie 2010-02-18 00:06:25

回答

0

正如你可能已經知道的那樣,Apple只需要發佈從其他開源項目中獲取的內核部分,而不包括它們在內核之上構建的用戶級庫。儘管如此,CoreSymbolication/CoreSymbolication.h聽起來很像Obj-C的用戶空間頭部,所以你可能在沒有它的情況下構建內核DTrace實用程序。 (雖然我很可能是錯的。)

我猜想它被用於用戶區dtrace(1m)命令中的符號標識。如果僅僅有一個工具,它可以幫助我們弄清楚了這一點... :-D

# dtrace -n 'pid$target:CoreSymbolication::entry {}' -c 'dtrace -ln syscall::write:entry' 
dtrace: description 'pid$target:CoreSymbolication::entry ' matched 246 probes 
    ID PROVIDER   MODULE       FUNCTION NAME 
    147 syscall            write entry 
dtrace: pid 88089 has exited 
CPU  ID     FUNCTION:NAME 
    2 6538 CSSymbolOwnerGetRegionWithName:entry 
    2 5014 CSSymbolOwnerForeachRegionWithName:entry 
    2 5078  CSRegionForeachSymbol:entry 
    2 6495 CSSymbolicatorGetSymbolOwnerWithUUIDAtTime:entry 
    2 6493 CSSymbolicatorForeachSymbolOwnerWithUUIDAtTime:entry 
    2 6494 CSSymbolicatorForeachSymbolOwnerWithCFUUIDBytesAtTime:entry 
    2 5048 CSSymbolOwnerGetDataFlags:entry 
    2 6538 CSSymbolOwnerGetRegionWithName:entry 
    2 5014 CSSymbolOwnerForeachRegionWithName:entry 
    2 5078  CSRegionForeachSymbol:entry 
    2 5092   CSSymbolIsExternal:entry 
    2 5092   CSSymbolIsExternal:entry 
    ... 

它看起來像圖書館是由dtrace命令使用,反正。