public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] gdb/infrun: add reason parameter to stop_all_threads
@ 2022-03-31 15:34 Simon Marchi
0 siblings, 0 replies; only message in thread
From: Simon Marchi @ 2022-03-31 15:34 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4f5539f026fafe2a3bf190dd86e95f87d75a00e7
commit 4f5539f026fafe2a3bf190dd86e95f87d75a00e7
Author: Simon Marchi <simon.marchi@efficios.com>
Date: Mon Jan 17 11:27:35 2022 -0500
gdb/infrun: add reason parameter to stop_all_threads
Add a "reason" parameter, only used to show in debug messages what is
the reason for stopping all threads. This helped me understand the
debug logs while adding some new uses of stop_all_threads, so I am
proposing to merge it.
Change-Id: I66c8c335ebf41836a7bc3d5fe1db92c195f65e55
Diff:
---
gdb/infcmd.c | 2 +-
gdb/infrun.c | 10 +++++-----
gdb/infrun.h | 11 +++++++----
gdb/remote.c | 2 +-
4 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index fbae4e14a5f..b76345d8426 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -2521,7 +2521,7 @@ attach_post_wait (int from_tty, enum attach_post_wait_mode mode)
{
struct thread_info *lowest = inferior_thread ();
- stop_all_threads ();
+ stop_all_threads ("attaching");
/* It's not defined which thread will report the attach
stop. For consistency, always select the thread with
diff --git a/gdb/infrun.c b/gdb/infrun.c
index dbd82775595..12661b5d92e 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2388,7 +2388,7 @@ resume_1 (enum gdb_signal sig)
/* Fallback to stepping over the breakpoint in-line. */
if (target_is_non_stop_p ())
- stop_all_threads ();
+ stop_all_threads ("displaced stepping falling back on inline stepping");
set_step_over_info (regcache->aspace (),
regcache_read_pc (regcache), 0, tp->global_num);
@@ -4904,7 +4904,7 @@ handle_one (const wait_one_event &event)
/* See infrun.h. */
void
-stop_all_threads (void)
+stop_all_threads (const char *reason)
{
/* We may need multiple passes to discover all threads. */
int pass;
@@ -4912,7 +4912,7 @@ stop_all_threads (void)
gdb_assert (exists_non_stop_target ());
- infrun_debug_printf ("starting");
+ INFRUN_SCOPED_DEBUG_START_END ("reason=%s", reason);
scoped_restore_current_thread restore_thread;
@@ -7957,7 +7957,7 @@ stop_waiting (struct execution_control_state *ecs)
/* If all-stop, but there exists a non-stop target, stop all
threads now that we're presenting the stop to the user. */
if (!non_stop && exists_non_stop_target ())
- stop_all_threads ();
+ stop_all_threads ("presenting stop to user in all-stop");
}
/* Like keep_going, but passes the signal to the inferior, even if the
@@ -8057,7 +8057,7 @@ keep_going_pass_signal (struct execution_control_state *ecs)
we're about to step over, otherwise other threads could miss
it. */
if (step_over_info_valid_p () && target_is_non_stop_p ())
- stop_all_threads ();
+ stop_all_threads ("starting in-line step-over");
/* Stop stepping if inserting breakpoints fails. */
try
diff --git a/gdb/infrun.h b/gdb/infrun.h
index 1209b4188e9..ecfb767692b 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -40,8 +40,8 @@ extern bool debug_infrun;
/* Print "infrun" start/end debug statements. */
-#define INFRUN_SCOPED_DEBUG_START_END(msg) \
- scoped_debug_start_end (debug_infrun, "infrun", msg)
+#define INFRUN_SCOPED_DEBUG_START_END(fmt, ...) \
+ scoped_debug_start_end (debug_infrun, "infrun", fmt, ##__VA_ARGS__)
/* Print "infrun" enter/exit debug statements. */
@@ -138,8 +138,11 @@ extern void set_last_target_status (process_stratum_target *target, ptid_t ptid,
target_wait(). */
extern void nullify_last_target_wait_ptid ();
-/* Stop all threads. Only returns after everything is halted. */
-extern void stop_all_threads (void);
+/* Stop all threads. Only returns after everything is halted.
+
+ REASON is a string indicating the reason why we stop all threads, used in
+ debug messages. */
+extern void stop_all_threads (const char *reason);
extern void prepare_for_detach (void);
diff --git a/gdb/remote.c b/gdb/remote.c
index bc308bd77f8..3f06ba5bb08 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4642,7 +4642,7 @@ remote_target::process_initial_stop_replies (int from_tty)
gdb_assert (!this->is_async_p ());
SCOPE_EXIT { target_async (0); };
target_async (1);
- stop_all_threads ();
+ stop_all_threads ("remote connect in all-stop");
}
/* If all threads of an inferior were already stopped, we
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-03-31 15:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-31 15:34 [binutils-gdb] gdb/infrun: add reason parameter to stop_all_threads Simon Marchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).