зеркало из https://github.com/microsoft/git.git
Make running git under other debugger-like programs easy
This allows us to run git, when using the script from bin-wrappers, under other programs. A few examples for usage within testsuite scripts: debug git checkout master debug --debugger=nemiver git $ARGS debug -d "valgrind --tool-memcheck --track-origins=yes" git $ARGS Or, if someone has bin-wrappers/ in their $PATH and is executing git outside the testsuite: GIT_DEBUGGER="gdb --args" git $ARGS GIT_DEBUGGER=nemiver git $ARGS GIT_DEBUGGER="valgrind --tool=memcheck --track-origins=yes" git $ARGS There is also a handy shortcut of GIT_DEBUGGER=1 meaning the same as GIT_DEBUGGER="gdb --args" Original-patch-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
fe0a9eaf31
Коммит
842436466a
|
@ -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)
|
||||
GIT_DEBUGGER="$2" &&
|
||||
shift 2
|
||||
;;
|
||||
--debugger=*)
|
||||
GIT_DEBUGGER="${1#*=}" &&
|
||||
shift 1
|
||||
;;
|
||||
*)
|
||||
GIT_DEBUGGER=1
|
||||
;;
|
||||
esac &&
|
||||
GIT_DEBUGGER="${GIT_DEBUGGER}" "$@" <&6 >&5 2>&7
|
||||
}
|
||||
|
||||
# Call test_commit with the arguments
|
||||
|
|
|
@ -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@@" "$@"
|
||||
;;
|
||||
esac
|
||||
|
|
Загрузка…
Ссылка в новой задаче