From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by sourceware.org (Postfix) with ESMTPS id AE9693858C36 for ; Wed, 26 Jul 2023 15:37:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE9693858C36 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd2e.google.com with SMTP id ca18e2360f4ac-7835e5fa459so263874939f.2 for ; Wed, 26 Jul 2023 08:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1690385846; x=1690990646; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=uL/OXbIpmMpXaI/tYjO0C7dCCmgMRP0llea5Vbs1qKo=; b=XmocJCtGaHtxzXm73/05asQTKkxrctB/3HkMZWl3AcgJuDIV7kLWTgghGizhSnuCPe SVW54a+FFPlqFe3FN6RikSzcs+i1yFaEPDrmiRQZt2kSlvVq7q3kK7Qt/x1WD24VfPa5 PN9Yr44nvB+kR3XL2cyLqbb0kMiU1hEX8Dq3GebhfT+IwVWQrHNgjxlM8C+ifGAHmzpQ dmX6LOcoacEcql+1DRSjilt+3xlU3G9ESpPGQncrcrKz07KTaYghjhi0HKi+HZhWibl4 P4ffqZuYfE1SdXgsXP6IggVG+OHG3B+EDA8AqtBDS5hvaol6+aLthjyFSjWMvMv5zTjQ C/Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690385846; x=1690990646; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uL/OXbIpmMpXaI/tYjO0C7dCCmgMRP0llea5Vbs1qKo=; b=h7mBuVjZ3jIcK2DOR3QPifxH626MQxmRyJmYMTZHdCa1uGQx5oZz7/VWGmAaqO7tn0 8YWOVAxrmj9rptbDvdxNezwzTD47sjqVOJL8HmrQznNd8mu1aNonGCLIXzJjJ/ocGx0O 5FzCroQosm7zNB8yQFh/DdD9Sj3SG0aeobR2tLN09cDc9MTvMPWyOBtVGF/ZZs/8LbRr t+sH38O00E9SgA0h+v4zx7n4NpMipxn9owgkEueiux+pq0hq0f+RXax8VYQytDXFSYY0 0p3VpIgS5MO5eYBg8lkw9JFt9zYItgfz7iVZLVKjcTgkBCsN8en5d4/LD+i2szTZUJCj fSXA== X-Gm-Message-State: ABy/qLYyY9OXaJ1h8CYxMMXV60lg2vakxqXOlXPC108H8hDawhHzfegY hPIozZLau3kN7KxhvAZYWuHrhEolKPBRWDF3SNa84Q== X-Google-Smtp-Source: APBJJlF5ujuPWy/6p7Qa2PGJmbYSBhx62bDYnP86FjXTkK/ShwlfRg1gpcgkJQMt4WUd0MGHFJE1TA== X-Received: by 2002:a6b:fd0b:0:b0:786:f3f8:6aea with SMTP id c11-20020a6bfd0b000000b00786f3f86aeamr2201290ioi.20.1690385845849; Wed, 26 Jul 2023 08:37:25 -0700 (PDT) Received: from localhost.localdomain (75-166-135-140.hlrn.qwest.net. [75.166.135.140]) by smtp.gmail.com with ESMTPSA id z25-20020a05660200d900b007791e286fdbsm4944505ioe.21.2023.07.26.08.37.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Jul 2023 08:37:25 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Implement DAP 'terminated' event Date: Wed, 26 Jul 2023 09:37:17 -0600 Message-Id: <20230726153717.2192831-1-tromey@adacore.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This implements the DAP 'terminated' event. Vladimir Makaev noticed that VSCode will not report the debug session as over unless this is sent. It's not completely clear when exactly this event ought to be sent. Here I've done it when the inferior exits. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30681 --- gdb/python/lib/gdb/dap/events.py | 1 + gdb/python/lib/gdb/dap/server.py | 2 +- gdb/testsuite/gdb.dap/terminate.exp | 39 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gdb/testsuite/gdb.dap/terminate.exp diff --git a/gdb/python/lib/gdb/dap/events.py b/gdb/python/lib/gdb/dap/events.py index c1631442746..3e48d889f20 100644 --- a/gdb/python/lib/gdb/dap/events.py +++ b/gdb/python/lib/gdb/dap/events.py @@ -33,6 +33,7 @@ def _on_exit(event): "exitCode": code, }, ) + send_event("terminated") @in_gdb_thread diff --git a/gdb/python/lib/gdb/dap/server.py b/gdb/python/lib/gdb/dap/server.py index b1c75ab967f..db7893a387b 100644 --- a/gdb/python/lib/gdb/dap/server.py +++ b/gdb/python/lib/gdb/dap/server.py @@ -151,7 +151,7 @@ class Server: self.done = True -def send_event(event, body): +def send_event(event, body=None): """Send an event to the DAP client. EVENT is the name of the event, a string. BODY is the body of the event, an arbitrary object.""" diff --git a/gdb/testsuite/gdb.dap/terminate.exp b/gdb/testsuite/gdb.dap/terminate.exp new file mode 100644 index 00000000000..bc222ab73c2 --- /dev/null +++ b/gdb/testsuite/gdb.dap/terminate.exp @@ -0,0 +1,39 @@ +# 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 . + +# Test that the 'terminated' event is delivered. + +require allow_dap_tests + +load_lib dap-support.exp + +# The test doesn't matter much, since we aren't going to set any +# breakpoints -- it just has to exit. +standard_testfile scopes.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 + +dap_wait_for_event_and_check "terminated event" terminated + +dap_shutdown -- 2.40.1