forked from Imagelibrary/binutils-gdb
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
This commit is contained in:
committed by
Simon Marchi
parent
6e6e87de92
commit
4f5539f026
@@ -2521,7 +2521,7 @@ attach_post_wait (int from_tty, enum attach_post_wait_mode mode)
|
|||||||
{
|
{
|
||||||
struct thread_info *lowest = inferior_thread ();
|
struct thread_info *lowest = inferior_thread ();
|
||||||
|
|
||||||
stop_all_threads ();
|
stop_all_threads ("attaching");
|
||||||
|
|
||||||
/* It's not defined which thread will report the attach
|
/* It's not defined which thread will report the attach
|
||||||
stop. For consistency, always select the thread with
|
stop. For consistency, always select the thread with
|
||||||
|
|||||||
10
gdb/infrun.c
10
gdb/infrun.c
@@ -2388,7 +2388,7 @@ resume_1 (enum gdb_signal sig)
|
|||||||
/* Fallback to stepping over the breakpoint in-line. */
|
/* Fallback to stepping over the breakpoint in-line. */
|
||||||
|
|
||||||
if (target_is_non_stop_p ())
|
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 (),
|
set_step_over_info (regcache->aspace (),
|
||||||
regcache_read_pc (regcache), 0, tp->global_num);
|
regcache_read_pc (regcache), 0, tp->global_num);
|
||||||
@@ -4904,7 +4904,7 @@ handle_one (const wait_one_event &event)
|
|||||||
/* See infrun.h. */
|
/* See infrun.h. */
|
||||||
|
|
||||||
void
|
void
|
||||||
stop_all_threads (void)
|
stop_all_threads (const char *reason)
|
||||||
{
|
{
|
||||||
/* We may need multiple passes to discover all threads. */
|
/* We may need multiple passes to discover all threads. */
|
||||||
int pass;
|
int pass;
|
||||||
@@ -4912,7 +4912,7 @@ stop_all_threads (void)
|
|||||||
|
|
||||||
gdb_assert (exists_non_stop_target ());
|
gdb_assert (exists_non_stop_target ());
|
||||||
|
|
||||||
infrun_debug_printf ("starting");
|
INFRUN_SCOPED_DEBUG_START_END ("reason=%s", reason);
|
||||||
|
|
||||||
scoped_restore_current_thread restore_thread;
|
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
|
/* If all-stop, but there exists a non-stop target, stop all
|
||||||
threads now that we're presenting the stop to the user. */
|
threads now that we're presenting the stop to the user. */
|
||||||
if (!non_stop && exists_non_stop_target ())
|
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
|
/* 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
|
we're about to step over, otherwise other threads could miss
|
||||||
it. */
|
it. */
|
||||||
if (step_over_info_valid_p () && target_is_non_stop_p ())
|
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. */
|
/* Stop stepping if inserting breakpoints fails. */
|
||||||
try
|
try
|
||||||
|
|||||||
11
gdb/infrun.h
11
gdb/infrun.h
@@ -40,8 +40,8 @@ extern bool debug_infrun;
|
|||||||
|
|
||||||
/* Print "infrun" start/end debug statements. */
|
/* Print "infrun" start/end debug statements. */
|
||||||
|
|
||||||
#define INFRUN_SCOPED_DEBUG_START_END(msg) \
|
#define INFRUN_SCOPED_DEBUG_START_END(fmt, ...) \
|
||||||
scoped_debug_start_end (debug_infrun, "infrun", msg)
|
scoped_debug_start_end (debug_infrun, "infrun", fmt, ##__VA_ARGS__)
|
||||||
|
|
||||||
/* Print "infrun" enter/exit debug statements. */
|
/* 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(). */
|
target_wait(). */
|
||||||
extern void nullify_last_target_wait_ptid ();
|
extern void nullify_last_target_wait_ptid ();
|
||||||
|
|
||||||
/* Stop all threads. Only returns after everything is halted. */
|
/* Stop all threads. Only returns after everything is halted.
|
||||||
extern void stop_all_threads (void);
|
|
||||||
|
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);
|
extern void prepare_for_detach (void);
|
||||||
|
|
||||||
|
|||||||
@@ -4642,7 +4642,7 @@ remote_target::process_initial_stop_replies (int from_tty)
|
|||||||
gdb_assert (!this->is_async_p ());
|
gdb_assert (!this->is_async_p ());
|
||||||
SCOPE_EXIT { target_async (0); };
|
SCOPE_EXIT { target_async (0); };
|
||||||
target_async (1);
|
target_async (1);
|
||||||
stop_all_threads ();
|
stop_all_threads ("remote connect in all-stop");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If all threads of an inferior were already stopped, we
|
/* If all threads of an inferior were already stopped, we
|
||||||
|
|||||||
Reference in New Issue
Block a user