macos - 如何在 Mac OS X 上构建 DTrace?

标签 macos dtrace

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

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

但我得到:
libproc.m:24:49:错误:CoreSymbolication/CoreSymbolication.h:没有这样的
文件或目录

我意识到 CoreSymbolication 是一个私有(private)框架,但苹果必须
让这个 header 在某处可用,以便我构建 dtrace,
对?有人可以指出构建 dtrace 所需的文件吗?

最佳答案

正如您可能已经知道的那样,Apple 只需发布从其他开源项目中获取的部分内核,并且不包括他们在内核之上构建的用户空间库。 CoreSymbolication/CoreSymbolication.h听起来很像 Obj-C 的用户空间 header ,因此您可能可以在没有它的情况下构建内核 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 似乎正在使用该库无论如何,命令。

关于macos - 如何在 Mac OS X 上构建 DTrace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186766/

相关文章:

c - 简单 Mac OSX C 程序中的总线错误

ruby - Shoes.rb 可以创建独立的应用程序吗?

cocoa - 监控 Cocoa 应用程序在 Mac OS X 上执行外部实用程序(例如 ffmpeg)?

macos - iosnoop、iotop、opensnoop、execsnoop、opensnoop、dtruss 和其他基于 dtrace 的命令不适用于 osx El Capitan、macOS Sierra

process - 如何使用 dtrace 显示每个进程消耗的微秒 cpu?

swift - 在基于文档的应用程序中为首选项 Controller 获取 managedObjectContext

java - .jar 程序可以在 OS X 上运行,但不能在 Windows 上运行

objective-c - nstableview 中的目录列表

macos - dtrace 中的 "dynamic variable drops with non-empty dirty list"是什么意思?

linux - Linux 上 DTrace 的替代方案是什么?