3

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

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

但我得到:libproc.m:24:49: error: CoreSymbolication/CoreSymbolication.h: No such file or directory

我意识到 CoreSymbolication 是一个私有框架,但 Apple 必须在某处提供此标头以便我构建 dtrace,对吗?有人可以指出构建 dtrace 所需的文件吗?

4

1 回答 1

1

正如您可能已经知道的那样,Apple 只需发布从其他开源项目中获取的部分内核,并且不包括他们在内核之上构建的用户空间库。CoreSymbolication/CoreSymbolication.h听起来很像 Obj-C 的用户空间标头,因此您可能可以在没有它的情况下构建内核 DTrace 实用程序。(虽然我很可能是错的。)

我猜它被用于 userlanddtrace(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无论如何,该命令似乎正在使用该库。

于 2013-05-29T23:40:14.847 回答