2017-09-29 2 views

Répondre

1

Vous pouvez le faire relativement facilement avec un script dtrace.

Nous voulons enregistrer tous les appels ouverts pour le nom de fichier, si l'ouverture échoue, et l'errno est ENOENT, puis afficher le nom du processus, pid et nom de fichier.

syscall::open*:entry 
{ self->path = copyinstr(arg0); } 

syscall::open*:return 
/arg0 < 0 && errno == ENOENT/
{ printf("%s(%d): %s", execname, pid, self->path); } 

puis sudo dtrace -s <script>. Sur OSX, cependant, avec la protection de l'intégrité du système, beaucoup de processus ne seront pas surveillés par cela.