# This testcase is part of GDB, the GNU debugger. # # Copyright 2015-2020 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 . # 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