Add non_stop global.
* inferior.h (non_stop): Declare. * infrun.c (non_stop, non_stop_1): New. (set_non_stop, show_non_stop): New. (_initialize_infrun): Add "set/show non-stop" command.
This commit is contained in:
parent
3a3e9ee36f
commit
ad52ddc6a4
3 changed files with 62 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2008-07-09 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
Add non_stop global.
|
||||||
|
|
||||||
|
* inferior.h (non_stop): Declare.
|
||||||
|
* infrun.c (non_stop, non_stop_1): New.
|
||||||
|
(set_non_stop, show_non_stop): New.
|
||||||
|
(_initialize_infrun): Add "set/show non-stop" command.
|
||||||
|
|
||||||
2008-07-09 Pedro Alves <pedro@codesourcery.com>
|
2008-07-09 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
Adjust fork/vfork/exec to pass ptids around.
|
Adjust fork/vfork/exec to pass ptids around.
|
||||||
|
|
|
@ -137,6 +137,13 @@ extern void proceed (CORE_ADDR, enum target_signal, int);
|
||||||
over such function. */
|
over such function. */
|
||||||
extern int step_stop_if_no_debug;
|
extern int step_stop_if_no_debug;
|
||||||
|
|
||||||
|
/* If set, the inferior should be controlled in non-stop mode. In
|
||||||
|
this mode, each thread is controlled independently. Execution
|
||||||
|
commands apply only to the the selected thread by default, and stop
|
||||||
|
events stop only the thread that had the event -- the other threads
|
||||||
|
are kept running freely. */
|
||||||
|
extern int non_stop;
|
||||||
|
|
||||||
extern void generic_mourn_inferior (void);
|
extern void generic_mourn_inferior (void);
|
||||||
|
|
||||||
extern void terminal_save_ours (void);
|
extern void terminal_save_ours (void);
|
||||||
|
|
46
gdb/infrun.c
46
gdb/infrun.c
|
@ -4465,6 +4465,32 @@ save_inferior_ptid (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int non_stop = 0;
|
||||||
|
static int non_stop_1 = 0;
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_non_stop (char *args, int from_tty,
|
||||||
|
struct cmd_list_element *c)
|
||||||
|
{
|
||||||
|
if (target_has_execution)
|
||||||
|
{
|
||||||
|
non_stop_1 = non_stop;
|
||||||
|
error (_("Cannot change this setting while the inferior is running."));
|
||||||
|
}
|
||||||
|
|
||||||
|
non_stop = non_stop_1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
show_non_stop (struct ui_file *file, int from_tty,
|
||||||
|
struct cmd_list_element *c, const char *value)
|
||||||
|
{
|
||||||
|
fprintf_filtered (file,
|
||||||
|
_("Controlling the inferior in non-stop mode is %s.\n"),
|
||||||
|
value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_initialize_infrun (void)
|
_initialize_infrun (void)
|
||||||
{
|
{
|
||||||
|
@ -4538,6 +4564,26 @@ When non-zero, displaced stepping specific debugging is enabled."),
|
||||||
show_debug_displaced,
|
show_debug_displaced,
|
||||||
&setdebuglist, &showdebuglist);
|
&setdebuglist, &showdebuglist);
|
||||||
|
|
||||||
|
add_setshow_boolean_cmd ("non-stop", no_class,
|
||||||
|
&non_stop_1, _("\
|
||||||
|
Set whether gdb controls the inferior in non-stop mode."), _("\
|
||||||
|
Show whether gdb controls the inferior in non-stop mode."), _("\
|
||||||
|
When debugging a multi-threaded program and this setting is\n\
|
||||||
|
off (the default, also called all-stop mode), when one thread stops\n\
|
||||||
|
(for a breakpoint, watchpoint, exception, or similar events), GDB stops\n\
|
||||||
|
all other threads in the program while you interact with the thread of\n\
|
||||||
|
interest. When you continue or step a thread, you can allow the other\n\
|
||||||
|
threads to run, or have them remain stopped, but while you inspect any\n\
|
||||||
|
thread's state, all threads stop.\n\
|
||||||
|
\n\
|
||||||
|
In non-stop mode, when one thread stops, other threads can continue\n\
|
||||||
|
to run freely. You'll be able to step each thread independently,\n\
|
||||||
|
leave it stopped or free to run as needed."),
|
||||||
|
set_non_stop,
|
||||||
|
show_non_stop,
|
||||||
|
&setlist,
|
||||||
|
&showlist);
|
||||||
|
|
||||||
numsigs = (int) TARGET_SIGNAL_LAST;
|
numsigs = (int) TARGET_SIGNAL_LAST;
|
||||||
signal_stop = (unsigned char *) xmalloc (sizeof (signal_stop[0]) * numsigs);
|
signal_stop = (unsigned char *) xmalloc (sizeof (signal_stop[0]) * numsigs);
|
||||||
signal_print = (unsigned char *)
|
signal_print = (unsigned char *)
|
||||||
|
|
Loading…
Reference in a new issue