2012-06-23 21 views
5

Possiedo un MacBook Pro a metà del 2009 e un nuovo MacBook Pro 2012 e sono in procinto di apprendere DTrace (uno strumento davvero straordinario). Quando si calcolano gli aggregati sul nuovo MBP 2012, gli aggregati non vengono stampati.La sonda END DTrace non si attiva mai

sudo dtrace -n 'syscall:::entry { @[execname] = count() }' 

Sulla mia metà del 2009 MBP, mostra qualcosa di simile:

usbmuxd               1 
    GrowlHelperApp             2 
    imklaunchagent             2 
    installd               2 
    stackshot               2 
    ... 

Del 2012 MBP non mostra nulla.

ho aggiunto un printf in una sonda Essere e END per vedere se la sonda END sarebbe nemmeno il fuoco in questo modo:

BEGIN 
{ 
    printf("Hi!"); 
} 

syscall:::entry 
{ 
    @[execname] = count(); 
} 

END 
{ 
    printf("Bye!") 
} 

Sulla metà del 2009 MBP entrambe le sonde hanno sparato e stampato e sul 2012 MBP solo la sonda BEGIN ha sparato. La FINE non ha mai sparato.

Entrambi i MBP eseguono Lion 10.7.3. Non sono sicuro di cosa provare dopo. L'unica differenza che mi viene in mente in questo momento è che non ho installato gli strumenti da riga di comando dello sviluppatore sul MBP 2012. Questo non ha senso per me ed è uno sparo nell'oscurità.

Qualsiasi aiuto o idea sarebbe apprezzato. Grazie.

============= [account Root Enabled] ====================

Così mi ha permesso di account di root e ri-eseguito il comando

sudo dtrace -n 'syscall:::entry { @[execname] = count() }' 

senza successo ma se lo faccio

su 
dtrace -n 'syscall:::entry { @[execname] = count() }' 

funziona!

============= [uccidono -s INT] =========================== ==

Ho fatto un po 'più di sperimentazione. Se corro:

sudo kill -s INT [pid of dtrace] 

tutto funziona e l'uscita viene visualizzata.

se corro:

sudo kill -s INT [pid of sudo running dtrace] 

funziona anche questo!

Ma se uso control-c nel terminale, non visualizza l'output.

Qual è la differenza tra control-c e kill -s INT?

+1

Provare [per attivare "root"] (http://support.apple.com/kb/ht1528) sul sistema. – Kentzo

risposta

5

Ho notato che anche su Linux.

Ctrl-C non funziona se dtrace viene generato da sudo.

Se si sudo -i per ottenere una shell di root e quindi invocare dtrace funziona.

+0

Non sono ancora sicuro di cosa sia cambiato tra i due mac ma questo funziona ed è più facile che cercare di uccidere il processo. Ho anche provato sudo-s e ha funzionato.Grazie – SargeATM

+0

probabilmente la versione di sudo. Sono curioso di sapere qual è la versione di sudo nel tuo vecchio macosx? – ithkuil

+0

Questo mi ha aiutato su OSX 10.8. Grazie! –