[PATCH] Add gdb remote protocol handling to strace
scox at redhat.com
Wed Sep 25 13:29:26 UTC 2019
This is the latest version of the gdbserver backend patch.
It also adds a ptrace instantiation of the backend dispatch
mechanism added for the gdbserver backend. It is a large patch
but much of it is boilerplate changes due to adding and use of the
tracing_backend struct. The code is located on the branch 'gdbserver0'
in the repository:
There is a copr build here:
Thanks to Eugene Syromiatnikov for suggestions and coding effort on the
ptrace instantiation of the backend dispatch mechanism.
(The backend piece could be split out as a separate piece to simplify
configure*: configure support
struct tracing_backend: backend dispatch table. All of the
versions of these routines are independent and self contained except
for get_regs which needs access to the register structures
Any change not mentioned is only a change to allow for calling via a
ptrace instantiation of tracing_backend. It dispatches to existing
dispatch to the ptrace_* routines defined in ptrace_backend.h
Add 'G' option to indicate how to connect to gdbs backend
start_init invokes gdbserver, startup_child, startup_attach (via
attach_tcb) start or connect to the child,
invoke backend.get_regs, which needs to access the iovec. gdbserver
does not require a separate routine to get the syscall number.
the gdbserver of the backend methods are defined here. Communicates
with gdbserver via the gdb remote protocol and converts to the
packets that strace expects. gdbserver has a syscall mode that
returns information on syscalls via stop packets. gdbserver has two
protocol modes, all stop and non stop; both are supported.
support routines: gdb remote packets are deciphered here
gdb to native signal translation
Gets the register set from gdbserver and converts to strace structures.
Adds a gdbserver specific syscall test. The test is a gdb/gdbserver
-tests/gen_tests.in / tests/gen_tests.sh
The gen_tests are also run in gdbserver mode. Some of the tests do not
work in the gdbserver environment so they are "blacklisted" with
Adds run_strace_gdbserver and run_strace_gdbserver_match_diff
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 138665 bytes
Desc: not available
More information about the Strace-devel