From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14118 invoked by alias); 10 Jan 2007 02:51:34 -0000 Received: (qmail 14109 invoked by uid 22791); 10 Jan 2007 02:51:34 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Wed, 10 Jan 2007 02:51:29 +0000 Received: from drow by nevyn.them.org with local (Exim 4.63) (envelope-from ) id 1H4TYj-0003Xe-NQ; Tue, 09 Jan 2007 21:51:25 -0500 Date: Wed, 10 Jan 2007 02:51:00 -0000 From: Daniel Jacobowitz To: "William K. Foster" Cc: gdb@sourceware.org Subject: Re: How to pop -c in gdb Message-ID: <20070110025125.GA13537@nevyn.them.org> Mail-Followup-To: "William K. Foster" , gdb@sourceware.org References: <45A43875.4020808@sinavigator.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45A43875.4020808@sinavigator.com> User-Agent: Mutt/1.5.13 (2006-08-11) 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: 2007-01/txt/msg00161.txt.bz2 On Tue, Jan 09, 2007 at 04:51:01PM -0800, William K. Foster wrote: > Hello, > > When I used dbx and at the prompt called a function which got a SEGV or > something, I could do "pop -c" to recover from my call and return to the > point I was at in the program being debugged where I typed in the > expression that failed. > Program received signal SIGSEGV, Segmentation fault. > 0x42d05bda in QWidgetPrivate::q_func (this=0x0) at qwidget_p.h:157 > The program being debugged was signaled while in a function called from GDB. > GDB remains in the frame where the signal was received. > To change this behavior use "set unwindonsignal on" > Evaluation of the expression containing the function (QWidget::x() > const) will be abandoned. As the message suggests, if unwindonsignal is set, you won't run into this problem. However, once you do, there's no easy way out yet. This might work though: instead of "fin", try "signal 0" to resume, and then the application should resume running. Or try "handle SIGSEGV nopass" and then finish should work. I think. I haven't tried it lately. -- Daniel Jacobowitz CodeSourcery