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".
This commit is contained in:
John Baldwin 2018-03-03 21:25:33 -08:00
parent 12279366d7
commit 386a867618
5 changed files with 53 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2018-03-04 John Baldwin <jhb@FreeBSD.org>
* 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.
2018-03-04 John Baldwin <jhb@FreeBSD.org>
* nat/x86-dregs.c (x86_dr_stopped_by_hw_breakpoint): New function.

View File

@ -6,6 +6,12 @@
* 'info proc' now works on running processes on FreeBSD systems and core
files created on FreeBSD systems.
* New commands
set debug fbsd-nat
show debug fbsd-nat
Control display of debugging info regarding the FreeBSD native target.
*** Changes in GDB 8.1
* GDB now supports dynamically creating arbitrary register groups specified

View File

@ -1,3 +1,8 @@
2018-03-04 John Baldwin <jhb@FreeBSD.org>
* gdb.texinfo (Debugging Output): Document "set/show debug
fbsd-nat".
2018-02-19 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.texinfo (Machine Code): Additional information about "info

View File

@ -24554,6 +24554,11 @@ Displays the current state of displaying debugging info about
Turns on or off debugging messages from the FreeBSD LWP debug support.
@item show debug fbsd-lwp
Show the current state of FreeBSD LWP debugging messages.
@item set debug fbsd-nat
@cindex FreeBSD native target debug messages
Turns on or off debugging messages from the FreeBSD native target.
@item show debug fbsd-nat
Show the current state of FreeBSD native target debugging messages.
@item set debug frame
@cindex frame debugging info
Turns on or off display of @value{GDBN} frame debugging info. The

View File

@ -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
}