aboutsummaryrefslogtreecommitdiff
path: root/gdb/infcmd.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2009-05-19 10:08:19 +0000
committerPedro Alves <palves@redhat.com>2009-05-19 10:08:19 +0000
commit5fd62852f643d6fa71d7a0225237c7874868b695 (patch)
treea1b38412391f1b339d590997c1c5a48f643179b5 /gdb/infcmd.c
parent4e55d6c3ee45302988c77b7c1af1d842607ae416 (diff)
downloadgdb-5fd62852f643d6fa71d7a0225237c7874868b695.zip
gdb-5fd62852f643d6fa71d7a0225237c7874868b695.tar.gz
gdb-5fd62852f643d6fa71d7a0225237c7874868b695.tar.bz2
* inflow.c (kill_command): Moved to infcmd.c.
(_initialize_inflow): Don't add the "kill" command or clear inferior_ptid here. * infcmd.c (kill_command): Moved here from inflow.c. (_initialize_infcmd): Add the "kill" command here.
Diffstat (limited to 'gdb/infcmd.c')
-rw-r--r--gdb/infcmd.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index fcb0f91..433b0b8 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -2037,6 +2037,37 @@ vector_info (char *args, int from_tty)
get_selected_frame (NULL), args);
}
+/* Kill the inferior process. Make us have no inferior. */
+
+static void
+kill_command (char *arg, int from_tty)
+{
+ /* FIXME: This should not really be inferior_ptid (or target_has_execution).
+ It should be a distinct flag that indicates that a target is active, cuz
+ some targets don't have processes! */
+
+ if (ptid_equal (inferior_ptid, null_ptid))
+ error (_("The program is not being run."));
+ if (!query (_("Kill the program being debugged? ")))
+ error (_("Not confirmed."));
+ target_kill ();
+
+ /* If the current target interface claims there's still execution,
+ then don't mess with threads of other processes. */
+ if (!target_has_execution)
+ {
+ init_thread_list (); /* Destroy thread info */
+
+ /* Killing off the inferior can leave us with a core file. If
+ so, print the state we are left in. */
+ if (target_has_stack)
+ {
+ printf_filtered (_("In %s,\n"), target_longname);
+ print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
+ }
+ }
+ bfd_cache_close_all ();
+}
/* Used in `attach&' command. ARG is a point to an integer
representing a process id. Proceed threads of this process iff
@@ -2595,6 +2626,9 @@ fully linked executable files and separately compiled object files as needed."),
&showlist);
set_cmd_completer (c, noop_completer);
+ add_com ("kill", class_run, kill_command,
+ _("Kill execution of program being debugged."));
+
add_com ("attach", class_run, attach_command, _("\
Attach to a process or file outside of GDB.\n\
This command attaches to another target, of the same type as your last\n\