From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 106498 invoked by alias); 14 Aug 2017 13:20:25 -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 106473 invoked by uid 89); 14 Aug 2017 13:20:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= 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; Mon, 14 Aug 2017 13:20:20 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E1F527CE09; Mon, 14 Aug 2017 13:20:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E1F527CE09 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.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 9D3AA413D; Mon, 14 Aug 2017 13:20:17 +0000 (UTC) Subject: Re: [RFA v2 00/13] various frame filter fixes and cleanups To: Tom Tromey , gdb-patches@sourceware.org References: <20170814034030.20863-1-tom@tromey.com> From: Pedro Alves Message-ID: Date: Mon, 14 Aug 2017 13:20: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: <20170814034030.20863-1-tom@tromey.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-08/txt/msg00287.txt.bz2 On 08/14/2017 04:40 AM, Tom Tromey wrote: >> So "bt elide" means "elide the elided frames", not "show me the >> elided frames too". It's fine with me, though I mildly wonder whether >> users will be confused by the "double negative". > > "Elide" means "drop", so really "bt elide" should mean "drop whatever > frames are droppable". Having "bt elide" mean "show the dropped > frames" would be confusing. But maybe another word would be better > here, I don't know. Maybe "bt no-elided", to go with "bt no-filters". Because "elided frames" are a preexisting concept, and "elide" is actually referring to that concept. Let me try to clarify what I meant. Note how the patch has the confusing (to me) "elide the elided" "double negative": + if ((flags & PRINT_ELIDE) == 0) + { + /* Finally recursively print elided frames, if any. */ + gdbpy_ref<> elided (get_py_iter_from_func (filter, "elided")); + if (elided == NULL) + return EXT_LANG_BT_ERROR; I.e., if "bt elide" is NOT in effect, frames returned by the "elided" function are printed: If PRINT_ELIDE => don't print elided frames If not PRINT_ELIDE => print elided frames I think my brain wants to read PRINT_ELIDE as PRINT_ELIDED, and then it it becomes really clearly backwards: If PRINT_ELIDED => don't print elided frames If not PRINT_ELIDED => print elided frames The "bt elide" switch name confuses me in the same way. Looking at the proposed manual change: +@item backtrace elide +A Python frame filter might decide to ``elide'' some frames. Normally +such elided frames are still printed, but they are indented relative +to the filtered frames that cause them to be elided. The @code{elide} +option causes elided frames to not be printed at all. @end table A filter elides a frames. And then the elide switch elides those elided frames from view. So there's two levels of elision, what I was calling "double negative". It would seem more natural to me to have a "bt no-elided" switch meaning "don't print frames marked as elided": @item backtrace no-elided A Python frame filter might decide to ``elide'' some frames. Normally such elided frames are still printed, but they are indented relative to the filtered frames that cause them to be elided. The @code{no-elided} option causes elided frames to not be printed at all. Or alternatively, to make gdb not print elided frames by default and add a "bt elided" switch to print them: @item backtrace elided A Python frame filter might decide to ``elide'' some frames. Normally such elided frames are not printed. The @code{elided} option causes elided frames to be printed, indented relative to the filtered frames that cause them to be elided. Maybe it's just me and/or a case of "lost in translation", and I'm fine with that. Please do feel free to ignore. Thanks, Pedro Alves