[Debugging output] Make remote packet truncation length adjustable
While debugging, i felt the need to adjust the truncation length of remote packets so i could see more or less data as needed. The default is currently set to 512 bytes. This patch makes this option adjustable through the new "set debug remote-packet-max-chars" command. It can be set to unlimited if we want to completely disable truncation. Update on v5: - Adjusted function and variable documentation, NEWS entry and GDB manual. gdb/ChangeLog: 2019-11-25 Luis Machado <luis.machado@linaro.org> * NEWS (New Commands): Mention "set debug remote-packet-max-chars". * remote.c (REMOTE_DEBUG_MAX_CHAR): Remove. (remote_packet_max_chars): New static global. (show_remote_packet_max_chars): New function. (remote_target::putpkt_binary): Adjust to use new remote_packet_max_chars option. (remote_target::getpkt_or_notif_sane_1): Likewise. (_initialize_remote): Register new remote-packet-max-chars option. gdb/doc/ChangeLog: 2019-11-25 Luis Machado <luis.machado@linaro.org> * gdb.texinfo (Debugging Output): Document set debug remote-packet-max-chars. Change-Id: I2e871b37bfcaa6376537c3fe3db8f016dd806a7c
This commit is contained in:
parent
bb2942085c
commit
6cc8564b9a
@ -1,3 +1,14 @@
|
||||
2019-11-25 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* NEWS (New Commands): Mention "set debug remote-packet-max-chars".
|
||||
* remote.c (REMOTE_DEBUG_MAX_CHAR): Remove.
|
||||
(remote_packet_max_chars): New static global.
|
||||
(show_remote_packet_max_chars): New function.
|
||||
(remote_target::putpkt_binary): Adjust to use new
|
||||
remote_packet_max_chars option.
|
||||
(remote_target::getpkt_or_notif_sane_1): Likewise.
|
||||
(_initialize_remote): Register new remote-packet-max-chars option.
|
||||
|
||||
2019-11-24 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* m68k-linux-nat.c: Include gdbarch.h.
|
||||
|
6
gdb/NEWS
6
gdb/NEWS
@ -186,6 +186,12 @@ info module variables [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP]
|
||||
TYPE_REGEXP matches against the variable type, and REGEXP matches
|
||||
against the variable name.
|
||||
|
||||
set debug remote-packet-max-chars
|
||||
show debug remote-packet-max-chars
|
||||
Controls the number of characters to output in a remote packet when using
|
||||
"set debug remote".
|
||||
The default is 512 bytes.
|
||||
|
||||
* Changed commands
|
||||
|
||||
help
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-11-25 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* gdb.texinfo (Debugging Output): Document set debug
|
||||
remote-packet-max-chars.
|
||||
|
||||
2019-11-14 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* gdb.texinfo: Fix typos.
|
||||
|
@ -26274,6 +26274,19 @@ the serial line to the remote machine. The info is printed on the
|
||||
@item show debug remote
|
||||
Displays the state of display of remote packets.
|
||||
|
||||
@item set debug remote-packet-max-chars
|
||||
Sets the maximum number of characters to display for each remote packet when
|
||||
@code{set debug remote} is on. This is useful to prevent @value{GDBN} from
|
||||
displaying lengthy remote packets and polluting the console.
|
||||
|
||||
The default value is @code{512}, which means @value{GDBN} will truncate each
|
||||
remote packet after 512 bytes.
|
||||
|
||||
Setting this option to @code{unlimited} will disable truncation and will output
|
||||
the full length of the remote packets.
|
||||
@item show debug remote-packet-max-chars
|
||||
Displays the number of bytes to output for remote packet debugging.
|
||||
|
||||
@item set debug separate-debug-file
|
||||
Turns on or off display of debug output about separate debug file search.
|
||||
@item show debug separate-debug-file
|
||||
|
55
gdb/remote.c
55
gdb/remote.c
@ -1041,11 +1041,6 @@ static struct cmd_list_element *remote_show_cmdlist;
|
||||
|
||||
static bool use_range_stepping = true;
|
||||
|
||||
/* The max number of chars in debug output. The rest of chars are
|
||||
omitted. */
|
||||
|
||||
#define REMOTE_DEBUG_MAX_CHAR 512
|
||||
|
||||
/* Private data that we'll store in (struct thread_info)->priv. */
|
||||
struct remote_thread_info : public private_thread_info
|
||||
{
|
||||
@ -1712,6 +1707,23 @@ show_hardware_breakpoint_limit (struct ui_file *file, int from_tty,
|
||||
"breakpoints is %s.\n"), value);
|
||||
}
|
||||
|
||||
/* Controls the maximum number of characters to display in the debug output
|
||||
for each remote packet. The remaining characters are omitted. */
|
||||
|
||||
static int remote_packet_max_chars = 512;
|
||||
|
||||
/* Show the maximum number of characters to display for each remote packet
|
||||
when remote debugging is enabled. */
|
||||
|
||||
static void
|
||||
show_remote_packet_max_chars (struct ui_file *file, int from_tty,
|
||||
struct cmd_list_element *c,
|
||||
const char *value)
|
||||
{
|
||||
fprintf_filtered (file, _("Number of remote packet characters to "
|
||||
"display is %s.\n"), value);
|
||||
}
|
||||
|
||||
long
|
||||
remote_target::get_memory_write_packet_size ()
|
||||
{
|
||||
@ -9119,15 +9131,21 @@ remote_target::putpkt_binary (const char *buf, int cnt)
|
||||
*p = '\0';
|
||||
|
||||
int len = (int) (p - buf2);
|
||||
int max_chars;
|
||||
|
||||
if (remote_packet_max_chars < 0)
|
||||
max_chars = len;
|
||||
else
|
||||
max_chars = remote_packet_max_chars;
|
||||
|
||||
std::string str
|
||||
= escape_buffer (buf2, std::min (len, REMOTE_DEBUG_MAX_CHAR));
|
||||
= escape_buffer (buf2, std::min (len, max_chars));
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog, "Sending packet: %s", str.c_str ());
|
||||
|
||||
if (len > REMOTE_DEBUG_MAX_CHAR)
|
||||
if (len > max_chars)
|
||||
fprintf_unfiltered (gdb_stdlog, "[%d bytes omitted]",
|
||||
len - REMOTE_DEBUG_MAX_CHAR);
|
||||
len - max_chars);
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog, "...");
|
||||
|
||||
@ -9563,16 +9581,23 @@ remote_target::getpkt_or_notif_sane_1 (gdb::char_vector *buf,
|
||||
{
|
||||
if (remote_debug)
|
||||
{
|
||||
int max_chars;
|
||||
|
||||
if (remote_packet_max_chars < 0)
|
||||
max_chars = val;
|
||||
else
|
||||
max_chars = remote_packet_max_chars;
|
||||
|
||||
std::string str
|
||||
= escape_buffer (buf->data (),
|
||||
std::min (val, REMOTE_DEBUG_MAX_CHAR));
|
||||
std::min (val, max_chars));
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog, "Packet received: %s",
|
||||
str.c_str ());
|
||||
|
||||
if (val > REMOTE_DEBUG_MAX_CHAR)
|
||||
if (val > max_chars)
|
||||
fprintf_unfiltered (gdb_stdlog, "[%d bytes omitted]",
|
||||
val - REMOTE_DEBUG_MAX_CHAR);
|
||||
val - max_chars);
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog, "\n");
|
||||
}
|
||||
@ -14723,6 +14748,14 @@ of time passes without a response from the target, an error occurs."),
|
||||
show_watchdog,
|
||||
&setlist, &showlist);
|
||||
|
||||
add_setshow_zuinteger_unlimited_cmd ("remote-packet-max-chars", no_class,
|
||||
&remote_packet_max_chars, _("\
|
||||
Set the maximum number of characters to display for each remote packet."), _("\
|
||||
Show the maximum number of characters to display for each remote packet."), _("\
|
||||
Specify \"unlimited\" to display all the characters."),
|
||||
NULL, show_remote_packet_max_chars,
|
||||
&setdebuglist, &showdebuglist);
|
||||
|
||||
/* Eventually initialize fileio. See fileio.c */
|
||||
initialize_remote_fileio (remote_set_cmdlist, remote_show_cmdlist);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user