2010-02-02 150 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命令使用,反正。