From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23291 invoked by alias); 22 Jan 2015 21:15:03 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 23040 invoked by uid 89); 22 Jan 2015 21:15:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg21.ericsson.net Received: from usevmg21.ericsson.net (HELO usevmg21.ericsson.net) (198.24.6.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 22 Jan 2015 21:14:58 +0000 Received: from EUSAAHC006.ericsson.se (Unknown_Domain [147.117.188.90]) by usevmg21.ericsson.net (Symantec Mail Security) with SMTP id CF.91.25146.88901C45; Thu, 22 Jan 2015 15:30:33 +0100 (CET) Received: from [142.133.110.232] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.92) with Microsoft SMTP Server id 14.3.195.1; Thu, 22 Jan 2015 16:14:56 -0500 Message-ID: <54C1684F.3050402@ericsson.com> Date: Fri, 23 Jan 2015 00:26:00 -0000 From: Simon Marchi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Doug Evans CC: gdb-patches Subject: Re: [PATCH] Introduce gdb_interact in testsuite References: <1421340032-30709-1-git-send-email-simon.marchi@ericsson.com> <54C16318.7060203@ericsson.com> In-Reply-To: <54C16318.7060203@ericsson.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg00628.txt.bz2 On 15-01-22 03:52 PM, Simon Marchi wrote: > On 15-01-20 08:42 PM, Doug Evans wrote: >> On Thu, Jan 15, 2015 at 8:40 AM, Simon Marchi wrote: >>> >>> gdb_interact is a small utility that we have found quite useful to debug >>> test cases. >>> >>> Putting gdb_interact in a test suspends it and allows to interact with >>> gdb to inspect whatever you want. You can then type ">>>" to resume the >>> test execution. Of course, this is only for gdb devs. It wouldn't make >>> sense to leave a gdb_interact permanently in a test case. >>> >>> When starting the interaction with the user, the script prints this >>> banner: >>> >>> +------------------------------------------+ >>> | Script interrupted, you can now interact | >>> | with by gdb. Type >>> to continue. | >>> +------------------------------------------+ >>> >>> Notes: >>> * When gdb is launched, the gdb_spawn_id variable (lib/gdb.exp) is >>> assigned -1. Given the name, I would expect it to contain the gdb >>> expect spawn id, which is needed for interact. I changed all places >>> that set gdb_spawn_id to -1 to set it to the actual gdb spawn id >>> instead. >>> >>> * When entering the "interact" mode, the last (gdb) prompt is already >>> eaten by expect, so it doesn't show up on the terminal. Subsequent >>> prompts do appear though. We tried to print "(gdb)" just before the >>> interact to replace it. However, it could be misleading if you are >>> debugging an MI test case, it makes you think that you are typing in a >>> CLI prompt, when in reality it's MI. In the end I decided that since >>> the feature is for developers who know what they're doing and that one >>> is normally consciously using gdb_interact, the script doesn't need >>> to babysit the user. >>> >>> * There are probably some quirks depending on where in the script >>> gdb_interact appears (e.g. it could interfere with following >>> commands and make them fail), but it works for most cases. Quirks can >>> always be fixed later. >>> >>> The idea and original implementation was contributed by Anders >>> Granlund, a colleague of mine. Thanks to him. >>> >>> gdb/testsuite/ChangeLog: >>> >>> * gdb.base/statistics.exp: Assign spawn id to gdb_spawn_id. >>> * gdb.base/valgrind-db-attach.exp: Same. >>> * gdb.base/valgrind-infcall.exp: Same. >>> * lib/mi-support.exp (default_mi_gdb_start): Same. >>> * lib/prompt.exp (default_prompt_gdb_start): Same. >>> * lib/gdb.exp (default_gdb_spawn): Same. >>> (gdb_interact): New. >> >> [Apologies for the resend.] >> >> I'm not sure why we're assigning -1 instead of a usable value, >> but I can't find anything to suggest assigning a real id will >> cause problems. >> >> Plus given how trivial gdb_interact is, the patch is fine by me. >> >> Another way such things are debugged is by first running tests >> with TRANSCRIPT=y, and then massaging the transcript.N files >> afterwards. I'm all for adding more ways of debugging tests. >> Thanks! > > Thanks, pushed. Just a note, I added a section about this in the TestingGDB wiki page: https://sourceware.org/gdb/wiki/TestingGDB#Interacting_with_a_test_case