From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 58219 invoked by alias); 3 Oct 2017 16:02:27 -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 58206 invoked by uid 89); 3 Oct 2017 16:02:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.9 required=5.0 tests=BAYES_00,GIT_PATCH_1,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=supposedly, wondering X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 03 Oct 2017 16:02:20 +0000 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B06DBC04B333; Tue, 3 Oct 2017 16:02:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B06DBC04B333 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE1156017C; Tue, 3 Oct 2017 16:02:18 +0000 (UTC) Subject: Re: [RFA v3] enable/disable sub breakpoint range To: Eli Zaretskii , Xavier Roirand References: <83lgks1e1h.fsf@gnu.org> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: Date: Tue, 03 Oct 2017 16:02:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <83lgks1e1h.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-10/txt/msg00050.txt.bz2 On 10/03/2017 03:50 PM, Eli Zaretskii wrote: >> From: Xavier Roirand >> Date: Tue, 3 Oct 2017 12:26:49 +0200 >> >> This patch allows enable/disable a range of breakpoint locations >> using syntax: >> >> .- >> >> with inclusive last_location_number. >> >> For instance, if adding a breakpoint to foo() generates 5 breakpoint >> locations from 1.1 to 1.5 then it's now possible to enable/disable >> only location breakpoint 1.3 to location breakpoint 1.5 >> (so 1.3, 1.4 and 1.5) using syntax: >> >> enable 1.3-5 or disable 1.3-5 > > What if I have, in addition to the 1.1-1.5 breakpoints also > breakpoints 4, 5, and 6 -- how do I disable 1.3, 1.4, 1.5, 4, and 5? > Do I have to say something like "disable 1.3-5.0"? I hope not. Supposedly you could do it with: (gdb) delete 1.3 1.4 1.5 4 5 or: (gdb) delete 1-5 4-5 though I haven't looked at the implementation in detail. I definitely thing the above is what we should aim for though. It's very much what we support for thread ID lists, at least (expect the support for thread ID star ranges). I'm wondering whether it wouldn't be better to expand this section of the manual: @cindex breakpoint ranges @cindex breakpoint lists @cindex ranges of breakpoints @cindex lists of breakpoints Some @value{GDBN} commands accept a space-separated list of breakpoints on which to operate. A list element can be either a single breakpoint number, like @samp{5}, or a range of such numbers, like @samp{5-7}. When a breakpoint list is given to a command, all breakpoints in that list are operated on. To describe locations as well. Similarly to how we describe "thread ID lists", where we have: @anchor{thread ID lists} @cindex thread ID lists Some commands accept a space-separated @dfn{thread ID list} as argument. A list element can be: @enumerate @item A thread ID as shown in the first field of the @samp{info threads} display, with or without an inferior qualifier. E.g., @samp{2.1} or @samp{1}. @item A range of thread numbers, again with or without an inferior qualifier, as in @var{inf}.@var{thr1}-@var{thr2} or @var{thr1}-@var{thr2}. E.g., @samp{1.2-4} or @samp{2-4}. @item All threads of an inferior, specified with a star wildcard, with or without an inferior qualifier, as in @var{inf}.@code{*} (e.g., @samp{1.*}) or @code{*}. The former refers to all threads of the given inferior, and the latter form without an inferior qualifier refers to all threads of the current inferior. @end enumerate For example, if the current inferior is 1, and inferior 7 has one thread with ID 7.1, the thread list @samp{1 2-3 4.5 6.7-9 7.*} includes threads 1 to 3 of inferior 1, thread 5 of inferior 4, threads 7 to 9 of inferior 6 and all threads of inferior 7. That is, in expanded qualified form, the same as @samp{1.1 1.2 1.3 4.5 6.7 6.8 6.9 7.1}. Then commands that accept a thread ID list xref here. We'd do the same to breakpoint commands, i.e., commands that take an breakpoint/location list would xref the description of breakpoint lists. See commit 5d5658a1d3c3 ("Per-inferior/Inferior-qualified thread IDs") for how that looked like before support for '*' ranges was added. (And now I wonder whether it'd make sense to model the breakpoint number parsing on a simplified version of the thread ID number parsing. See gdb/tid-parse.h / tid_range_parser.) Thanks, Pedro Alves