2012-06-23 11 views
5

Tengo una MacBook Pro a mediados de 2009 y una nueva MacBook Pro 2012 y estoy en proceso de aprender DTrace (una herramienta bastante sorprendente). Cuando calculo los agregados en el nuevo MBP 2012, los agregados no se imprimen.La sonda DTrace END nunca dispara

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

En mi mediados de 2009 MBP, se nota algo como:

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

La MBP 2012 no muestra nada.

he añadido un printf en una sonda de SER y final para ver si la sonda final sería incluso un incendio de este modo:

BEGIN 
{ 
    printf("Hi!"); 
} 

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

END 
{ 
    printf("Bye!") 
} 

Por mediados de 2009 MBP ambas sondas dispararon e impreso y en el 2012 MBP solamente la sonda BEGIN disparada El FIN nunca disparó.

Ambos MBP ejecutan Lion 10.7.3. No estoy seguro de qué probar después. La única diferencia que me viene a la mente en este momento es que no he instalado las herramientas de línea de comando del desarrollador en el MBP 2012. Sin embargo, eso no tiene sentido para mí y es un tiro en la oscuridad.

Cualquier ayuda o idea sería apreciada. Gracias.

============= [Cuenta Raíz Habilitado] ====================

Así que permitió a la cuenta root y re-ejecutó el comando

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

sin éxito, pero si lo hago

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

funciona!

============= [matan -s INT] =========================== ==

He hecho un poco más de experimentación. Si ejecuto:

sudo kill -s INT [pid of dtrace] 

todo funciona y se muestra la salida.

Si me quedo:

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

funciona esto también!

Pero si uso control-c en el terminal, no muestra la salida.

¿Cuál es la diferencia entre control-c y kill -s INT?

+1

Pruebe [para habilitar "raíz"] (http://support.apple.com/kb/ht1528) en su sistema. – Kentzo

Respuesta

5

Me di cuenta de que en Linux también.

Ctrl-C no funciona si dtrace es generado por sudo.

Si sudo -i para obtener un shell raíz y luego invocar dtrace, funciona.

+0

Todavía no estoy seguro de qué fue lo que cambió entre las dos Mac, pero esto funciona y es más fácil que intentar matar el proceso. También probé sudo -s y funcionó.Gracias – SargeATM

+0

probablemente la versión de sudo. Tengo curiosidad por saber cuál es la versión de sudo en tu viejo macosx. – ithkuil

+0

Esto me ayudó en OSX 10.8. ¡Gracias! –

Cuestiones relacionadas