Esiste un equivalente di ciò che fa l' opzione -T
e dell'utilità Solaris su Linux.-U
truss
Quelli devono specificare una chiamata di sistema ( -T
) o una funzione di libreria ( -U
) che quando viene chiamata dall'applicazione tracciata ne causerebbe l'arresto.
Oppure, detto diversamente, vorrei che qualsiasi processo avviato da un'applicazione tracciata fosse interrotto (come se ucciso da SIGSTOP) non appena effettua una determinata chiamata di sistema o una determinata funzione di libreria condivisa.
strace
e ltrace
su Linux forniscono gran parte della featureset di Solaris truss
, ma non sembrano fare questo.
Per esempio:
truss -f -T open cmd
Sarebbe come strace -f cmd
tranne che se il processo in esecuzione cmd
o uno qualsiasi dei suoi discendenti fa una open
chiamata di sistema, verrebbe interrotto immediatamente (e potrò riprenderlo in seguito a mio piacimento)
In alcuni casi, potrei usare gdb
's catch syscall
, ma ero alla ricerca di una soluzione che può comodamente seguire forchette e continuare a farlo per tutti i processi biforcuta e continuare a farlo anche dopo execve
s.
Mi sembra di ricordare qualche utilità che fornisce la stessa funzionalità, anche una (o opzioni a quella stessa utility) ad applicazioni a passaggio singolo tra alcune occorrenze di alcune scale di sistema in remoto come quella, ma la mia memoria mi sta fallendo, non posso nemmeno esserne sicuro quello era su Linux.
follow-exec-mode
), lo sto sperimentando. Non risponde rigorosamente alla domanda, ma può essere abbastanza buono per quello che mi serve.
truss
manpage di Solaris .