在OSX上进行32位DTrace操作

4

我需要在OSX上对32位可执行文件运行DTrace。我有两台机器,都运行着OSX 10.8.2。其中一台机器上,/usr/lib/dtrace/libdtrace_dyld.dylib是一个fat二进制文件,而另一台则不是:

/usr/lib/dtrace/libdtrace_dyld.dylib: Mach-O universal binary with 2 architectures
/usr/lib/dtrace/libdtrace_dyld.dylib (for architecture i386):   Mach-O dynamically linked shared library i386
/usr/lib/dtrace/libdtrace_dyld.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64

vs

/usr/lib/dtrace/libdtrace_dyld.dylib: Mach-O 64-bit dynamically linked shared library x86_64

这两个从哪里来?我怎样才能“正式地”获得那个大的,也就是不仅仅是从另一台机器上复制过来?

顺便说一下,当我尝试在一个只有64位dylib的32位可执行文件上运行dtrace时会发生什么:

dyld: could not load inserted library: /usr/lib/dtrace/libdtrace_dyld.dylib
1个回答

2
在Mac OS X ML上,DTrace库是一个fat二进制文件(i386,x86_64)。您的第二台机器缺少32位,因为有人将其删除。可能是在系统上运行了其中一种“优化器”。
我的机器上该库的SHA(shasum /usr/lib/dtrace/libdtrace_dyld.dylib)是0722f971d9999245cda234ba5fd3119820fa348a。我已在其他几台机器上进行了测试,并且匹配了它。在安装了新的Mac OS X ML的机器上也匹配。这意味着可以直接复制它。
恢复它的唯一其他方法是从备份中恢复它或重新安装系统。

什么样的优化器会这样做?这是一台非常新的机器,我从未有意识地运行过这样的东西。 - Mark Probst
哦,你知道那个可以删除“未使用”的本地化文件以优化磁盘空间的工具。我会尝试找到一个“干净”的系统并更新答案。 - Kentzo
@MarkProbst 我在虚拟机中安装了来自AppStore的Mac OS X 10.8.2,并且这些二进制文件是通用的。 - Kentzo
1
是的,我也是。我的机器装有10.8.2(12C3103),具有仅64位的libtrace_dyld.dylib;我升级的另一台机器具有32位和64位版本(12C60)。听起来像是一个漏洞。 - Nicholas Riley
只是想补充一下,最近的iMac和MBP Retina Display(2013年初)都为我提供了libdtrace_dyld.dylib thin。 - mpontes
显示剩余4条评论

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