From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30377 invoked by alias); 24 Feb 2013 13:34:09 -0000 Received: (qmail 30127 invoked by uid 48); 24 Feb 2013 13:34:08 -0000 From: "marc.khouzam at ericsson dot com" To: gdb-prs@sourceware.org Subject: [Bug breakpoints/15179] Dprintf interrupts execution when condition is false Date: Sun, 24 Feb 2013 13:34:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: breakpoints X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: marc.khouzam at ericsson dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gdb-prs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-prs-owner@sourceware.org X-SW-Source: 2013-q1/txt/msg00312.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=15179 --- Comment #2 from Marc Khouzam 2013-02-24 13:34:07 UTC --- (In reply to comment #0) > if the > condition is evaluated to false, those commands are not executed; this means > that the printout of the dprintf is ignored as it should, but so is the > "continue" which is not correct. I realized my explanation was wrong. When a breakpoint's condition is false, the breakpoint should not interrupt the inferior at all. It has nothing to do with its commands. For dprintf, it does interrupt the code. I tried with a normal breakpoint with the same commands as a dprintf and the problem does not happen. Here is a session showing the problem: > gdb.7.6 ~/loopfirst GNU gdb (GDB) 7.5.50.20130223-cvs (gdb) l 1 #include 2 #include 3 4 int main() { 5 for (int i=0;i<20;i++) { 6 printf("hello"); 7 printf("friend\n"); 8 printf("home\n"); 9 sleep(1); 10 } (gdb) dprintf 8,"welcome\n" Dprintf 1 at 0x804855f: file loopfirst.cc, line 8. (gdb) cond 1 i>5 (gdb) info b Num Type Disp Enb Address What 1 dprintf keep y 0x0804855f in main() at loopfirst.cc:8 stop only if i>5 printf "welcome\n" continue (gdb) r Starting program: /home/lmckhou/loopfirst warning: Cannot call inferior functions, you have broken Linux kernel i386 NX (non-executable pages) support! hellofriend (gdb) bt #0 main () at loopfirst.cc:8 (gdb) p i $1 = 0 # Why did the inferior stop? -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.