From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21241 invoked by alias); 15 Dec 2009 19:41:01 -0000 Received: (qmail 21229 invoked by uid 22791); 15 Dec 2009 19:40:58 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-1.vmware.com (HELO smtp-outbound-1.vmware.com) (65.115.85.69) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 15 Dec 2009 19:40:53 +0000 Received: from mailhost3.vmware.com (mailhost3.vmware.com [10.16.27.45]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id 7FC3613528; Tue, 15 Dec 2009 11:40:52 -0800 (PST) Received: from [10.20.94.141] (msnyder-server.eng.vmware.com [10.20.94.141]) by mailhost3.vmware.com (Postfix) with ESMTP id 75725CD921; Tue, 15 Dec 2009 11:40:52 -0800 (PST) Message-ID: <4B27E5D3.1070806@vmware.com> Date: Tue, 15 Dec 2009 19:41:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20090624) MIME-Version: 1.0 To: Vladimir Prus CC: Jakob Engblom , "gdb-patches@sourceware.org" , Eli Zaretskii Subject: Re: GDB MI Reverse Commands added [2 of 3] References: <00cf01ca265a$d4110dc0$7c332940$@com> <83tyzucw8p.fsf@gnu.org> <002b01ca27c7$1316d8c0$39448a40$@com> <833a7ccj52.fsf@gnu.org> <4A97BA98.4010105@undo-software.com> <83y6p4aweu.fsf@gnu.org> <4A980D06.40002@undo-software.com> <83ljl3c16f.fsf@gnu.org> <4A981551.4060504@vmware.com> <83k50nbrja.fsf@gnu.org> <4A9865A5.1020703@vmware.com> <00d201ca2a33$454aa920$cfdffb60$@com> <00d501ca2a34$93e5fe30$bbb1fa90$@com> In-Reply-To: <00d501ca2a34$93e5fe30$bbb1fa90$@com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-IsSubscribed: yes 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-12/txt/msg00197.txt.bz2 Jakob Engblom wrote: > Here is an updated patch. As well as a better changelog entry. Diff also > attached as a file, for easier processing if someone wants it that way. > > Changelog: > > doc/ > * gdb.texinfo (MI commands): Added documentation of --reverse option to a set of > MI commands. Restructured documentation of MI commands --exec-continue to > reflect the complexity of reverse execution. (jakob@virtutech.com) Part 2 of the MI reverse patch, awaiting final approval. > Index: gdb/doc/gdb.texinfo > =================================================================== > RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v > retrieving revision 1.615 > diff -c -p -r1.615 gdb.texinfo > *** gdb/doc/gdb.texinfo 6 Aug 2009 23:08:16 -0000 1.615 > --- gdb/doc/gdb.texinfo 31 Aug 2009 12:09:08 -0000 > *************** line of a function back to its return to > *** 5027,5033 **** > Like @code{nexti}, @code{reverse-nexti} executes a single instruction > in reverse, except that called functions are ``un-executed'' atomically. > That is, if the previously executed instruction was a return from > ! another instruction, @code{reverse-nexti} will continue to execute > in reverse until the call to that function (from the current stack > frame) is reached. > > --- 5027,5033 ---- > Like @code{nexti}, @code{reverse-nexti} executes a single instruction > in reverse, except that called functions are ``un-executed'' atomically. > That is, if the previously executed instruction was a return from > ! another function, @code{reverse-nexti} will continue to execute > in reverse until the call to that function (from the current stack > frame) is reached. > > *************** other cases. > *** 22394,22413 **** > @subsubheading Synopsis > > @smallexample > ! -exec-continue [--all|--thread-group N] > @end smallexample > > ! Resumes the execution of the inferior program until a breakpoint is > ! encountered, or until the inferior exits. In all-stop mode > ! (@pxref{All-Stop Mode}), may resume only one thread, or all threads, > ! depending on the value of the @samp{scheduler-locking} variable. In > ! non-stop mode (@pxref{Non-Stop Mode}), if the @samp{--all} is not > ! specified, only the thread specified with the @samp{--thread} option > ! (or current thread, if no @samp{--thread} is provided) is resumed. If > ! @samp{--all} is specified, all threads will be resumed. The > ! @samp{--all} option is ignored in all-stop mode. If the > ! @samp{--thread-group} options is specified, then all threads in that > ! thread group are resumed. > > @subsubheading @value{GDBN} Command > > --- 22394,22422 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-continue [--reverse] [--all|--thread-group N] > @end smallexample > > ! Resumes the execution of the inferior program, which will continue > ! to execute until it reaches a debugger stop event. If the > ! @samp{--reverse} option is specified, execution resumes in reverse until > ! it reaches a stop event. Stop events may include > ! @itemize @bullet > ! @item > ! breakpoints or watchpoints > ! @item > ! signals or exceptions > ! @item > ! the end of the process (or its beginning under @samp{--reverse}) > ! @item > ! the end or beginning of a replay log if one is being used. > ! @end itemize > ! In all-stop mode (@pxref{All-Stop > ! Mode}), may resume only one thread, or all threads, depending on the > ! value of the @samp{scheduler-locking} variable. If @samp{--all} is > ! specified, all threads will be resumed. The @samp{--all} option is > ! ignored in all-stop mode. If the @samp{--thread-group} options is > ! specified, then all threads in that thread group are resumed. > > @subsubheading @value{GDBN} Command > > *************** line="13"@} > *** 22433,22443 **** > @subsubheading Synopsis > > @smallexample > ! -exec-finish > @end smallexample > > Resumes the execution of the inferior program until the current > function is exited. Displays the results returned by the function. > > @subsubheading @value{GDBN} Command > > --- 22442,22455 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-finish [--reverse] > @end smallexample > > Resumes the execution of the inferior program until the current > function is exited. Displays the results returned by the function. > + If the @samp{--reverse} option is specified, resumes the reverse > + execution of the inferior program until the point where current > + function was called. > > @subsubheading @value{GDBN} Command > > *************** The corresponding @value{GDBN} command i > *** 22556,22567 **** > @subsubheading Synopsis > > @smallexample > ! -exec-next > @end smallexample > > Resumes execution of the inferior program, stopping when the beginning > of the next source line is reached. > > @subsubheading @value{GDBN} Command > > The corresponding @value{GDBN} command is @samp{next}. > --- 22568,22586 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-next [--reverse] > @end smallexample > > Resumes execution of the inferior program, stopping when the beginning > of the next source line is reached. > > + If the @samp{--reverse} option is specified, resumes reverse execution > + of the inferior program, stopping at the beginning of the previous > + source line. If you issue this command on the first line of a > + function, it will take you back to the caller of that function, to the > + source line where the function was called. > + > + > @subsubheading @value{GDBN} Command > > The corresponding @value{GDBN} command is @samp{next}. > *************** The corresponding @value{GDBN} command i > *** 22583,22589 **** > @subsubheading Synopsis > > @smallexample > ! -exec-next-instruction > @end smallexample > > Executes one machine instruction. If the instruction is a function > --- 22602,22608 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-next-instruction [--reverse] > @end smallexample > > Executes one machine instruction. If the instruction is a function > *************** call, continues until the function retur > *** 22591,22596 **** > --- 22610,22621 ---- > instruction in the middle of a source line, the address will be > printed as well. > > + If the @samp{--reverse} option is specified, resumes reverse execution > + of the inferior program, stopping at the previous instruction. If the > + previously executed instruction was a return from another function, > + it will continue to execute in reverse until the call to that function > + (from the current stack frame) is reached. > + > @subsubheading @value{GDBN} Command > > The corresponding @value{GDBN} command is @samp{nexti}. > *************** signal-meaning="Interrupt" > *** 22733,22745 **** > @subsubheading Synopsis > > @smallexample > ! -exec-step > @end smallexample > > Resumes execution of the inferior program, stopping when the beginning > of the next source line is reached, if the next source line is not a > function call. If it is, stop at the first instruction of the called > ! function. > > @subsubheading @value{GDBN} Command > > --- 22758,22772 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-step [--reverse] > @end smallexample > > Resumes execution of the inferior program, stopping when the beginning > of the next source line is reached, if the next source line is not a > function call. If it is, stop at the first instruction of the called > ! function. If the @samp{--reverse} option is specified, resumes reverse > ! execution of the inferior program, stopping at the beginning of the > ! previously executed source line. > > @subsubheading @value{GDBN} Command > > *************** Regular stepping: > *** 22777,22790 **** > @subsubheading Synopsis > > @smallexample > ! -exec-step-instruction > @end smallexample > > ! Resumes the inferior which executes one machine instruction. The > ! output, once @value{GDBN} has stopped, will vary depending on whether > ! we have stopped in the middle of a source line or not. In the former > ! case, the address at which the program stopped will be printed as > ! well. > > @subsubheading @value{GDBN} Command > > --- 22804,22819 ---- > @subsubheading Synopsis > > @smallexample > ! -exec-step-instruction [--reverse] > @end smallexample > > ! Resumes the inferior which executes one machine instruction. If the > ! @samp{--reverse} option is specified, resumes reverse execution of the > ! inferior program, stopping at the previously executed instruction. > ! The output, once @value{GDBN} has stopped, will vary depending on > ! whether we have stopped in the middle of a source line or not. In the > ! former case, the address at which the program stopped will be printed > ! as well. > > @subsubheading @value{GDBN} Command > > > > > Best regards, > > /jakob > > _______________________________________________________ > > Jakob Engblom, PhD, Technical Marketing Manager > > Virtutech Direct: +46 8 690 07 47 > Drottningholmsvägen 22 Mobile: +46 709 242 646 > 11243 Stockholm Web: www.virtutech.com > Sweden > ________________________________________________________ > > >