This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Don't print too much if remote_debug is on
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 29 Nov 2016 15:38:18 +0000
- Subject: [PATCH] Don't print too much if remote_debug is on
- Authentication-results: sourceware.org; auth=none
If we turn "remote debug" on and GDB does some vFile operations,
a lot of things will be printed in the screen, which makes
"remote debug" useless.
This patch changes the code that we don't print messages if
messages are too long, greater than 512. Instead, print
"Sending packet: $vFile:pread:5,3fff,e0d12#c4...Packet received: [16384 bytes omitted]".
gdb:
2016-11-29 Yao Qi <yao.qi@linaro.org>
* remote.c (REMOTE_DEBUG_MAX_CHAR): New macro.
(putpkt_binary): Print if content length is less than
REMOTE_DEBUG_MAX_CHAR.
(getpkt_or_notif_sane_1): Likewise.
---
gdb/remote.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/gdb/remote.c b/gdb/remote.c
index ef6c54e..7b4c168 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -283,6 +283,11 @@ typedef unsigned char threadref[OPAQUETHREADBYTES];
#define MAXTHREADLISTRESULTS 32
+/* The max number of chars in debug output. Output more than this number
+ of chars is omitted. */
+
+#define REMOTE_DEBUG_MAX_CHAR 512
+
/* Data for the vFile:pread readahead cache. */
struct readahead_cache
@@ -8749,9 +8754,16 @@ putpkt_binary (const char *buf, int cnt)
{
*p = '\0';
- std::string str = escape_buffer (buf2, p - buf2);
+ fprintf_unfiltered (gdb_stdlog, "Sending packet: ");
+ ptrdiff_t len = p - buf2;
+ if (len <= REMOTE_DEBUG_MAX_CHAR)
+ {
+ std::string str = escape_buffer (buf2, len);
- fprintf_unfiltered (gdb_stdlog, "Sending packet: %s...", str.c_str ());
+ fprintf_unfiltered (gdb_stdlog, "%s...", str.c_str ());
+ }
+ else
+ fprintf_unfiltered (gdb_stdlog, "[%td bytes omitted]...", len);
gdb_flush (gdb_stdlog);
}
remote_serial_write (buf2, p - buf2);
@@ -9179,9 +9191,15 @@ getpkt_or_notif_sane_1 (char **buf, long *sizeof_buf, int forever,
{
if (remote_debug)
{
- std::string str = escape_buffer (*buf, val);
+ fprintf_unfiltered (gdb_stdlog, "Packet received: ");
+ if (val <= REMOTE_DEBUG_MAX_CHAR)
+ {
+ std::string str = escape_buffer (*buf, val);
- fprintf_unfiltered (gdb_stdlog, "Packet received: %s\n", str.c_str ());
+ fprintf_unfiltered (gdb_stdlog, "%s\n", str.c_str ());
+ }
+ else
+ fprintf_unfiltered (gdb_stdlog, "[%d bytes omitted]\n", val);
}
/* Skip the ack char if we're in no-ack mode. */
--
1.9.1