diff options
author | John Baldwin <jhb@FreeBSD.org> | 2018-03-03 21:25:33 -0800 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2018-03-03 21:25:33 -0800 |
commit | 386a86761838df16c1459275d465ed21a1c35d9f (patch) | |
tree | 5b24b643b0ad42b806439d31fe7977eba55cb6f7 /gdb/fbsd-nat.c | |
parent | 12279366d71627bfbdd74d1a6675dca825d8feca (diff) | |
download | gdb-386a86761838df16c1459275d465ed21a1c35d9f.zip gdb-386a86761838df16c1459275d465ed21a1c35d9f.tar.gz gdb-386a86761838df16c1459275d465ed21a1c35d9f.tar.bz2 |
Add a new debug knob for the FreeBSD native target.
For now this just logs information about the state of the current LWP
for each STOPPED event in fbsd_wait().
gdb/ChangeLog:
* NEWS (Changes since GDB 8.1): Add "set/show debug fbsd-nat".
* fbsd-nat.c (debug_fbsd_nat): New variable.
(show_fbsd_nat_debug): New function.
(fbsd_wait): Log LWP info if "debug_fbsd_nat" is enabled.
(_initialize_fbsd_nat): Add "fbsd-nat" debug boolean command.
gdb/doc/ChangeLog:
* gdb.texinfo (Debugging Output): Document "set/show debug
fbsd-nat".
Diffstat (limited to 'gdb/fbsd-nat.c')
-rw-r--r-- | gdb/fbsd-nat.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index 3a216ab..2516ac5 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -765,6 +765,7 @@ fbsd_xfer_partial (struct target_ops *ops, enum target_object object, #ifdef PT_LWPINFO static int debug_fbsd_lwp; +static int debug_fbsd_nat; static void (*super_resume) (struct target_ops *, ptid_t, @@ -782,6 +783,14 @@ show_fbsd_lwp_debug (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Debugging of FreeBSD lwp module is %s.\n"), value); } +static void +show_fbsd_nat_debug (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Debugging of FreeBSD native target is %s.\n"), + value); +} + /* FreeBSD's first thread support was via a "reentrant" version of libc (libc_r) that first shipped in 2.2.7. This library multiplexed all @@ -1212,6 +1221,18 @@ fbsd_wait (struct target_ops *ops, wptid = ptid_build (pid, pl.pl_lwpid, 0); + if (debug_fbsd_nat) + { + fprintf_unfiltered (gdb_stdlog, + "FNAT: stop for LWP %u event %d flags %#x\n", + pl.pl_lwpid, pl.pl_event, pl.pl_flags); + if (pl.pl_flags & PL_FLAG_SI) + fprintf_unfiltered (gdb_stdlog, + "FNAT: si_signo %u si_code %u\n", + pl.pl_siginfo.si_signo, + pl.pl_siginfo.si_code); + } + #ifdef PT_LWP_EVENTS if (pl.pl_flags & PL_FLAG_EXITED) { @@ -1569,5 +1590,13 @@ Enables printf debugging output."), NULL, &show_fbsd_lwp_debug, &setdebuglist, &showdebuglist); + add_setshow_boolean_cmd ("fbsd-nat", class_maintenance, + &debug_fbsd_nat, _("\ +Set debugging of FreeBSD native target."), _("\ +Show debugging of FreeBSD native target."), _("\ +Enables printf debugging output."), + NULL, + &show_fbsd_nat_debug, + &setdebuglist, &showdebuglist); #endif } |