diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2021-01-04 11:56:10 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2021-01-04 12:00:25 -0500 |
commit | e71daf80d338e536597fa1c3cd1029aadbaa2a67 (patch) | |
tree | 7f47bbfd089a5274f2e67fca6718681665982915 /gdb | |
parent | 335709bc5a6dc4778e9931cfa0ed55cb0c516d7a (diff) | |
download | gdb-e71daf80d338e536597fa1c3cd1029aadbaa2a67.zip gdb-e71daf80d338e536597fa1c3cd1029aadbaa2a67.tar.gz gdb-e71daf80d338e536597fa1c3cd1029aadbaa2a67.tar.bz2 |
gdb: use infrun_debug_printf in print_target_wait_results
The code in print_target_wait_results uses a single call to debug_printf
in order to make sure a single timestamp is emitted, despite printing
multiple lines. The result is:
941502.043284 [infrun] target_wait (-1.0.0, status) =
[infrun] 649832.649832.0 [process 649832],
[infrun] status->kind = stopped, signal = GDB_SIGNAL_TRAP
I find this decision a bit counter productive, because it messes up the
alignment of the three lines. We don't care that three (slightly
different) timestamps are printed.
I suggest to change this function to use infrun_debug_printf, with this
result:
941601.425771 [infrun] print_target_wait_results: target_wait (-1.0.0 [process -1], status) =
941601.425824 [infrun] print_target_wait_results: 651481.651481.0 [process 651481],
941601.425867 [infrun] print_target_wait_results: status->kind = stopped, signal = GDB_SIGNAL_TRAP
Note that the current code only prints the waiton_ptid as a string
between square brackets if pid != -1. I don't think this complexity is
needed in a debug print. I made it so it's always printed, which I
think results in a much simpler function.
gdb/ChangeLog:
* infrun.c (print_target_wait_results): Use infrun_debug_printf.
Change-Id: I817bd10286b8e641a6c751ac3a1bd1ddf9b18ce0
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/infrun.c | 36 |
2 files changed, 15 insertions, 25 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e0da11f..674c396 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 2021-01-04 Simon Marchi <simon.marchi@efficios.com> + * infrun.c (print_target_wait_results): Use infrun_debug_printf. + +2021-01-04 Simon Marchi <simon.marchi@efficios.com> + * utils.c (vfprintf_unfiltered): Print timestamp only when previous debug output ended with a newline. diff --git a/gdb/infrun.c b/gdb/infrun.c index bb73871..01d7ead 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3275,31 +3275,17 @@ void print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid, const struct target_waitstatus *ws) { - std::string status_string = target_waitstatus_to_string (ws); - string_file stb; - - /* The text is split over several lines because it was getting too long. - Call fprintf_unfiltered (gdb_stdlog) once so that the text is still - output as a unit; we want only one timestamp printed if debug_timestamp - is set. */ - - stb.printf ("[infrun] target_wait (%d.%ld.%ld", - waiton_ptid.pid (), - waiton_ptid.lwp (), - waiton_ptid.tid ()); - if (waiton_ptid.pid () != -1) - stb.printf (" [%s]", target_pid_to_str (waiton_ptid).c_str ()); - stb.printf (", status) =\n"); - stb.printf ("[infrun] %d.%ld.%ld [%s],\n", - result_ptid.pid (), - result_ptid.lwp (), - result_ptid.tid (), - target_pid_to_str (result_ptid).c_str ()); - stb.printf ("[infrun] %s\n", status_string.c_str ()); - - /* This uses %s in part to handle %'s in the text, but also to avoid - a gcc error: the format attribute requires a string literal. */ - fprintf_unfiltered (gdb_stdlog, "%s", stb.c_str ()); + infrun_debug_printf ("target_wait (%d.%ld.%ld [%s], status) =", + waiton_ptid.pid (), + waiton_ptid.lwp (), + waiton_ptid.tid (), + target_pid_to_str (waiton_ptid).c_str ()); + infrun_debug_printf (" %d.%ld.%ld [%s],", + result_ptid.pid (), + result_ptid.lwp (), + result_ptid.tid (), + target_pid_to_str (result_ptid).c_str ()); + infrun_debug_printf (" %s", target_waitstatus_to_string (ws).c_str ()); } /* Select a thread at random, out of those which are resumed and have |