aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Machado <luis.machado@linaro.org>2019-11-25 12:27:44 -0300
committerLuis Machado <luis.machado@linaro.org>2019-11-25 12:27:44 -0300
commit6cc8564b9a2f3aa133ceaf9ab6e71ed68129a8f8 (patch)
treeeea6dbcf7d667dc7dde4d261e145c4f6c88eebfb
parentbb2942085c83289c56cc3ef8b9ab0ecf6267efa3 (diff)
downloadfsf-binutils-gdb-6cc8564b9a2f3aa133ceaf9ab6e71ed68129a8f8.zip
fsf-binutils-gdb-6cc8564b9a2f3aa133ceaf9ab6e71ed68129a8f8.tar.gz
fsf-binutils-gdb-6cc8564b9a2f3aa133ceaf9ab6e71ed68129a8f8.tar.bz2
[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
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/NEWS6
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo13
-rw-r--r--gdb/remote.c55
5 files changed, 79 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3b656f4..45ff42a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/NEWS b/gdb/NEWS
index b0f5447..01b38cf 100644
--- a/gdb/NEWS
+++ b/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
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 2571839..c6fa5f5 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -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.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index c66a39c..18bb18b 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -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
diff --git a/gdb/remote.c b/gdb/remote.c
index 1ac9013..3fc9a26 100644
--- a/gdb/remote.c
+++ b/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);
}