diff options
author | Pedro Alves <palves@redhat.com> | 2009-05-19 10:08:19 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2009-05-19 10:08:19 +0000 |
commit | 5fd62852f643d6fa71d7a0225237c7874868b695 (patch) | |
tree | a1b38412391f1b339d590997c1c5a48f643179b5 /gdb/infcmd.c | |
parent | 4e55d6c3ee45302988c77b7c1af1d842607ae416 (diff) | |
download | gdb-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.c | 34 |
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\ |