Som bekant så har Apple portat över det berömda DTrace från Solaris till Mac OS X.
Vad som inte är så bekant är att Apple har cripplat deras Mac OS X port av DTrace så att man inte kan använda DTrace på alla program. Det går längre inte att använda DTrace på de programmen Apple inte vill att du ska kunna köra DTrace på.
Tex. så kan du inte köra DTrace på iTunes.
#if defined(__APPLE__)
/*
* If the thread on which this probe has fired belongs to a process marked P_LNOATTACH
* then this enabling is not permitted to observe it. Move along, nothing to see here.
*/
if (ISSET(current_proc()->p_lflag, P_LNOATTACH)) {
continue;
}
#endif /* __APPLE__ */
Sätter man P_LNOATTACH i sitt program så kan inte användare köra programmet i DTrace.
Så gör man malware som tex ett rootkit, backdoor, virus, spyware eller nåt, så kan man använda sig utav P_LNOATTACH och då kan inte någon köra DTrace.
http://blogs.sun.com/ahl/entry/mac_os_x_and_the
Inte bara har de cripplat DTrace men även GDB.
För de går inte heller använda sig av GDB för att debugga tex iTunes.
http://steike.com/code/debugging-itunes-with-gdb/
Ser ut som Apple gillar att lägga sig i vad folk gör med sina datorer och hur de använder dem.