From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16586 invoked by alias); 3 Jan 2002 02:14:07 -0000 Mailing-List: contact insight-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: insight-owner@sources.redhat.com Received: (qmail 16527 invoked from network); 3 Jan 2002 02:13:59 -0000 X-Authentication-Warning: makita.cygnus.com: keiths owned process doing -bs Date: Wed, 02 Jan 2002 18:14:00 -0000 From: Keith Seitz X-X-Sender: To: "Martin M. Hunt" cc: Insight Mailing List Subject: Re: [RFA] fix session breakpoints In-Reply-To: <200201022042.MAA24030@cygnus.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-q1/txt/msg00009.txt.bz2 On Wed, 2 Jan 2002, Martin M. Hunt wrote: > This is a second version of the patch that attempts to check if you are > debugging gdb with itself before ignoring those breakpoints. It assumes the > name of the executable starts with "gdb" or "insight". Of course this isn't > ideal either, but anything else will require GDB changes and IMO will not be > worth the effort. While I agree with Tom that it would be nice to fix this for real, I also acknowledge that there are for more people using sessions to do init-script like things than those using gdb's init files. What we really want is something in breakpoint.c to tell us if the breakpoint was set from an init script. Somehow I doubt we'd get it. Please add a comment about our failure to deal with this generically, but for now, we might as well make developers' lives easier. Then commit. Thanks, Keith > Index: session.tcl > =================================================================== > RCS file: /cvs/src/src/gdb/gdbtk/library/session.tcl,v > retrieving revision 1.9 > diff -u -r1.9 session.tcl > --- session.tcl 2001/10/28 20:08:39 1.9 > +++ session.tcl 2002/01/02 20:35:20 > @@ -33,11 +33,28 @@ > proc SESSION_serialize_bps {} { > set result {} > > + set basename [string tolower [file tail $::gdb_exe_name]] > + if {[string match "gdb*" $basename] > + || [string match "insight*" $basename]} { > + set debugging_gdb 1 > + } else { > + set debugging_gdb 0 > + } > + > foreach bp_num [gdb_get_breakpoint_list] { > lassign [gdb_get_breakpoint_info $bp_num] file function line_number \ > address type enabled disposition ignore_count command_list \ > condition thread hit_count user_specification > > + # These breakpoints are set when debugging GDB with itself. > + # Ignore them so they don't accumulate. They get set again > + # by .gdbinit anyway. > + if {$debugging_gdb} { > + if {$function == "internal_error" || $function == "info_command"} { > + continue > + } > + } > + > switch -glob -- $type { > "breakpoint" - > "hw breakpoint" { >