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

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

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Apr 9, 2018, 21:19 UTC
Message-ID
<nycvar.QRO.7.76.6.1804092316280.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
In-Reply-To
<20180409185136.4880-1-newren@gmail.com>
Hi Elijah,
On Mon, 9 Apr 2018, Elijah Newren wrote:
Show 23 quoted lines
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index 1701fe2a06..0591d9a7f8 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -145,12 +145,28 @@ test_pause () {
>  	"$SHELL_PATH" <&6 >&5 2>&7
>  }
>  
> -# Wrap git in gdb. Adding this to a command can make it easier to
> -# understand what is going on in a failing test.
> +# Wrap git with a debugger. Adding this to a command can make it easier
> +# to understand what is going on in a failing test.
>  #
> -# Example: "debug git checkout master".
> +# Examples:
> +#     debug git checkout master
> +#     debug --debugger=nemiver git $ARGS
> +#     debug -d "valgrind --tool=memcheck --track-origins=yes" git $ARGS
>  debug () {
> -	 GIT_TEST_GDB=1 "$@" <&6 >&5 2>&7
> +	case "$1" in
> +	-d)
> +		DBG_FLAGS="$2" &&

Maybe we can find a way that does not require setting a variable other than GIT_DEBUGGER? After all, DBG_FLAGS will be visible to the script calling `debug`...

Show 40 quoted lines
> +		shift 2
> +		;;
> +	--debugger=*)
> +		DBG_FLAGS="${1#*=}" &&
> +		shift 1
> +		;;
> +	*)
> +		DBG_FLAGS=1
> +		;;
> +	esac &&
> +	GIT_DEBUGGER="${DBG_FLAGS}" "$@" <&6 >&5 2>&7
>  }
>  
>  # Call test_commit with the arguments
> diff --git a/wrap-for-bin.sh b/wrap-for-bin.sh
> index 22b6e4948f..376c056842 100644
> --- a/wrap-for-bin.sh
> +++ b/wrap-for-bin.sh
> @@ -20,10 +20,17 @@ PATH='@@BUILD_DIR@@/bin-wrappers:'"$PATH"
>  
>  export GIT_EXEC_PATH GITPERLLIB PATH GIT_TEXTDOMAINDIR
>  
> -if test -n "$GIT_TEST_GDB"
> -then
> -	unset GIT_TEST_GDB
> -	exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> -else
> +case "$GIT_DEBUGGER" in
> +'')
>  	exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> -fi
> +	;;
> +1)
> +	unset GIT_DEBUGGER
> +	exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
> +	;;
> +*)
> +	GIT_DEBUGGER_ARGS="$GIT_DEBUGGER"
> +	unset GIT_DEBUGGER
> +	exec ${GIT_DEBUGGER_ARGS} "${GIT_EXEC_PATH}/@@PROG@@" "$@"

It may not be a big deal, bug GIT_DEBUGGER_ARGS (if it was exported e.g. by the user calling the script) is now visible by the called process... (I thought I had tried my best to avoid such a leaking variable in my patch...)

Thanks, Dscho

Previous: Elijah NewrenNext: Elijah Newren
Message 7 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.