[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[RFR] man://manpages-de/man2/ptrace.2 (Teil 5)



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


Reply to: