From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28473 invoked by alias); 5 Feb 2009 09:35:04 -0000 Received: (qmail 28459 invoked by uid 22791); 5 Feb 2009 09:35:03 -0000 X-SWARE-Spam-Status: No, hits=-3.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from main.gmane.org (HELO ciao.gmane.org) (80.91.229.2) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 05 Feb 2009 09:34:58 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1LV0dL-0004TA-T6 for gdb@sources.redhat.com; Thu, 05 Feb 2009 09:34:55 +0000 Received: from h86-62-88-129.ln.rinet.ru ([86.62.88.129]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 05 Feb 2009 09:34:55 +0000 Received: from vladimir by h86-62-88-129.ln.rinet.ru with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 05 Feb 2009 09:34:55 +0000 To: gdb@sources.redhat.com From: Vladimir Prus Subject: Re: MI *stopped versus silent breakpoint Date: Thu, 05 Feb 2009 09:35:00 -0000 Message-ID: References: <6D19CA8D71C89C43A057926FE0D4ADAA06CB0F19@ecamlmw720.eamcs.ericsson.se> <6D19CA8D71C89C43A057926FE0D4ADAA04E1BF53@ecamlmw720.eamcs.ericsson.se> <200902051225.41426.vladimir@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit User-Agent: KNode/0.10.9 X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2009-02/txt/msg00038.txt.bz2 teawater wrote: > On Thu, Feb 5, 2009 at 17:25, Vladimir Prus wrote: >> On Thursday 05 February 2009 11:09:56 teawater wrote: >>> Hi Marc, >>> >>> I read the source code in infcmd.c:finish_backward. >>> This is because function "proceed" will be call twice in >>> "finish_backward". Maybe MI output depend some >>> observer_notify_target_xxx function. So it output twice. >> >> The *stopped notification is output as result of call to >> >> observer_notify_normal_stop >> >> which is done in infrun.c:normal_stop. I do believe that "silent" breakpoint >> should generate *stopped, since otherwise frontend will assume the target is >> running. Furthermore, I believe that silent breakpoints, in MI, should behave >> identically to ordinary breakpoints -- as it stands, we print *stopped without >> frame information. >> >> >> I don't know why a silent breakpoint is used in implementation of reverse-finish, >> nor do I understand why normal_stop is called in the middle of reverse-finish when >> stopping on that temporary breakpoint. I think the first fix it to make reverse-finish >> not to call normal_stop on that internal breakpoint (just like normal_stop is not >> called on solib load breakpoint). > > The normal_stop is called twice in reverse-finish because > finish_backward call "proceed" twice, "proceed" call normal_stop. Then I presume you get to change that. I don't see any way we can overload 'silent' breakpoint to output something in most cases, except for reverse-finish. And if you are going to add some flag to indicate breakpoints used for single-step, you might as well change handle_inferiour_event to do extra reverse step when such breakpoint is hit. - Volodya