32-bit DTrace on OSX

I need to run DTrace for 32-bit executables on OSX. I have two machines running OSX 10.8.2. On one of them, /usr/lib/dtrace/libdtrace_dyld.dylib is bold binary, on the other - not:

 /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 

Where do these two come from? How to get fat "officially", i.e. Do not just copy it from another machine?

This is what happens when I try to run dtrace in a 32-bit executable with 64-bit only dylib, btw:

 dyld: could not load inserted library: /usr/lib/dtrace/libdtrace_dyld.dylib 
+4
source share
1 answer

The DTrace library on Mac OS X ML is bold binary (i386, x86_64). Your second machine is missing 32 bits because someone deleted it. Probably one of these system "optimizers" was running on the system.

SHA ( shasum /usr/lib/dtrace/libdtrace_dyld.dylib ) of the lib library on my machine 0722f971d9999245cda234ba5fd3119820fa348a . I tested it on several other machines, and that was consistent. It also matched a machine with a fresh Mac OS X ML installation. This means that you just need to copy it.

The only way to restore it is to either restore it from the backup or reinstall the system.

+2
source

All Articles