From: Yao Qi Date: Fri, 13 Jan 2017 15:45:33 +0000 (+0000) Subject: Don't print too much if remote_debug is on X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6f8976bfd6d7848268849b88e95917217ee31d3e;p=binutils-gdb.git Don't print too much if remote_debug is on 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 only print 512 chars in max in debugging messages, like this, Sending packet: $qXfer:features:read:target.xml:0,fff#7d...Packet received: l\n\n\n\n\n\n\n i386:x86-64\n GNU/Linux\n \n * remote.c (REMOTE_DEBUG_MAX_CHAR): New macro. (putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug output. (getpkt_or_notif_sane_1): Likewise. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index dde53bd91ae..39d66b89d66 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2017-01-13 Yao Qi + + * remote.c (REMOTE_DEBUG_MAX_CHAR): New macro. + (putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug + output. + (getpkt_or_notif_sane_1): Likewise. + 2017-01-13 Yao Qi * Makefile.in (checker-headers): Use CXX and CXX_DIALET instead diff --git a/gdb/remote.c b/gdb/remote.c index c73c30aacdf..2f7954a48de 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. The rest of chars are + omitted. */ + +#define REMOTE_DEBUG_MAX_CHAR 512 + /* Data for the vFile:pread readahead cache. */ struct readahead_cache @@ -8749,9 +8754,21 @@ putpkt_binary (const char *buf, int cnt) { *p = '\0'; - std::string str = escape_buffer (buf2, p - buf2); + int len = (int) (p - buf2); + + std::string str + = escape_buffer (buf2, std::min (len, REMOTE_DEBUG_MAX_CHAR)); + + fprintf_unfiltered (gdb_stdlog, "Sending packet: %s", str.c_str ()); + + if (str.length () > REMOTE_DEBUG_MAX_CHAR) + { + fprintf_unfiltered (gdb_stdlog, "[%zu bytes omitted]", + str.length () - REMOTE_DEBUG_MAX_CHAR); + } + + fprintf_unfiltered (gdb_stdlog, "..."); - fprintf_unfiltered (gdb_stdlog, "Sending packet: %s...", str.c_str ()); gdb_flush (gdb_stdlog); } remote_serial_write (buf2, p - buf2); @@ -9179,9 +9196,20 @@ getpkt_or_notif_sane_1 (char **buf, long *sizeof_buf, int forever, { if (remote_debug) { - std::string str = escape_buffer (*buf, val); + std::string str + = escape_buffer (*buf, + std::min (val, REMOTE_DEBUG_MAX_CHAR)); + + fprintf_unfiltered (gdb_stdlog, "Packet received: %s", + str.c_str ()); + + if (str.length () > REMOTE_DEBUG_MAX_CHAR) + { + fprintf_unfiltered (gdb_stdlog, "[%zu bytes omitted]", + str.length () - REMOTE_DEBUG_MAX_CHAR); + } - fprintf_unfiltered (gdb_stdlog, "Packet received: %s\n", str.c_str ()); + fprintf_unfiltered (gdb_stdlog, "\n"); } /* Skip the ack char if we're in no-ack mode. */