你如何在Mac OS X上构建DTrace?

时间:2010-02-02 18:58:55

标签: macos dtrace

我正在尝试使用。在Xcode项目中构建dtrace目标 建议:

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

但我明白了: libproc.m:24:49:错误:CoreSymbolication / CoreSymbolication.h:没有 文件或目录

我意识到CoreSymbolication是一个私有框架,但Apple必须这样做 为了让我构建dtrace,可以在某处使用此标头 对?有人能指出我建立dtrace所需的文件吗?

1 个答案:

答案 0 :(得分:0)

正如您可能已经想到的那样,Apple只需要发布部分内核,这些部分内容来自其他开源项目,并且不包括他们在内核之上构建的用户态库。 CoreSymbolication/CoreSymbolication.h听起来很像Obj-C的用户空间标题,所以你可以在没有它的情况下构建内核DTrace实用程序。 (虽然我很可能是错的。)

我猜它会在userland 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命令正在使用该库。