| # This testcase is part of GDB, the GNU debugger. |
| # |
| # Copyright 2015-2021 Free Software Foundation, Inc. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| # Test the basic operation of the "kill inferiors" and "detach inferiors" |
| # commands. |
| |
| if ![can_spawn_for_attach] { |
| return 0 |
| } |
| |
| standard_testfile |
| set executable $testfile |
| |
| if [prepare_for_testing "failed to prepare" $executable] { |
| return -1 |
| } |
| |
| runto_main |
| |
| # Add another forked inferior process. |
| gdb_test "add-inferior" "Added inferior 2 on connection .*" "add inferior 2" |
| gdb_test "inferior 2" "Switching to inferior 2.*" |
| gdb_test "file $binfile" "Reading symbols from .*" "load binary" |
| gdb_test "start" "Temporary breakpoint.*Starting program.*" |
| |
| # Add an attached inferior process. |
| set test_spawn_id [spawn_wait_for_attach $binfile] |
| set test_pid [spawn_id_get_pid $test_spawn_id] |
| gdb_test "add-inferior" "Added inferior 3 on connection .*" "add inferior 3" |
| gdb_test "inferior 3" "Switching to inferior 3.*" |
| gdb_test "attach $test_pid" "Attaching to process.*" "attach to pid" |
| |
| # Kill the first two inferiors, and detach the third. |
| gdb_test_no_output "kill inferiors 1 2" |
| gdb_test "info inferiors 3" "\r\n\\* 3 \[^\r\n\]+" "inf 3 is still current" |
| gdb_test "inferior 1" "Switching to inferior 1.*" |
| gdb_test "kill" "The program is not being run.*" |
| gdb_test "detach inferiors 3" "Detaching from program.*process $test_pid.*" |
| gdb_test "info inferiors 1" "\r\n\\* 1 \[^\r\n\]+" "inf 1 is still current" |
| |
| # No inferiors should be running anymore. |
| gdb_test "kill inferiors 1 2 3" \ |
| "ID 1 is not running.*ID 2 is not running.*ID 3 is not running.*" |
| gdb_test "detach inferiors 1 2 3" \ |
| "ID 1 is not running.*ID 2 is not running.*ID 3 is not running.*" |
| |
| gdb_test "kill inferiors 10" \ |
| "ID 10 not known.*" |
| |
| kill_wait_spawned_process $test_spawn_id |