git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Derrick Stolee <derrickstolee@github.com>
To: Jonathan Bressat <git.jonathan.bressat@gmail.com>, git@vger.kernel.org
Cc: Cogoni Guillaume <cogoni.guillaume@gmail.com>,
	matthieu.moy@univ-lyon1.fr
Subject: Re: contrib/vscode/: debugging with vscode and gdb
Date: Fri, 25 Mar 2022 09:19:42 -0400	[thread overview]
Message-ID: <f6afa542-cd97-2af9-a07f-6c2a3721a200@github.com> (raw)
In-Reply-To: <CANteD_wDSRmwLQiYV1x133WEtVaRK__c584E3CbXN1tPOquitg@mail.gmail.com>

On 3/24/2022 4:16 AM, Jonathan Bressat wrote:
> Hello
> In contrib/vscode/ the script init.sh create launch.json with the
> option "external console" to true but actually this option make gdb
> didn't work so we passed to false and then it works.
> Is there any reasons why it is set to true, do we not use this properly ?
> Then would it be nice to correct it in contrib/vscode and to talk
> about it in that doc : https://git-scm.com/docs/MyFirstContribution ?

Hi Jonathan and Guillaume,

I use VS Code to work on Git (using Remote SSH from a Windows machine
to a Linux machine) but I've always used command-line gdb for debugging.

However, your request here got me interested. I confirmed that running
the debugger from the VS Code UI did not show any output or show that
a breakpoint was hit. Performing the update you recommend made the
debuggin UI populate with all the necessary info (stack trace, variables,
showing the breakpoint line in the editor).

Here is a patch that makes the change as you suggest. I tried to research
the setting appropriately, so please let me know if there is anything you
think is incorrect here.

Thanks,
-Stolee

--- >8 ---

From b053b797cf8585d2b0212cd2576fe05c2d1a5432 Mon Sep 17 00:00:00 2001
From: Derrick Stolee <derrickstolee@github.com>
Date: Fri, 25 Mar 2022 09:07:11 -0400
Subject: [PATCH] contrib/vscode: fix interaction with UI debugger

The contrib/vscode/init.sh script helps Git developers using Visual
Studio Code to hook up the proper settings to work on Git using the UI
features of that editor environment. This should include the debugger
integration, but that is currently broken.

One thing this script does is create a .vscode/launch.json file, which
provides the information for how VS Code should launch the built
executable. This defaults to the Git executable at the root of the
repository (with no arguments). Among the initial settings, the
"externalConsole" setting is set to "true". This has been the case since
the script was created in 54c06c6013 (contrib: add a script to
initialize VS Code configuration, 2018-07-30).

Jonathan and Guillame reported that flipping this setting to "false"
allows the VS Code debugger to work with Git. I verified that the
debugger did not work by default but now does with this change.

The VS Code reference [1] mentions that this setting is only used when
debugging, so should not affect the "Run Without Debugging" feature.
Other than making the UI debugger work, this will also change the Git
output to appear in the "Debug Console" tab instead of a new window.

[1] https://code.visualstudio.com/docs/cpp/launch-json-reference

In cases such as using the Remote SSH capability, this setting is
necessary to have any success executing Git via the "Run" menu, since
the external console is not visible at all from the VS Code window.

Reported-by: Jonathan Bressat <git.jonathan.bressat@gmail.com>
Reported-by: Cogoni Guillaume <cogoni.guillaume@gmail.com>
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
---
 contrib/vscode/init.sh  |  2 +-
 t/test-lib-functions.sh | 34 ----------------------------------
 2 files changed, 1 insertion(+), 35 deletions(-)

diff --git a/contrib/vscode/init.sh b/contrib/vscode/init.sh
index 27de94994b5..0b7ebc12668 100755
--- a/contrib/vscode/init.sh
+++ b/contrib/vscode/init.sh
@@ -271,7 +271,7 @@ cat >.vscode/launch.json.new <<EOF ||
             "stopAtEntry": false,
             "cwd": "\${workspaceFolder}",
             "environment": [],
-            "externalConsole": true,
+            "externalConsole": false,
             "MIMode": "gdb",
             "miDebuggerPath": "$GDBPATH",
             "setupCommands": [
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 8f0e5da8727..2501fc5706f 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -1788,40 +1788,6 @@ test_subcommand () {
 	fi
 }
 
-# Check that the given command was invoked as part of the
-# trace2-format trace on stdin, but without an exact set of
-# arguments.
-#
-#	test_subcommand [!] <command> <args>... < <trace>
-#
-# For example, to look for an invocation of "git pack-objects"
-# with the "--honor-pack-keep" argument, use
-#
-#	GIT_TRACE2_EVENT=event.log git repack ... &&
-#	test_subcommand git pack-objects --honor-pack-keep <event.log
-#
-# If the first parameter passed is !, this instead checks that
-# the given command was not called.
-#
-test_subcommand_inexact () {
-	local negate=
-	if test "$1" = "!"
-	then
-		negate=t
-		shift
-	fi
-
-	local expr=$(printf '"%s",' "$@")
-	expr="${expr%,}.*"
-
-	if test -n "$negate"
-	then
-		! grep "\"event\":\"child_start\".*\[$expr\]"
-	else
-		grep "\"event\":\"child_start\".*\[$expr\]"
-	fi
-}
-
 # Check that the given command was invoked as part of the
 # trace2-format trace on stdin.
 #
-- 
2.35.1.138.gfc5de29e9e6


  reply	other threads:[~2022-03-25 13:19 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-24  8:16 contrib/vscode/: debugging with vscode and gdb Jonathan Bressat
2022-03-25 13:19 ` Derrick Stolee [this message]
     [not found] ` <2a7eecb4a0b247ef8f855f1c4fb5d510@SAMBXP02.univ-lyon1.fr>
2022-03-25 18:27   ` Matthieu Moy
2022-03-25 19:01     ` Derrick Stolee
2022-03-26 14:11       ` Jonathan Bressat
2022-04-03 20:18         ` Guillaume Cogoni
     [not found]         ` <7b139f2c480e4ebc8dc6615b44cd5f24@SAMBXP02.univ-lyon1.fr>
2022-04-05  9:43           ` Matthieu Moy
2022-04-05 22:45             ` [PATCH V1 0/1] contrib/vscode/: debugging with VS Code " COGONI Guillaume
2022-04-05 22:45               ` [PATCH V1 1/1] " COGONI Guillaume
2022-04-06  8:47                 ` Ævar Arnfjörð Bjarmason
2022-04-06 11:59                 ` Matthieu Moy
2022-04-06 13:35                 ` Matthieu Moy
2022-04-06 15:18                   ` [PATCH v2 0/1] " COGONI Guillaume
2022-04-06 15:18                     ` [PATCH v2 1/1] " COGONI Guillaume
2022-04-06 18:03                       ` Derrick Stolee
2022-04-06 20:23                         ` Junio C Hamano
2022-04-06 23:39                           ` [PATCH v3 0/1] " COGONI Guillaume
2022-04-06 23:39                             ` [PATCH v3 1/1] " COGONI Guillaume
2022-04-07 11:17                               ` Ævar Arnfjörð Bjarmason
2022-04-07 13:09                                 ` Derrick Stolee
2022-04-07 16:43                                   ` Junio C Hamano
2022-04-07 20:40                                     ` [PATCH v4 0/1] " COGONI Guillaume
2022-04-07 20:40                                       ` [PATCH v4 1/1] " COGONI Guillaume
     [not found]                 ` <66f08cb2e81647e29a080af05d7c867e@SAMBXP02.univ-lyon1.fr>
2022-04-07  8:59                   ` [PATCH V1 " Matthieu Moy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f6afa542-cd97-2af9-a07f-6c2a3721a200@github.com \
    --to=derrickstolee@github.com \
    --cc=cogoni.guillaume@gmail.com \
    --cc=git.jonathan.bressat@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=matthieu.moy@univ-lyon1.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).