From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29326 invoked by alias); 31 Mar 2009 16:55:28 -0000 Received: (qmail 29311 invoked by uid 22791); 31 Mar 2009 16:55:26 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_37 X-Spam-Check-By: sourceware.org Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 31 Mar 2009 16:55:21 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 562BF2BE278 for ; Tue, 31 Mar 2009 12:55:20 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id f8iQhJGxb54a for ; Tue, 31 Mar 2009 12:55:20 -0400 (EDT) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 19D1E2BE277 for ; Tue, 31 Mar 2009 12:55:20 -0400 (EDT) Received: by joel.gnat.com (Postfix, from userid 1000) id AEC5CF5853; Tue, 31 Mar 2009 09:55:13 -0700 (PDT) Date: Tue, 31 Mar 2009 18:31:00 -0000 From: Joel Brobecker To: gdb-patches@sourceware.org Subject: Re: [RFA/doco] Document task-specific breakpoints Message-ID: <20090331165513.GE9472@adacore.com> References: <20090325214556.GD9472@adacore.com> <20090325220236.GF9472@adacore.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="WuedheRyq6FDfQ9j" Content-Disposition: inline In-Reply-To: <20090325220236.GF9472@adacore.com> User-Agent: Mutt/1.5.18 (2008-05-17) 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 X-SW-Source: 2009-03/txt/msg00706.txt.bz2 --WuedheRyq6FDfQ9j Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 270 > 2009-03-25 Joel Brobecker > > * gdb.texinfo (Ada Tasks): Add documentation about task-specific > breakpoints. I checked this patch in, with "Running" changed to "Runnable". For the record, here is the final patch. -- Joel --WuedheRyq6FDfQ9j Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="tasks-bp-doc.diff" Content-length: 2853 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index a1c0b80..8b1467e 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -3051,6 +3051,11 @@ C@t{++}, a function name may refer to more than one possible place to break. @xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of that situation. +It is also possible to insert a breakpoint that will stop the program +only if a specific thread or a specific task hits that breakpoint. +@xref{Thread-Specific Breakpoints} and @ref{Ada Tasks} for more +information about this feature. + @item break When called without any arguments, @code{break} sets a breakpoint at the next instruction to be executed in the selected stack frame @@ -11750,6 +11755,58 @@ from the current task to the given task. #4 0x804aacc in un () at un.adb:5 @end smallexample +@item break @var{linespec} task @var{taskno} +@itemx break @var{linespec} task @var{taskno} if @dots{} +@cindex breakpoints and tasks, in Ada +@cindex task breakpoints, in Ada +@kindex break @dots{} task @var{taskno}@r{ (Ada)} +These commands are like the @code{break @dots{} thread @dots{}} +command (@pxref{Thread Stops}). +@var{linespec} specifies source lines, as described +in @ref{Specify Location}. + +Use the qualifier @samp{task @var{taskno}} with a breakpoint command +to specify that you only want @value{GDBN} to stop the program when a +particular Ada task reaches this breakpoint. @var{taskno} is one of the +numeric task identifiers assigned by @value{GDBN}, shown in the first +column of the @samp{info tasks} display. + +If you do not specify @samp{task @var{taskno}} when you set a +breakpoint, the breakpoint applies to @emph{all} tasks of your +program. + +You can use the @code{task} qualifier on conditional breakpoints as +well; in this case, place @samp{task @var{taskno}} before the +breakpoint condition (before the @code{if}). + +For example, + +@smallexample +@iftex +@leftskip=0.5cm +@end iftex +(@value{GDBP}) info tasks + ID TID P-ID Pri State Name + 1 140022020 0 15 Child Activation Wait main_task + 2 140045060 1 15 Accept/Select Wait t2 + 3 140044840 1 15 Runnable t1 +* 4 140056040 1 15 Runnable t3 +(@value{GDBP}) b 15 task 2 +Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15. +(@value{GDBP}) cont +Continuing. +task # 1 running +task # 2 running + +Breakpoint 5, test_task_debug () at test_task_debug.adb:15 +15 flush; +(@value{GDBP}) info tasks + ID TID P-ID Pri State Name + 1 140022020 0 15 Child Activation Wait main_task +* 2 140045060 1 15 Runnable t2 + 3 140044840 1 15 Runnable t1 + 4 140056040 1 15 Delay Sleep t3 +@end smallexample @end table @node Ada Tasks and Core Files --WuedheRyq6FDfQ9j--