GoGPT Best VPN GoSearch

OnWorks-Favicon

strace64 – Online in der Cloud

Führen Sie strace64 im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl strace64, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


strace - Systemaufrufe und Signale verfolgen

ZUSAMMENFASSUNG


strace [-CdffhikqrtttTvVxxy] [-In] [-bausführen] [-eausdr]... [-aÜberblick]
[-oDatei] [-sstrsize] [-PWeg] ... -ppid... / [-D] [-Ejung[=Welle]]...
[-uBenutzername] Befehl [args]

strace -c[df] [-In] [-bausführen] [-eausdr]... [-Ooben] [-SSortieren nach]
-ppid... / [-D] [-Ejung[=Welle]]... [-uBenutzername] Befehl [args]

BESCHREIBUNG


Im einfachsten Fall strace führt das angegebene aus Befehl bis es ausgeht.
Es fängt die von a aufgerufenen Systemaufrufe ab und zeichnet sie auf
Prozess und die Signale, die von einem Prozess empfangen werden. Der Name von
Bei jedem Systemaufruf werden seine Argumente und sein Rückgabewert ausgedruckt
Standardfehler oder in die mit angegebene Datei -o .

strace ist ein nützliches Diagnose-, Lehr- und Debugging-Tool.
Systemadministratoren, Diagnostiker und Problemlöser werden es finden
Von unschätzbarem Wert für die Lösung von Problemen mit Programmen, für die die Quelle vorliegt
nicht ohne weiteres verfügbar, da sie nicht in der richtigen Reihenfolge neu kompiliert werden müssen
um sie aufzuspüren. Studenten, Hacker und übermäßig Neugierige werden das finden
Man kann viel über ein System und seine Systemaufrufe lernen
sogar gewöhnliche Programme verfolgen. Und Programmierer werden das seitdem finden
Systemaufrufe und -signale sind Ereignisse, die beim Benutzer/Kernel stattfinden
Schnittstelle, eine genaue Untersuchung dieser Grenze ist sehr nützlich für Fehler
Isolation, Überprüfung der geistigen Gesundheit und der Versuch, die Rennbedingungen zu erfassen.

Jede Zeile im Trace enthält den Namen des Systemaufrufs, gefolgt von seinem Namen
Argumente in Klammern und ihr Rückgabewert. Ein Beispiel aus
Das Verfolgen des Befehls „cat /dev/null“ lautet:

open("/dev/null", O_RDONLY) = 3

Fehler (normalerweise ein Rückgabewert von -1) haben das Symbol „errno“ und „error“.
Zeichenfolge angehängt.

open ("/foo/bar", O_RDONLY) = -1 ENOENT (No such file or directory)

Signale werden als Signalsymbol und dekodierte Signinfo-Struktur gedruckt. Ein
Auszug aus dem Verfolgen und Unterbrechen des Befehls „sleep 666“ lautet:

sigsuspend([]
--- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=...} ---
+++ von SIGINT getötet +++

Wenn ein Systemaufruf ausgeführt wird und währenddessen ein anderer ausgeführt wird
dann von einem anderen Thread/Prozess aufgerufen strace werde versuchen zu bewahren
die Reihenfolge dieser Ereignisse und markieren Sie den laufenden Anruf als vorhanden
unvollendet. Wenn der Anruf zurückkehrt, wird er als . markiert wieder aufgenommen.

[pid 28772] select(4, [3], NULL, NULL, NULL
[pid 28779] clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
[pid 28772] <... Wiederaufnahme auswählen> ) = 1 (in [3])

Unterbrechung eines (neustartbaren) Systemaufrufs durch eine Signalübermittlung ist
anders verarbeitet, da der Kernel den Systemaufruf beendet und auch
veranlasst seine sofortige erneute Ausführung, nachdem der Signalhandler abgeschlossen ist.

lesen (0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (Soll neu gestartet werden)
--- SIGALRM ... ---
rt_sigreturn(0xe) = 0
lesen(0, "", 1) = 0

Argumente werden mit Leidenschaft in symbolischer Form gedruckt. Dieses Beispiel
zeigt die Shell, die die Ausgabeumleitung „>>xyzzy“ durchführt:

open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3

Hier wird das dritte Argument von open durch Aufschlüsseln des Flags dekodiert
Argument in seine drei bitweisen ODER-Bestandteile zerlegt und den Modus ausgibt
Der Wert wird traditionell im Oktalformat angegeben. Wo sich die traditionelle oder einheimische Verwendung unterscheidet
von ANSI oder POSIX, letztere Formen werden bevorzugt. In manchen Fällen,
strace Die Ausgabe hat sich als lesbarer erwiesen als die Quelle.

Strukturzeiger werden dereferenziert und die Mitglieder werden als angezeigt
geeignet. In allen Fällen werden Argumente möglichst C-ähnlich formatiert
Mode möglich. Zum Beispiel die Essenz des Befehls „ls -l
/dev/null“ wird erfasst als:

lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0

Beachten Sie, wie das Argument „struct stat“ dereferenziert wird und wie jedes
Das Mitglied wird symbolisch angezeigt. Beobachten Sie insbesondere, wie die
st_mode-Mitglied wird sorgfältig in ein bitweises ODER von symbolischem und dekodiert
numerische Werte. Beachten Sie in diesem Beispiel auch, dass das erste Argument to
lstat ist eine Eingabe für den Systemaufruf und das zweite Argument ist ein
Ausgang. Da Ausgabeargumente beim Systemaufruf nicht geändert werden
Schlägt dies fehl, werden Argumente möglicherweise nicht immer dereferenziert. Beispiel: Wiederholen
Das Beispiel „ls -l“ mit einer nicht vorhandenen Datei erzeugt Folgendes
Zeile:

lstat("/foo/bar", 0xb004) = -1 ENOENT (Keine solche Datei oder kein Verzeichnis)

In diesem Fall ist das Verandalicht an, aber niemand ist zu Hause.

Zeichenzeiger werden dereferenziert und als C-Strings ausgegeben. Nicht-
Druckzeichen in Zeichenfolgen werden normalerweise durch gewöhnliches C dargestellt
Escape-Codes. Nur der Erste strsize (standardmäßig 32) Bytes von Zeichenfolgen
werden gedruckt; Bei längeren Zeichenfolgen werden nach dem Text Auslassungspunkte angehängt
Schlusszitat. Hier ist eine Zeile von „ls -l“, in der die getpwuid Bibliothek
Routine liest die Passwortdatei:

read(3, "root::0:0:Systemadministrator:/"..., 1024) = 422

Während Strukturen mit geschweiften Klammern kommentiert werden, sind einfache Zeiger und
Arrays werden mit eckigen Klammern und Kommas als Trennzeichen gedruckt
Elemente. Hier ist ein Beispiel für den Befehl „id“ auf einem System mit
zusätzliche Gruppen-IDs:

getgroups(32, [100, 0]) = 2

Andererseits werden Bitmengen auch mit eckigen Klammern angezeigt
Mengenelemente werden nur durch ein Leerzeichen getrennt. Hier ist die Schale
Vorbereitung zur Ausführung eines externen Befehls:

sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0

Hier ist das zweite Argument eine Bitmenge aus zwei Signalen, SIGCHLD und
SIGTTOU. In manchen Fällen ist der Bitsatz so voll, dass das Drucken nicht möglich ist
nicht gesetzte Elemente sind wertvoller. In diesem Fall wird der Bitsatz vorangestellt
durch eine Tilde wie diese:

sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0

Hier repräsentiert das zweite Argument den vollständigen Satz aller Signale.

OPTIONAL


-c Zählen Sie Zeit, Anrufe und Fehler für jeden Systemaufruf
und eine Zusammenfassung beim Beenden des Programms melden. Unter Linux,
Dadurch wird versucht, die Systemzeit (verwendete CPU-Zeit) anzuzeigen
läuft im Kernel) unabhängig von der Wanduhr
Zeit. Wenn -c wird verwendet mit -f or -F (unten), nur
Gesamtsummen für alle verfolgten Prozesse werden gespeichert.

-C Like -c sondern auch die reguläre Ausgabe drucken, während
Prozesse laufen.

-D Führen Sie den Tracer-Prozess als getrenntes Enkelkind aus, nicht als
Elternteil des verfolgten Objekts. Dadurch wird das Sichtbare reduziert
Wirkung von strace indem man den Tracee direkt hält
Kind des aufrufenden Prozesses.

-d Zeigen Sie einige Debugging-Ausgaben von strace sich auf dem
Standart Fehler.

-f Verfolgen Sie untergeordnete Prozesse, während sie erstellt werden
Derzeit verfolgte Prozesse als Ergebnis der
Gabel(2) vgabel(2) und klonen(2) Systemaufrufe. Notiz
zur Abwicklung, Integrierung, Speicherung und -p PID -f hängt alle Threads des Prozesses an
PID, wenn es Multithread ist, nicht nur Thread mit
thread_id = PID.

-ff Besitzt das -o Dateinamen Option gilt jeweils
Der Prozess-Trace wird beschrieben Dateiname.pid wo pid
ist die numerische Prozess-ID jedes Prozesses. Das ist
nicht kompatibel mit -c, da kein Pro-Prozess zählt
werden aufbewahrt.

-F Diese Option ist jetzt veraltet und hat das Gleiche
Funktionalität als -f.

-h Drucken Sie die Hilfezusammenfassung aus.

-i Drucken Sie den Anweisungszeiger zum Zeitpunkt der
Systemaufruf.

-k Drucken Sie den Ausführungs-Stack-Trace des verfolgten Protokolls aus
Prozesse nach jedem Systemaufruf (experimentell).
Diese Option ist nur verfügbar, wenn strace ist gebaut
mit libunwind.

-q Unterdrücken Sie Meldungen zum Anhängen, Trennen usw.
Dies geschieht automatisch, wenn die Ausgabe umgeleitet wird
in eine Datei und der Befehl wird stattdessen direkt ausgeführt
anhängen.

-qq Bei zweimaliger Angabe werden Meldungen über den Prozessabbruch unterdrückt
Status.

-r Drucken Sie beim Betreten jedes Systems einen relativen Zeitstempel aus
Forderung. Dies zeichnet den Zeitunterschied zwischen den auf
Beginn aufeinanderfolgender Systemaufrufe.

-t Vor jeder Zeile des Trace die Uhrzeit voranstellen.

-tt Bei doppelter Angabe wird die angegebene Zeit inklusive angegeben
Mikrosekunden.

-ttt Bei dreimaliger Angabe umfasst die gedruckte Zeit die
Mikrosekunden und der führende Teil wird gedruckt
als Anzahl der Sekunden seit der Epoche.

-T Zeigt die für Systemaufrufe aufgewendete Zeit an. Dies zeichnet auf
der Zeitunterschied zwischen dem Anfang und dem
Ende jedes Systemaufrufs.

-w Fassen Sie den Zeitunterschied zwischen dem Anfang zusammen
und Ende jedes Systemaufrufs. Die Standardeinstellung ist „to“.
Fassen Sie die Systemzeit zusammen.

-v Drucken Sie ungekürzte Versionen von Umgebung, Statistik,
Termios usw. Anrufe. Diese Strukturen sind sehr
kommt bei Anrufen häufig vor und daher wird das Standardverhalten angezeigt
eine sinnvolle Teilmenge von Strukturmitgliedern. Benutze das
Option, um alle blutigen Details zu erfahren.

-V Drucken Sie die Versionsnummer von strace.

-x Gibt alle Nicht-ASCII-Zeichenfolgen als Hexadezimalzeichenfolge aus
Format.

-xx Drucken Sie alle Zeichenfolgen im hexadezimalen Zeichenfolgenformat.

-y Mit dem Dateideskriptor verknüpfte Pfade drucken
Argumente.

-jj IP:Port-Paare drucken, die der Socket-Datei zugeordnet sind
Deskriptoren.

-a Überblick Rückgabewerte in einer bestimmten Spalte ausrichten (Standard).
Spalte 40).

-b Systemaufruf Wenn der angegebene Systemaufruf erreicht ist, trennen Sie sich von der Verfolgung
Verfahren. Derzeit nur ausführen Systemaufruf ist
unterstützt. Diese Option ist nützlich, wenn Sie möchten
Trace-Multithread-Prozess und daher erforderlich
-f, möchte es aber nicht verfolgen (möglicherweise sehr).
komplex) Kinder.

-e ausdr Ein qualifizierender Ausdruck, der welche Ereignisse ändert
aufzuspüren oder wie man sie aufspürt. Das Format der
Ausdruck ist:

[Qualifizierer=][!]value1[,value2] ...

woher Qualifizierer eines von Spur, Abk, ausführlich,
roh, Signal, besuch oder schreiben und Wert ist eine
qualifikatorabhängiges Symbol oder Zahl. Der Standard
Qualifikationsmerkmal ist Spur. Verwendung eines Ausrufezeichens
negiert die Wertemenge. Zum Beispiel, -e XNUMXh geöffnet
bedeutet wörtlich -e Spur=XNUMXh geöffnet was wiederum bedeutet
Verfolgen Sie nur die XNUMXh geöffnet Systemaufruf. Im Gegensatz,
-e Spur=!XNUMXh geöffnet bedeutet, jeden Systemaufruf zu verfolgen
ausgeschlossen XNUMXh geöffnet. Darüber hinaus sind die besonderen Werte alle
und keine haben die offensichtliche Bedeutung.

Beachten Sie, dass einige Shells das Ausrufezeichen verwenden
Geschichtserweiterung auch innerhalb zitierter Argumente. Wenn
Sie müssen also das Ausrufezeichen mit einem maskieren
umgekehrter Schrägstrich.

-e Spur=kompensieren
Verfolgen Sie nur den angegebenen Satz von Systemaufrufen. Die
-c Die Option ist nützlich, um zu bestimmen, welches System verwendet wird
Anrufe könnten nützlich sein, um sie zu verfolgen. Zum Beispiel,
Spur=öffnen, schließen, lesen, schreiben bedeutet nur verfolgen
diese vier Systemaufrufe. Seien Sie vorsichtig bei der Herstellung
Rückschlüsse auf die Benutzer-/Kernel-Grenze, wenn nur a
Eine Teilmenge der Systemaufrufe wird überwacht. Der
Standard ist Spur=alle.

-e Spur=Datei
Verfolgen Sie alle Systemaufrufe, die einen Dateinamen als Dateinamen annehmen
Streit. Sie können sich das als Abkürzung vorstellen
für -e Spur=XNUMXh geöffnet,Zustand,chmod,Verknüpfung aufheben,... welches ist
nützlich, um zu sehen, um welche Dateien es sich handelt
Referenzierung. Darüber hinaus wird die Abkürzung verwendet
sorgt dafür, dass Sie es nicht versehentlich vergessen
Fügen Sie einen Anruf hinzu lstat In der Liste. Betchya
Das hätte ich vergessen.

-e Spur=Prozessdefinierung
Verfolgen Sie alle Systemaufrufe, die einen Prozess betreffen
Management. Dies ist nützlich, um die Gabelung zu beobachten,
Warten und Ausführen von Schritten eines Prozesses.

-e Spur=Netzwerk
Verfolgen Sie alle netzwerkbezogenen Systemaufrufe.

-e Spur=Signal
Verfolgen Sie alle signalbezogenen Systemaufrufe.

-e Spur=ipc
Verfolgen Sie alle IPC-bezogenen Systemaufrufe.

-e Spur=desc
Verfolgen Sie alle Systemaufrufe im Zusammenhang mit Dateideskriptoren.

-e Spur=Erinnerung
Verfolgen Sie alle Systemaufrufe im Zusammenhang mit der Speicherzuordnung.

-e Abk=kompensieren
Verkürzen Sie die Ausgabe durch das Drucken jedes Mitglieds von
große Strukturen. Die Standardeinstellung ist Abk=alledem „Vermischten Geschmack“. Seine
-v Option hat die Wirkung von Abk=keine.

-e ausführlich=kompensieren
Dereferenzierungsstrukturen für die angegebene Menge von
Systemaufrufe. Die Standardeinstellung ist ausführlich=alle.

-e roh=kompensieren Gibt rohe, nicht dekodierte Argumente für den angegebenen Satz aus
von Systemaufrufen. Diese Option hat die Wirkung von
Dadurch werden alle Argumente hexadezimal ausgegeben.
Dies ist vor allem dann nützlich, wenn Sie dem nicht vertrauen
Dekodierung oder Sie müssen die tatsächliche Zahl kennen
Wert eines Arguments.

-e Signal=kompensieren
Verfolgen Sie nur die angegebene Teilmenge der Signale. Der
Standard ist Signal=alle. Beispielsweise, Signal =! SIGIO
(oder Signal=!io) bewirkt, dass SIGIO-Signale nicht
verfolgt.

-e besuch=kompensieren Führen Sie einen vollständigen Hexadezimal- und ASCII-Dump aller Daten durch
Daten, die aus den im aufgeführten Dateideskriptoren gelesen werden
angegebene Menge. Zum Beispiel, um alle Eingaben anzuzeigen
Aktivität auf Dateideskriptoren 3 und 5 -
-e besuch=3,5. Beachten Sie, dass dies unabhängig von der ist
normale Verfolgung der besuch(2) Systemaufruf, der
gesteuert durch die Option -e Spur=besuch.

-e schreiben=kompensieren
Führen Sie einen vollständigen Hexadezimal- und ASCII-Dump aller Daten durch
Daten, die in die im aufgeführten Dateideskriptoren geschrieben werden
angegebene Menge. Zum Beispiel, um alle Ausgaben anzuzeigen
Aktivität auf Dateideskriptoren 3 und 5 -
-e schreiben=3,5. Beachten Sie, dass dies unabhängig von ist
die normale Verfolgung der schreiben(2) Systemaufruf which
wird durch die Option gesteuert -e Spur=schreiben.

-I unterbrechbar
Wenn Strace durch Signale unterbrochen werden kann (z. B
drücken Sie ^C). 1: keine Signale sind blockiert; 2: tödlich
Signale werden während der Dekodierung des Systemaufrufs blockiert
(Standard); 3: Fatale Signale werden immer blockiert
(Standard, wenn '-o FILE PROG'); 4: fatale Signale und
SIGTSTP (^Z) werden immer blockiert (sinnvoll zu machen).
strace -o FILE PROG stoppt nicht bei ^Z).

-o Dateinamen Schreiben Sie die Trace-Ausgabe in die Datei Dateinamen lieber
als zu stderr. Verwenden Dateiname.pid if -ff wird eingesetzt.
Wenn das Argument mit '|' beginnt oder mit '!' dann ist die
Der Rest des Arguments wird als Befehl usw. behandelt
Die Ausgabe wird dorthin weitergeleitet. Das ist praktisch für
Weiterleiten der Debugging-Ausgabe an ein Programm ohne
Auswirkungen auf die Umleitungen ausgeführter Programme.

-O oben Setzen Sie den Overhead für das Tracing von Systemaufrufen auf
oben Mikrosekunden. Dies ist nützlich für
Überschreiben der Standardheuristik zum Erraten, wie
Beim bloßen Messen des Timings wird viel Zeit aufgewendet
Systemaufrufe mit dem -c Möglichkeit. Die Genauigkeit von
Die Heuristik kann anhand der Zeitvorgabe gemessen werden
Programmlauf ohne Ablaufverfolgung (mit Zeit(1)) und
Vergleichen der akkumulierten Systemaufrufzeit mit der
insgesamt produziert mit -c.

-p pid An den Prozess mit der Prozess-ID anhängen pid und
Beginnen Sie mit der Verfolgung. Der Trace kann jederzeit beendet werden
Zeit durch ein Tastatur-Interrupt-Signal (STRG-C).
strace wird darauf reagieren, indem es sich von dem löst
Der/die verfolgte(n) Prozess(e) lässt ihn/sie fortfahren
Betrieb. Mehrere -p Optionen können zum Anhängen verwendet werden
zu vielen Prozessen. -p „pidof PROG“ Syntax ist
unterstützt.

-P Weg Verfolgen Sie nur den Zugriff auf Systemaufrufe Pfad. Mehrere -P
Optionen können verwendet werden, um mehrere Pfade anzugeben.

-s strsize Geben Sie die maximale Zeichenfolgengröße zum Drucken an (die
Der Standardwert ist 32). Beachten Sie, dass dies bei Dateinamen nicht der Fall ist
werden als Zeichenfolgen betrachtet und immer vollständig gedruckt.

-S Sortieren nach Sortieren Sie die Ausgabe des Histogramms, das von der -c
Option nach dem angegebenen Kriterium. Gesetzliche Werte sind
Zeit, Anrufe, Name und nichts (Standard ist Zeit).

-u Benutzername Führen Sie den Befehl mit der Benutzer-ID, der Gruppen-ID und aus
ergänzende Gruppen von Benutzername. Diese Option ist
Nur nützlich, wenn es als Root ausgeführt wird und das aktiviert
Korrekte Ausführung der Setuid- und/oder Setgid-Binärdateien.
Sofern diese Option nicht verwendet wird, werden setuid und setgid verwendet
Programme werden ohne wirksame Berechtigungen ausgeführt.

-E jung=Welle Befehl ausführen mit jung=Welle in seiner Umgebungsliste
Variablen.

-E jung Entfernen jung aus der geerbten Liste der Umgebung
Variablen, bevor sie an den Befehl übergeben werden.

DIAGNOSE


Wann Befehl Ausgänge, strace Exits mit dem gleichen Exit-Status. Wenn
Befehl wird durch ein Signal beendet, strace beendet sich mit
das gleiche Signal, so dass strace kann als Wrapper-Prozess verwendet werden
transparent für den aufrufenden übergeordneten Prozess. Beachten Sie, dass Eltern-
Untergeordnete Beziehung (Signalstoppbenachrichtigungen, getppid()-Wert,
usw.) zwischen dem verfolgten Prozess und seinem übergeordneten Prozess bleiben nicht erhalten
es sei denn -D wird eingesetzt.

Beim Benutzen -p, der Austrittsstatus von strace ist Null, sofern nicht vorhanden
Bei der Ablaufverfolgung ist ein unerwarteter Fehler aufgetreten.

SETUID INSTALLATION


If strace wird setuid als Root installiert und dann der aufrufende Benutzer
wird in der Lage sein, Prozesse eines beliebigen Benutzers anzuhängen und diese zu verfolgen.
Zusätzlich werden setuid- und setgid-Programme ausgeführt und
mit den richtigen effektiven Berechtigungen verfolgt. Da nur Benutzer
Dies sollte einem vertrauenswürdigen Benutzer mit vollständigen Root-Rechten gestattet sein
Dinge, es macht nur Sinn, sie zu installieren strace als setuid zum Rooten
wenn die Benutzer, die es ausführen können, auf diese Benutzer beschränkt sind
die dieses Vertrauen haben. Sinnvoll ist beispielsweise die Installation eines
Sonderversion von strace mit Modus 'rwsr-xr--', Benutzer Wurzel und
Gruppe Spur, wo Mitglieder der Spur Gruppe sind vertrauenswürdige Benutzer.
Wenn Sie diese Funktion nutzen, denken Sie bitte daran, ein nicht
setuid-Version von strace für normale Nutzer zu verwenden.

Nutzen Sie strace64 online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad




×
Werbung
❤ ️Hier einkaufen, buchen oder kaufen – kostenlos, damit die Dienste kostenlos bleiben.