Files
binutils-gdb/gdb/testsuite/gdb.dap/pause.exp
Tom Tromey cfd00e8050 Implement the notStopped DAP response
DAP specifies that a request can fail with the "notStopped" message if
the inferior is running but the request requires that it first be
stopped.

This patch implements this for gdb.  Most requests are assumed to
require a stopped inferior, and the exceptions are noted by a new
'request' parameter.

You may notice that the implementation is a bit racy.  I think this is
inherent -- unless the client waits for a stop event before sending a
request, the request may be processed at any time relative to a stop.

https://sourceware.org/bugzilla/show_bug.cgi?id=31037

Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
2023-11-17 08:26:03 -07:00

49 lines
1.5 KiB
Plaintext

# Copyright 2023 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 "pause" in DAP.
require allow_dap_tests
load_lib dap-support.exp
standard_testfile attach.c
if {[build_executable ${testfile}.exp $testfile $srcfile] == -1} {
return
}
if {[dap_launch $testfile] == ""} {
return
}
dap_check_request_and_response "start inferior" configurationDone
dap_wait_for_event_and_check "inferior started" thread "body reason" started
set resp [lindex [dap_request_and_response evaluate {o expression [s 23]}] \
0]
gdb_assert {[dict get $resp success] == "false"} \
"evaluate failed while inferior executing"
gdb_assert {[dict get $resp message] == "notStopped"} \
"evaluate issued notStopped"
dap_check_request_and_response pause pause \
{o threadId [i 1]}
dap_wait_for_event_and_check "stopped by pause" stopped \
"body reason" pause
dap_shutdown