git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Make running git under other debugger-like programs easy

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Apr 6, 2018, 10:38 UTC
Message-ID
<nycvar.QRO.7.76.6.1804061233330.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
In-Reply-To
<CABPp-BHhdxuV9a_4OfgaRu89Kx2039OLeS1vW-KdzpLxb-ZF3g@mail.gmail.com>
Hi Elijah,
On Thu, 5 Apr 2018, Elijah Newren wrote:
Show 59 quoted lines
> On Thu, Apr 5, 2018 at 12:57 PM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> 
> > I wonder whether a better approach would be to add an optional argument to
> > that `debug` function (which is intended to have `git` as first argument,
> > anyway, or at least a command/function that does not start with a dash):
> >
> > debug_aux () {
> >         shift
> >         "$@" <&6 >&5 2>&7
> > }
> >
> > debug () {
> >         case "$1" in
> >         -d)
> >                 shift &&
> >                 GIT_TEST_GDB="$1" debug_aux "$@"
> >                 ;;
> >         --debugger=*)
> >                 GIT_TEST_GDB="${1#*=}" debug_aux "$@"
> >                 ;;
> >         *)
> >                 GIT_TEST_GDB=1 "$@" <&6 >&5 2>&7
> >                 ;;
> >         esac
> > }
> >
> > ... and then in wrap-for-bin.sh, we would replace the last lines
> >
> > if test -n "$GIT_TEST_GDB"
> > then
> >         unset GIT_TEST_GDB
> >         exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> > else
> >         exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> > fi
> >
> > by
> >
> > case "$GIT_TEST_GDB" in
> > '')
> >         exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> >         ;;
> > 1)
> >         unset GIT_TEST_GDB
> >         exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> >         ;;
> > *)
> >         GIT_TEST_GDB_$$="$GIT_TEST_GDB"
> >         unset GIT_TEST_GDB
> >         exec $GIT_TEST_GDB_$$ "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> >         ;;
> > esac
> >
> > or some such.
> 
> That all looks great to me.  But at this point, it seems like it's a
> full rewrite and your patch to submit (which I'd be happy to endorse
> in lieu of my own)...
:-)
> or do you want me to submit with you as author and me as committer?
That would be my preference. I have not even tested what I wrote above...
> Also, a side question: if we go this route, do we want to rename
> GIT_TEST_GDB to reflect its expanded usage?
Sure. Probably GIT_TEST_DEBUGGER? Or GIT_TEST_DBG? Or GIT_TEST_DEBUG?
Show 9 quoted lines
> > Then your magic "GIT_WRAPPER" invocation would become a bit more explicit:
> >
> >     debug --debugger=nemiver git $ARGS
> >     debug -d "valgrind --tool=memcheck --track-origins=yes" git $ARGS
> 
> No, for most (60-80%?) of my invocations, I wouldn't be able to use
> the debug function; only a minority of my uses are from within the
> testsuite.  The rest are from the command line (I have
> git/bin-wrappers/ in my $PATH),

Oy vey. bin-wrappers in your PATH? That's even worse than what I did in the first two years of developing Git: I always ran `git` in-place. However, I was bitten by a couple of bugs introduced while developing that made it hard to recover (if I don't have a functional Git, I cannot use it to go back to a working version, can I?). How do *you* deal with these things?

> so the above suggestions would mean that my invocation would become:
> 
> GIT_TEST_GDB="nemiver" git $ARGS
> GIT_TEST_GDB="valgrind --tool-memcheck --track-origins=yes" git $ARGS
Right.
Show 6 quoted lines
> > (In any case, "GIT_WRAPPER" is probably a name in want of being renamed.)
> 
> Well, with your suggestion, it'd just be whatever that environment
> variable is named.  I'm perfectly happy with something other than
> GIT_WRAPPER (or GIT_TEST_GDB).  I'm not so good at coming up with such
> myself, but maybe something like GIT_DEBUGGER or GIT_DEBUG_WITH?

I like both. Pick whatever you like, as long as it starts with `GIT_` and is descriptive enough. Even `GIT_LAUNCH_THROUGH` would work, but `GIT_DEBUGGER` seems to be the shortest that still makes sense.

Ciao, Dscho

Previous: Elijah NewrenNext: Elijah Newren
Message 4 of 12 in “Make running git under other debugger-like programs easy”
  1. Make running git under other debugger-like programs easyElijah Newren, Apr 5, 2018
  2. Johannes SchindelinApr 5, 2018
  3. Elijah NewrenApr 5, 2018
  4. Johannes SchindelinApr 6, 2018
  5. Elijah NewrenApr 6, 2018
  6. Make running git under other debugger-like programs easyElijah Newren, Apr 9, 2018
  7. Johannes SchindelinApr 9, 2018
  8. Elijah NewrenApr 10, 2018
  9. Johannes SchindelinApr 10, 2018
  10. Make running git under other debugger-like programs easyElijah Newren, Apr 24, 2018
  11. Johannes SchindelinApr 25, 2018
  12. Junio C HamanoApr 26, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.