Hallo Mitübersetzer, und angehängt Teil 5 mit der Bitte um konstruktive Kritik. Vielen Dank & Grüße Helge -- Dr. Helge Kreutzmann debian@helgefjell.de Dipl.-Phys. http://www.helgefjell.de/debian.php 64bit GNU powered gpg signed mail preferred Help keep free software "libre": http://www.ffii.de/
#. type: SS #, no-wrap msgid "Syscall-stops" msgstr "Systemaufrufstopps" #. type: Plain text msgid "" "If the tracee was restarted by B<PTRACE_SYSCALL> or B<PTRACE_SYSEMU>, the " "tracee enters syscall-enter-stop just prior to entering any system call " "(which will not be executed if the restart was using B<PTRACE_SYSEMU>, " "regardless of any change made to registers at this point or how the tracee " "is restarted after this stop). No matter which method caused the syscall-" "entry-stop, if the tracer restarts the tracee with B<PTRACE_SYSCALL>, the " "tracee enters syscall-exit-stop when the system call is finished, or if it " "is interrupted by a signal. (That is, signal-delivery-stop never happens " "between syscall-enter-stop and syscall-exit-stop; it happens I<after> " "syscall-exit-stop.). If the tracee is continued using any other method " "(including B<PTRACE_SYSEMU>), no syscall-exit-stop occurs. Note that all " "mentions B<PTRACE_SYSEMU> apply equally to B<PTRACE_SYSEMU_SINGLESTEP.>" msgstr "" "Falls der verfolgte Prozess durch B<PTRACE_SYSCALL> oder B<PTRACE_SYSEMU> " "neu gestartet wurde, gerät der verfolgte Prozess in einen " "Systemaufrufeintrittsstopp kurz vor dem Eintritt in irgendeinen Systemaufruf " "(der nicht ausgeführt wird, falls der Neustart B<PTRACE_SYSEMU> verwandte, " "unabhängig von allen Änderungen, die zu diesem Zeitpunkt an den Registern " "vorgenommen wurden oder wie der verfolgte Prozess nach diesem Stopp neu " "gestartet wird). Unabhängig davon, welche Methode den " "Systemaufrufeintrittsstopp verursachte, falls der Verfolger den verfolgten " "Prozess mit B<PTRACE_SYSCALL> neu startet, gerät der verfolgte Prozess in " "einen Systemaufrufbeendigungsstopp, wenn der Systemaufruf beendet ist oder " "falls er durch ein Signal unterbrochen wurde. (Sprich, der Signallieferstopp " "tritt nie zwischen Systemaufrufeintrittsstopp und " "Systemaufrufbeendigungsstopp auf; er findet I<nach> dem " "Systemaufrufbeendigungsstopp statt.) Falls der verfolgte Prozess mittels " "irgendeiner anderen Methode fortgesetzt wird (einschließlich " "B<PTRACE_SYSEMU>) erfolgt kein Systemaufrufbeendigungsstop. Beachten Sie, " "dass alle Erwähnungen von B<PTRACE_SYSEMU> genauso auf " "B<PTRACE_SYSEMU_SINGLESTEP> zutreffen." # FIXME Superfluous space before second comma #. type: Plain text msgid "" "However, even if the tracee was continued using B<PTRACE_SYSCALL> , it is " "not guaranteed that the next stop will be a syscall-exit-stop. Other " "possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop " "(including seccomp stops), exit (if it entered B<_exit>(2) or " "B<exit_group>(2)), be killed by B<SIGKILL>, or die silently (if it is a " "thread group leader, the B<execve>(2) happened in another thread, and that " "thread is not traced by the same tracer; this situation is discussed later)." msgstr "" "Selbst falls der verfolgte Prozess mittels B<PTRACE_SYSCALL> fortgesetzt " "wird, wird nicht garantiert, dass der nächste Stopp ein " "Systemaufrufbeendigungsstopp sein wird. Andere Möglichkeiten sind, dass der " "verfolgte Prozess in einem B<PTRACE_EVENT>-Stopp (einschließlich Seccomp-" "Stopp) stoppen könnte, endet (falls er in B<_exit>(2) oder B<exit_group>(2) " "eintritt), durch B<SIGKILL> gekillt wird oder leise stirbt (falls er die " "Thread-Gruppe anführt, kommt das B<execve>(2) in einem anderen Thread vor " "und der Thread wird nicht vom selben Verfolger verfolgt; diese Situation " "wird später besprochen)." #. type: Plain text msgid "" "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as " "B<waitpid>(2) returning with I<WIFSTOPPED(status)> true, and " "I<WSTOPSIG(status)> giving B<SIGTRAP>. If the B<PTRACE_O_TRACESYSGOOD> " "option was set by the tracer, then I<WSTOPSIG(status)> will give the value " "I<(SIGTRAP\\ |\\ 0x80)>." msgstr "" "Systemaufrufeintrittsstopp und Systemaufrufbeendigungsstopp werden vom " "Verfolger als B<waitpid>(2) beobachtet, kehren mit " "»I<WIFSTOPPED(status)> true« zurück und I<WSTOPSIG(status)> gibt B<SIGTRAP> " "zurück. Falls die Option B<PTRACE_O_TRACESYSGOOD> durch den Verfolger " "gesetzt wurde, wird I<WSTOPSIG(status)> den Wert I<(SIGTRAP\\ |\\ 0x80)> " "zurückgeben." #. type: Plain text msgid "" "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> " "by querying B<PTRACE_GETSIGINFO> for the following cases:" msgstr "" "Systemaufrufstopps können von Signallieferstopps mit B<SIGTRAP> durch " "Abfrage von B<PTRACE_GETSIGINFO> für die folgenden Fälle unterschieden " "werden:" #. type: TP #, no-wrap msgid "I<si_code> E<lt>= 0" msgstr "I<si_code> E<lt>= 0" #. type: Plain text msgid "" "B<SIGTRAP> was delivered as a result of a user-space action, for example, a " "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of " "a POSIX timer, change of state on a POSIX message queue, or completion of an " "asynchronous I/O request." msgstr "" "B<SIGTRAP> wurde mit einem Ergebnis einer Anwendungsraumaktion, zum Beispiel " "einem Systemaufruf ((B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), Ablauf " "eines POSIX-Timers, Statusänderung einer POSIX-Nachrichtenwarteschlange " "oder Vervollständigung einer asynchronen E/A-Anfrage geliefert." #. type: TP #, no-wrap msgid "I<si_code> == SI_KERNEL (0x80)" msgstr "I<si_code> == SI_KERNEL (0x80)" #. type: Plain text msgid "B<SIGTRAP> was sent by the kernel." msgstr "B<SIGTRAP> wurde vom Kernel gesandt." #. type: TP #, no-wrap msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)" msgstr "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)" #. type: Plain text msgid "This is a syscall-stop." msgstr "Dies ist ein Systemaufrufstopp." #. type: Plain text msgid "" "However, syscall-stops happen very often (twice per system call), and " "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat " "expensive." msgstr "" "Systemaufrufstopps kommen jedoch sehr oft vor (zweimal pro Systemaufruf) und " "das Ausführen von B<PTRACE_GETSIGINFO> für jeden Systemaufrufstopp könnte " "etwas aufwendig sein." #. type: Plain text msgid "" "Some architectures allow the cases to be distinguished by examining " "registers. For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-" "stop. Since B<SIGTRAP> (like any other signal) always happens I<after> " "syscall-exit-stop, and at this point I<rax> almost never contains -" "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-" "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" " "and can be detected this way. But such detection is fragile and is best " "avoided." msgstr "" "Einige Architekturen erlauben, die Fälle durch Untersuchen der Register zu " "unterscheiden. Zum Beispiel auf x86, I<rax> == -B<ENOSYS> im " "Systemaufrufeintrittsstopp. Da B<SIGTRAP> (wie jedes andere Signal) immer " "I<nach> dem Systemaufrufbeendigungsstopp auftritt und I<rax> an diesem Punkt " "fast nie B<ENOSYS> enthält, sieht das B<SIGTRAP> aus wie ein " "»Systemaufrufstopp, der kein Systemaufrufeintrittsstopp« ist; in anderen " "Worten, er sieht aus wie ein »herrenloser Systemaufrufbeendigungsstopp« und " "kann auf diese Art entdeckt werden. Aber eine solche Entdeckung ist fragil " "und wird am besten vermieden." #. type: Plain text msgid "" "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to " "distinguish syscall-stops from other kinds of ptrace-stops, since it is " "reliable and does not incur a performance penalty." msgstr "" "Die Benutzung der Option B<PTRACE_O_TRACESYSGOOD> ist die empfohlene " "Methode, um Systemaufrufstopps von anderen Arten der Ptrace-Stopps zu " "unterscheiden, da sie zuverlässig ist und sich keine Leistungseinbuße " "zuzieht." #. type: Plain text msgid "" "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each " "other by the tracer. The tracer needs to keep track of the sequence of " "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-" "stop or vice versa. In general, a syscall-enter-stop is always followed by " "syscall-exit-stop, B<PTRACE_EVENT> stop, or the tracee's death; no other " "kinds of ptrace-stop can occur in between. However, note that seccomp stops " "(see below) can cause syscall-exit-stops, without preceding syscall-entry-" "stops. If seccomp is in use, care needs to be taken not to misinterpret " "such stops as syscall-entry-stops." msgstr "" "Systemaufrufeintrittsstopp und Systemaufrufbeendigungsstopp sind für den " "Verfolger nicht voneinander zu unterscheiden. Der Verfolger muss den " "Überblick über die Abfolge der Ptrace-Stopps behalten, um nicht den " "Systemaufrufeintrittsstopp fälschlicherweise als " "Systemaufrufbeendigungsstopp oder umgekehrt zu interpretieren. Im " "Allgemeinen folgt diesem Systemaufrufeintrittsstopp immer ein " "Systemaufrufbeendigungsstopp, B<PTRACE_EVENT>-Stopp oder der Tod des " "verfolgten Prozesses; dazwischen können keine anderen Arten von Ptrace-" "Stopps auftreten. Beachten Sie allerdings, dass Seccomp-Stopps (siehe unten) " "Systemaufrufbeendigungsstopps ohne vorhergehende Systemaufrufeintrittsstopps " "hervorufen können. Falls Seccomp verwandt wird, muss Sorgfalt eingesetzt " "werden, um solche Stopps nicht als Systemaufrufeintrittsstopps " "miszuinterpretieren." #. type: Plain text msgid "" "If after syscall-enter-stop, the tracer uses a restarting command other than " "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated." msgstr "" "Falls der Verfolger nach dem Systemaufrufeintrittsstopp einen anderen Befehl " "zum Neustarten als B<PTRACE_SYSCALL> verwendet, wird der " "Systemaufrufbeendigungsstopp nicht erzeugt." #. type: Plain text msgid "" "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, " "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>." msgstr "" "B<PTRACE_GETSIGINFO> auf Systemaufrufstopps gibt B<SIGTRAP> in I<si_signo> " "zurück, wobei I<si_code> auf B<SIGTRAP> oder I<(SIGTRAP|0x80)> gesetzt ist." #. type: SS #, no-wrap msgid "PTRACE_EVENT_SECCOMP stops (Linux 3.5 to 4.7)" msgstr "PTRACE_EVENT_SECCOMP-Stopps (Linux 3.5 bis 4.7)" #. type: Plain text msgid "" "The behavior of B<PTRACE_EVENT_SECCOMP> stops and their interaction with " "other kinds of ptrace stops has changed between kernel versions. This " "documents the behavior from their introduction until Linux 4.7 (inclusive). " "The behavior in later kernel versions is documented in the next section." msgstr "" "Das Verhalten von B<PTRACE_EVENT_SECCOMP>-Stopps und seine Wechselwirkung " "mit anderen Arten von Ptrace-Stopps hat sich zwischen Kernel-Versionen " "geändert. Hier wird das Verhalten von seiner Einführung bis Linux 4.7 " "(einschließlich) beschrieben. Das Verhalten in neueren Kernelversionen wird " "im nächsten Abschnitt beschrieben." #. type: Plain text msgid "" "A B<PTRACE_EVENT_SECCOMP> stop occurs whenever a B<SECCOMP_RET_TRACE> rule " "is triggered. This is independent of which methods was used to restart the " "system call. Notably, seccomp still runs even if the tracee was restarted " "using B<PTRACE_SYSEMU> and this system call is unconditionally skipped." msgstr "" "Ein B<PTRACE_EVENT_SECCOMP>-Stopp erfolgt, wannimmer eine " "B<SECCOMP_RET_TRACE>-Regel ausgelöst wird. Dies ist von der Methode, die zum " "Neustart des Systemaufrufes verwandt wurde, unabhängig. Insbesondere läuft " "Seccomp immer noch, selbst falls der verfolgte Prozess mittels " "B<PTRACE_SYSEMU> neu gestartet wurde und dieser Systemaufruf wird " "bedingungslos übersprungen." #. type: Plain text msgid "" "Restarts from this stop will behave as if the stop had occurred right before " "the system call in question. In particular, both B<PTRACE_SYSCALL> and " "B<PTRACE_SYSEMU> will normally cause a subsequent syscall-entry-stop. " "However, if after the B<PTRACE_EVENT_SECCOMP> the system call number is " "negative, both the syscall-entry-stop and the system call itself will be " "skipped. This means that if the system call number is negative after a " "B<PTRACE_EVENT_SECCOMP> and the tracee is restarted using B<PTRACE_SYSCALL,> " "the next observed stop will be a syscall-exit-stop, rather than the syscall-" "entry-stop that might have been expected." msgstr "" "Neustarts aus diesem Stopp verhalten sich so, als ob der Stopp direkt vor " "dem in Frage stehenden Systemaufruf stattgefunden hätte. Insbesondere werden " "sowohl B<PTRACE_SYSCALL> als auch B<PTRACE_SYSEMU> normalerweise einen " "folgenden Systemaufrufeintrittsstopp auslösen. Falls allerdings nach dem " "B<PTRACE_EVENT_SECCOMP> die Systemaufrufnummer negativ ist, werden sowohl " "der Systemaufrufeintrittsstopp als auch der Systemaufruf selbst " "übersprungen. Das bedeutet, dass falls die Systemaufrufnummer nach dem " "B<PTRACE_EVENT_SECCOMP> negativ ist und der verfolgte Prozess mittels " "B<PTRACE_SYSCALL> neu gestartet wird der nächste beobachtete Stopp ein " "Systemaufrufbeendigungsstopp statt des vielleicht erwarteten " "Systemaufrufeintrittsstopps sein wird." #. type: SS #, no-wrap msgid "PTRACE_EVENT_SECCOMP stops (since Linux 4.8)" msgstr "PTRACE_EVENT_SECCOMP-Stopps (seit Linux 4.8)" #. commit 93e35efb8de45393cf61ed07f7b407629bf698ea #. type: Plain text msgid "" "Starting with Linux 4.8, the B<PTRACE_EVENT_SECCOMP> stop was reordered to " "occur between syscall-entry-stop and syscall-exit-stop. Note that seccomp " "no longer runs (and no B<PTRACE_EVENT_SECCOMP> will be reported) if the " "system call is skipped due to B<PTRACE_SYSEMU>." msgstr "" "Beginnend mit Linux 4.8 wurde der Stopp B<PTRACE_EVENT_SECCOMP> neu " "geordnet, so dass er zwischen Systemaufrufeintrittsstopp und " "Systemaufrufbeendigungsstopp auftritt. Beachten Sie, dass Seccomp nicht " "länger ausgeführt wird (und kein B<PTRACE_EVENT_SECCOMP> berichtet wird) " "falls der Systemaufruf aufgrund B<PTRACE_SYSEMU> übersprungen wird." #. type: Plain text msgid "" "Functionally, a B<PTRACE_EVENT_SECCOMP> stop functions comparably to a " "syscall-entry-stop (i.e., continuations using B<PTRACE_SYSCALL> will cause " "syscall-exit-stops, the system call number may be changed and any other " "modified registers are visible to the to-be-executed system call as well). " "Note that there may be, but need not have been a preceding syscall-entry-" "stop." msgstr "" "Funktional arbeitet B<PTRACE_EVENT_SECCOMP>-Stopp vergleichbar mit einem " "Systemaufrufeintrittsstopp (d.h. Fortsetzungen mittels B<PTRACE_SYSCALL> " "werden einen Systemaufrufbeendigungsstopp auslösen, die Systemaufrufnummer " "könnte sich ändern und alle anderen veränderten Register sind im gleich " "auszuführenden Systemaufruf ebenfalls sichtbar). Beachten Sie, dass es einen " "vorhergehenden Systemaufrufeintrittsstopp gegeben haben kann, aber nicht " "muss." #. type: Plain text msgid "" "After a B<PTRACE_EVENT_SECCOMP> stop, seccomp will be rerun, with a " "B<SECCOMP_RET_TRACE> rule now functioning the same as a " "B<SECCOMP_RET_ALLOW>. Specifically, this means that if registers are not " "modified during the B<PTRACE_EVENT_SECCOMP> stop, the system call will then " "be allowed." msgstr "" "Nach einem Stopp B<PTRACE_EVENT_SECCOMP> wird Seccomp mit einer Regel " "B<SECCOMP_RET_TRACE>, die identissch zu einer B<SECCOMP_RET_ALLOW> " "funktioniert, erneut ausgeführt. Insbesondere bedeutet dies, dass falls " "Register nicht während des Stopps B<PTRACE_EVENT_SECCOMP> verändert wurden, " "der Systemaufruf dann erlaubt wird." #. type: SS #, no-wrap msgid "PTRACE_SINGLESTEP stops" msgstr "PTRACE_SINGLESTEP-Stopps" # #. FIXME . #. document stops occurring with PTRACE_SINGLESTEP #. type: Plain text msgid "[Details of these kinds of stops are yet to be documented.]" msgstr "[Einzelheiten dieser Arten von Stopps sind noch nicht dokumentiert.]" #. type: SS #, no-wrap msgid "Informational and restarting ptrace commands" msgstr "Benachrichtigende und neustartende Ptrace-Befehle" #. type: Plain text msgid "" "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, " "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>) require the " "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>." msgstr "" "Die meisten Ptrace-Befehle (alle außer B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, " "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT> und B<PTRACE_KILL>) erfordern, dass " "der verfolgte Prozess in einem Ptrace-Stopp ist, andernfalls scheitern sie " "mit B<ESRCH>." #. type: Plain text msgid "" "When the tracee is in ptrace-stop, the tracer can read and write data to the " "tracee using informational commands. These commands leave the tracee in " "ptrace-stopped state:" msgstr "" "Wenn der verfolgte Prozess im Ptrace-Stopp ist, kann der Verfolger Daten des " "verfolgten Prozesses mittels benachrichtigenden Befehlen lesen und " "schreiben. Diese Befehle belassen den verfolgten Prozess im Status Ptrace-" "gestoppt:" #. type: Plain text #, no-wrap msgid "" " ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n" " ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n" " ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n" " ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n" " ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n" " ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n" " ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n" " ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n" " ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n" " ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" msgstr "" " ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, PID, Adresse, 0);\n" " ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, PID, Adresse, long_val);\n" " ptrace(PTRACE_GETREGS/GETFPREGS, PID, 0, &struct);\n" " ptrace(PTRACE_SETREGS/SETFPREGS, PID, 0, &struct);\n" " ptrace(PTRACE_GETREGSET, PID, NT_foo, &iov);\n" " ptrace(PTRACE_SETREGSET, PID, NT_foo, &iov);\n" " ptrace(PTRACE_GETSIGINFO, PID, 0, &siginfo);\n" " ptrace(PTRACE_SETSIGINFO, PID, 0, &siginfo);\n" " ptrace(PTRACE_GETEVENTMSG, PID, 0, &long_var);\n" " ptrace(PTRACE_SETOPTIONS, PID, 0, PTRACE_O_flags);\n" #. type: Plain text msgid "" "Note that some errors are not reported. For example, setting signal " "information (I<siginfo>) may have no effect in some ptrace-stops, yet the " "call may succeed (return 0 and not set I<errno>); querying " "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current " "ptrace-stop is not documented as returning a meaningful event message." msgstr "" "Beachten Sie, dass einige Fehler nicht gemeldet wurden. Das Setzen des " "Informationssignals (I<siginfo>) hat zum Beispiel in einigen Ptrace-Stopps " "möglicherweise keine Auswirkungen, der Aufruf kann jedoch erfolgreich sein " "(0 zurückgeben und I<errno> nicht setzen); Abfragen von " "B<PTRACE_GETEVENTMSG> könnte erfolgreich sein und einen zufälligen Wert " "zurückgeben, falls der aktuelle Ptrace-Stopp nicht dokumentiert ist, um eine " "aussagekräftige Ereignisnachricht zuückzugeben." #. type: Plain text msgid "The call" msgstr "Der Aufruf" #. type: Plain text #, no-wrap msgid " ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" msgstr " ptrace(PTRACE_SETOPTIONS, PID, 0, PTRACE_O_flags);\n" #. type: Plain text msgid "" "affects one tracee. The tracee's current flags are replaced. Flags are " "inherited by new tracees created and \"auto-attached\" via active " "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> " "options." msgstr "" "beeinflusst einen verfolgten Prozess. Die aktuellen Schalter des verfolgten " "Prozesses werden ersetzt. Schalter werden geerbt durch neu erzeugte Prozesse " "und »automatisch angehängt« über aktive B<PTRACE_O_TRACEFORK>-, " "B<PTRACE_O_TRACEVFORK>- oder B<PTRACE_O_TRACECLONE>-Optionen." #. type: Plain text msgid "" "Another group of commands makes the ptrace-stopped tracee run. They have " "the form:" msgstr "" "Eine weitere Gruppe von Befehlen lässt die per Ptrace gestoppten, verfolgten " "Prozesse laufen. Sie haben die Form:" #. type: Plain text #, no-wrap msgid " ptrace(cmd, pid, 0, sig);\n" msgstr " ptrace(Befehl, PID, 0, Signal);\n" #. type: Plain text msgid "" "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, " "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or " "B<PTRACE_SYSEMU_SINGLESTEP>. If the tracee is in signal-delivery-stop, " "I<sig> is the signal to be injected (if it is nonzero). Otherwise, I<sig> " "may be ignored. (When restarting a tracee from a ptrace-stop other than " "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)" msgstr "" "wobei I<Befehl> B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, " "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU> oder " "B<PTRACE_SYSEMU_SINGLESTEP> ist. Falls der verfolgte Prozess sich im " "Signallieferstopp befindet, ist I<Signal> das Signal, das eingespeist wird " "(falls es ungleich Null ist). Andernfalls kann I<Signal> ignoriert werden. " "(Wenn ein verfolgter Prozess von einem anderen Ptrace-Stopp als dem " "Signallieferstopp neu gestartet wird, ist die empfohlene Vorgehensweise, 0 " "in I<Signal> zu übergeben.)" #. type: SS #, no-wrap msgid "Attaching and detaching" msgstr "Anhängen und Loslösen" #. type: Plain text msgid "A thread can be attached to the tracer using the call" msgstr "Ein Thread kann an den Verfolger angehängt werden mit dem Aufruf" #. type: Plain text #, no-wrap msgid " ptrace(PTRACE_ATTACH, pid, 0, 0);\n" msgstr " ptrace(PTRACE_ATTACH, PID, 0, 0);\n" #. type: Plain text msgid "or" msgstr "oder" #. type: Plain text #, no-wrap msgid " ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n" msgstr " ptrace(PTRACE_SEIZE, PID, 0, PTRACE_O_flags);\n" # #. FIXME Describe how to attach to a thread which is already group-stopped. #. type: Plain text msgid "" "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread. If the tracer wants this " "B<SIGSTOP> to have no effect, it needs to suppress it. Note that if other " "signals are concurrently sent to this thread during attach, the tracer may " "see the tracee enter signal-delivery-stop with other signal(s) first! The " "usual practice is to reinject these signals until B<SIGSTOP> is seen, then " "suppress B<SIGSTOP> injection. The design bug here is that a ptrace attach " "and a concurrently delivered B<SIGSTOP> may race and the concurrent " "B<SIGSTOP> may be lost." msgstr "" "B<PTRACE_ATTACH> sendet außerdem B<SIGSTOP> an diesen Thread. Falls der " "Verfolger möchte, dass dieser B<SIGSTOP> keine Auswirkungen hat, muss er ihn " "unterdrücken. Beachten Sie, dass der Verfolger, falls während des Anhängens " "gleichzeitig weitere Signale an diesen Thread gesandt werden, den Eintritt " "in den Signallieferstopp mit anderen Signalen zuerst sieht! Die übliche " "Vorgehensweise ist, diese Signale neu einzuspeisen, bis B<SIGSTOP> gesehen " "wird und dann die Einspeisung von B<SIGSTOP> zu unterdrücken. Der " "Entwurfsfehler ist hierbei, dass sich ein Ptrace-Anhängen und ein " "gleichzeitig gesandtes B<SIGSTOP> einen Wettlauf liefern und das " "gleichzeitige B<SIGSTOP> verloren gegangen sein kann." #. type: Plain text msgid "" "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this " "may cause a stray B<EINTR> return from the currently executing system call " "in the tracee, as described in the \"Signal injection and suppression\" " "section." msgstr "" "Da Anhängen B<SIGSTOP> sendet und der Verfolger es üblicherweise " "unterdrückt, könnte dies zu einer herrenlosen B<EINTR>-Rückgabe vom aktuell " "ausgeführten Systemaufruf in diesem verfolgten Prozess führen, wie er im " "Abschnitt »Signaleinspeisung und -unterdrückung« beschrieben wird." #. type: Plain text msgid "" "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>. " "B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it " "after attach (or at any other time) without sending it any signals, use " "B<PTRACE_INTERRUPT> command." msgstr "" "Seit Linux 3.4 kann B<PTRACE_SEIZE> anstelle von B<PTRACE_ATTACH> benutzt " "werden. B<PTRACE_SEIZE> stoppt nicht den angehängten Prozess. Falls Sie ihn " "nach dem Anhängen (oder zu einem anderen Zeitpunkt) stoppen wollen ohne " "irgendwelche Signale zu senden, verwenden Sie den Befehl B<PTRACE_INTERRUPT>." #. type: Plain text msgid "The request" msgstr "Die Anfrage" #. type: Plain text #, no-wrap msgid " ptrace(PTRACE_TRACEME, 0, 0, 0);\n" msgstr " ptrace(PTRACE_TRACEME, 0, 0, 0);\n" #. type: Plain text msgid "" "turns the calling thread into a tracee. The thread continues to run " "(doesn't enter ptrace-stop). A common practice is to follow the " "B<PTRACE_TRACEME> with" msgstr "" "verwandelt den aufrufenden Thread in einen verfolgten Prozess. Der Thread " "fährt mit der Ausführung fort (gerät nicht in den Ptrace-Stopp). Eine " "übliche Vorgehensweise besteht darin, B<PTRACE_TRACEME> mit" #. type: Plain text #, no-wrap msgid " raise(SIGSTOP);\n" msgstr " raise(SIGSTOP);\n" #. type: Plain text msgid "" "and allow the parent (which is our tracer now) to observe our signal-" "delivery-stop." msgstr "" "zu folgen und dem Elternprozess (der nun der Verfolger ist) zu ermöglichen, " "den Signallieferstopp zu beobachten." #. type: Plain text msgid "" "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or " "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, " "respectively, B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> flag, " "B<fork>(2) or B<clone>(2) with the exit signal set to B<SIGCHLD>, and " "other kinds of B<clone>(2), are automatically attached to the same tracer " "which traced their parent. B<SIGSTOP> is delivered to the children, causing " "them to enter signal-delivery-stop after they exit the system call which " "created them." msgstr "" "Falls die Optionen B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK> oder " "B<PTRACE_O_TRACECLONE> in Kraft sind, werden Kindprozesse mit B<vfork>(2), " "beziehungsweise B<clone>(2) mit dem Schalter B<CLONE_VFORK>, B<fork>(2) oder " "B<clone>(2) mit auf B<SIGCHLD> gesetztem Beendigungssignal und anderen Arten " "von B<clone>(2) automatisch an den gleichen Verfolger angehängt, der ihren " "Elternprozess verfolgte. B<SIGSTOP> wird an die Kindprozesse gesandt, was " "sie veranlasst, in einen Signallieferstopp zu gelangen, nachdem sie den " "Systemaufruf beenden, der sie erzeugt hat."
Attachment:
signature.asc
Description: Digital signature