OS X manca di strace
di linux, ma ha dtrace
che dovrebbe essere molto meglio.Come si può ottenere dtrace per eseguire il comando tracciato con privilegi non di root?
Tuttavia, mi manca la possibilità di eseguire semplici tracing sui singoli comandi. Per esempio, su linux posso scrivere strace -f gcc hello.c
a caputre tutte le chiamate di sistema, che mi dà l'elenco dei tutti i nomi dei file necessari al compilatore per compilare il mio programma (l'ottimo memoize sceneggiatura è costruita su questo trucco)
I voglio portare memoize sul mac, quindi ho bisogno di una sorta di strace
. Quello di cui ho effettivamente bisogno è l'elenco dei file gcc
in lettura e scrittura, quindi quello che mi serve è più di un truss
. Certo, posso dire dtruss -f gcc hello.c
e avere in qualche modo la stessa funzionalità, ma poi il compilatore viene eseguito con privilegi di root, che è ovviamente indesiderabile (a parte l'enorme rischio di sicurezza, un problema è che il file a.out
è ora di proprietà di root :-)
allora ho provato dtruss -f sudo -u myusername gcc hello.c
, ma questo si sente un po 'sbagliato, e non funziona comunque (ottengo alcun file a.out
in tutto questo tempo, non so perché)
tutto ciò che lunga storia cerca di motivare la mia domanda iniziale : come ottengo dtrace
per eseguire il mio comando con i normali privilegi dell'utente, proprio come fa strace
in linux?
Edit: è sembra che io non sono l'unico a chiedersi come fare questo: domanda #1204256 è praticamente uguale al mio (e ha la stessa risposta sub-ottimale sudo :-)
Probabilmente hai ragione. anche se ottenere i privilegi di root non è un problema qui, dal momento che sul mio laptop posso (e ho fatto) 'chmod a + s dtrace', tuttavia, dtrace non è inteso come uno strumento" unix power user ", ma come un" unix administrator "tool. Ecco perché provare a usarlo dai programmi utente porta a una situazione così artificiosa. Grazie mille per la tua risposta. – Gyom
Non potrebbe avere una "modalità limitata", in cui solo alcune sonde (come le sonde syscall o le sonde userspace) si attiverebbero, e solo in alcuni processi (quelli di proprietà dell'utente interessato) e solo alcune funzioni sarebbero disponibili : quelli che possono essere fatti facilmente per ispezionare solo i processi dell'utente o che forniscono accesso ad informazioni già disponibili all'utente in altri modi? – SamB