mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 13:27:26 +08:00
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
This commit is contained in:

committed by
Simon Marchi

parent
335709bc5a
commit
e71daf80d3
@ -1,3 +1,7 @@
|
||||
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
|
||||
|
36
gdb/infrun.c
36
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
|
||||
|
Reference in New Issue
Block a user