OS X carece de strace
de Linux, pero tiene dtrace
que se supone que es mucho mejor.¿Cómo puede hacer que dtrace ejecute el comando rastreado con privilegios no root?
Sin embargo, echo de menos la capacidad de hacer un seguimiento simple en comandos individuales. Por ejemplo, en Linux Puedo escribir strace -f gcc hello.c
a caputre todas las llamadas al sistema, lo que me da la lista de todos los nombres de archivo que necesita el compilador para compilar mi programa (el excelente guión memoize se construye sobre este truco)
I Quiero portar memoize en el mac, así que necesito algún tipo de strace
. Lo que realmente necesito es la lista de archivos gcc
que lee y escribe, por lo que lo que necesito es más de truss
. Efectivamente, puedo decir dtruss -f gcc hello.c
y obtener algo de la misma funcionalidad, pero luego el compilador se ejecuta con privilegios de root, lo cual es obviamente indeseable (aparte del enorme riesgo de seguridad, un problema es que el archivo a.out
ahora es propiedad de root :-)
luego probé dtruss -f sudo -u myusername gcc hello.c
, pero esto se siente un poco mal, y no funciona de todos modos (me da ningún archivo a.out
en todo este tiempo, no sé por qué)
todo lo que larga historia trata de motivar a mi pregunta original : ¿Cómo obtengo dtrace
para ejecutar mi comando con privilegios de usuario normales, como lo hace strace
en Linux?
Editar: se parece que no soy el único que se pregunta cómo hacer esto: #1204256 cuestión es más o menos la misma que la mía (y tiene la misma respuesta subóptima sudo :-)
Probablemente tengas razón. a pesar de que obtener privilegios de root no es un problema aquí, ya que en mi computadora portátil puedo (y lo he hecho) 'chmod a + s dtrace', aún así, dtrace no pretende ser una herramienta de usuario de potencia de Unix, sino como un" herramienta de administrador de Unix. Es por eso que tratar de usarlo desde programas de usuario conduce a una situación tan artificial. Muchas gracias por tu respuesta. – Gyom
¿No podría tener un "modo restringido", donde solo se activarán algunas sondas (como las sondas syscall o las sondas de espacio de usuario), y solo en algunos procesos (los que son propiedad del usuario relevante), y solo algunas funciones estarán disponibles : aquellos que pueden hacerse fácilmente para que solo inspeccionen los procesos del usuario, o que solo proporcionan acceso a la información que ya está disponible para el usuario de otras maneras? – SamB