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

Re: [PATCH] tests: create an interactive gdb session with the 'debug' helper

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Mar 18, 2017, 16:10 UTC
Message-ID
<CAM0VKj=k8kygEPpfX+-n0ODd70A8PEYAviKosvc0D34jT02N5w@mail.gmail.com>
In-Reply-To
<20170317145504.utysxd4qqaqetm7t@sigill.intra.peff.net>
On Fri, Mar 17, 2017 at 3:55 PM, Jeff King <peff@peff.net> wrote:
Show 29 quoted lines
> On Fri, Mar 17, 2017 at 03:46:46PM +0100, SZEDER Gábor wrote:
>
>> The 'debug' test helper is supposed to facilitate debugging by running
>> a command of the test suite under gdb.  Unfortunately, its usefulness
>> is severely limited, because that gdb session is not interactive,
>> since the test's, and thus gdb's standard input is attached to
>> /dev/null (for a good reason, see 781f76b15 (test-lib: redirect stdin
>> of tests, 2011-12-15)).
>>
>> Re-attach the original standard input in the debug helper, thus
>> creating an interactive gdb session, which is much much more useful.
>
> Yeah, I think I've had to do a similar hack manually. This is an obvious
> improvement. Though...
>
>> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
>> index bd357704c..9567dc986 100644
>> --- a/t/test-lib-functions.sh
>> +++ b/t/test-lib-functions.sh
>> @@ -154,7 +154,7 @@ test_pause () {
>>  #
>>  # Example: "debug git checkout master".
>>  debug () {
>> -      GIT_TEST_GDB=1 "$@"
>> +      GIT_TEST_GDB=1 "$@" <&6
>>  }
>
> Your stderr and stdout may be redirected, too. That's usually not a big
> problem because you'll be using "-v",

Yeah, I didn't consider using this helper in non-verbose mode at all, and the resulting behaviour is not quite pleasant, indeed: gdb starts in interactive mode, but as its stdout goes straight to /dev/null the user has no idea, and gdb does not quit on Ctrl-C. A possible solution would be to forbid using the 'debug' helper without '-v', like in the 'test_pause' helper just above.

However...
Show 6 quoted lines
> but perhaps this should add:
>
>   >&3 2>&4
>
> to be on the safe side. That covers running without "-v", as well as
> cases where the test script is redirecting output

That wouldn't buy us much. First, file descriptors 3 and 4 are the test's stdout and stderr, i.e. any process started within the test would be connected to those fds anyway without those explicit redirections. Second, fds 3 and 4 are redirected to /dev/null in non-verbose mode, so it would still not work without '-v'.

Perhaps you meant '>&5 2>&7' here (and in the bash example in the commit message of 781f76b15 (test-lib: redirect stdin of tests, 2011-12-15), for that matter)? Those redirections do in fact make 'debug' work even without '-v'. Furthermore, those redirections do make 'test_pause' work without '-v', too.

So this is what v2 will do, then.
Gábor
Previous: Jeff KingNext: SZEDER Gábor
Message 3 of 9 in “tests: create an interactive gdb session with the 'debug' helper”
  1. tests: create an interactive gdb session with the 'debug' helperSZEDER Gábor, Mar 17, 2017
  2. Jeff KingMar 17, 2017
  3. SZEDER GáborMar 18, 2017
  4. 1/2 tests: create an interactive gdb session with the 'debug' helperSZEDER Gábor, Mar 18, 2017
  5. 2/2 tests: make the 'test_pause' helper work in non-verbose modeSZEDER Gábor, Mar 18, 2017
  6. Jeff KingMar 20, 2017
  7. Jeff KingMar 20, 2017
  8. Johannes SchindelinMar 21, 2017
  9. Jeff KingMar 20, 2017

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.