Systemaufrufe verfolgen

736
ddmichael

Ich versuche ein paar Tricks mit "trace" (oder dtrace oder strace oder truss) zu lernen, also benutze ich den Befehl:

trace -d [random PID] 

Ich erhalte folgende Fehlermeldungen:

Trace-Fehler: Fehler bei der Trace-Einrichtung, KERN_KDREMOVE: Berechtigung verweigert

oder

Fehler beim Öffnen der Codebeschreibungsdatei [PID]

Ich bin nicht sicher über die Flagge und ist wahrscheinlich in anderen Betriebssystemen unterschiedlich (ich verwende MacOS mit Darwin-Kernel), aber die Hauptfunktionen sollten die gleichen sein.

Könnte jemand ein kurzes Tutorial zu diesem Tool bereitstellen?

1

1 Antwort auf die Frage

2
miklosq

möchten Sie strace einen bereits laufenden Prozess? Zumindest unter Linux (mit Root-Berechtigung) können Sie Folgendes versuchen, eine Verbindung mit einem Bash-Shell-Eingabeaufforderungsprozess herzustellen.

# strace -p [PID of a process] Process 2055 attached read(0, 

Und es wartet dort. Die Option -p ist diejenige, die an einen laufenden Prozess angehängt wird. Mit der Option -d können Sie strace Debug-Informationen von sich selbst anzeigen lassen.

Siehe die Anleitung (1),

" -d Zeigt einige Debugging-Ausgaben von strace selbst bei Standardfehler an. "

Ohne Root-Berechtigung erhalten Sie ähnliche Fehler wie die folgenden auf Ubuntu 13.10:

$ strace -p [random PID] strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf