如何在Mac OS X上构建DTrace?

3

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

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

但我得到了以下错误: libproc.m:24:49: 错误:CoreSymbolication/CoreSymbolication.h:没有这个文件或目录
我知道CoreSymbolication是一个私有框架,但是为了让我构建dtrace,苹果必须在某处提供此头文件,对吗?有人能指导我构建dtrace所需的必要文件吗?

DTrace已经内置于Snow Leopard标准发行内核中。您想要做什么? - Yuji
我想从零开始构建它。我认为这是使用开源(CDDL)软件包的一部分,但也许苹果不必提供所有组件来实现这一点? - JanePhanie
1个回答

1
正如你可能已经发现的那样,苹果只需要发布从其他开源项目中获取的内核部分,这不包括他们构建在内核之上的用户空间库。然而,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命令使用。


这里提供了反向工程的头文件 - https://github.com/mountainstorm/CoreSymbolication(我自己没有尝试过使用它们,所以不知道它们有多好) - Simon Kissane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接