Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Jakob Engblom" <jakob@virtutech.com>
To: <gdb-patches@sourceware.org>
Subject: RE: GDB MI Reverse Commands added [2 of 3]
Date: Mon, 31 Aug 2009 13:06:00 -0000	[thread overview]
Message-ID: <00d501ca2a34$93e5fe30$bbb1fa90$@com> (raw)
In-Reply-To: <00d201ca2a33$454aa920$cfdffb60$@com>

[-- Attachment #1: Type: text/plain, Size: 9074 bytes --]

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)



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
________________________________________________________
  



[-- Attachment #2: gdb.texinfo.diff --]
[-- Type: application/octet-stream, Size: 8289 bytes --]

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
  

  reply	other threads:[~2009-08-31 12:14 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-26 14:38 Jakob Engblom
2009-08-26 17:38 ` Eli Zaretskii
2009-08-27 13:48   ` Jakob Engblom
2009-08-28 10:05     ` Eli Zaretskii
2009-08-28 10:08   ` Jakob Engblom
2009-08-28 10:49     ` Eli Zaretskii
2009-08-28 13:41       ` Greg Law
2009-08-28 14:28         ` Eli Zaretskii
2009-08-28 17:12           ` Greg Law
2009-08-28 17:34             ` Eli Zaretskii
2009-08-28 18:49               ` Michael Snyder
2009-08-28 21:32                 ` Eli Zaretskii
2009-08-28 23:28                   ` Michael Snyder
2009-08-29  8:12                     ` Eli Zaretskii
2009-08-29 15:19                       ` Eli Zaretskii
2009-08-31 12:14                     ` Jakob Engblom
2009-08-31 13:06                       ` Jakob Engblom [this message]
2009-08-31 15:46                         ` Hui Zhu
2009-08-31 16:47                         ` Eli Zaretskii
2009-09-01  6:41                         ` Jakob Engblom
2009-12-15 19:41                         ` Michael Snyder
2009-12-16  8:01                           ` Vladimir Prus
2009-12-16 18:10                             ` Eli Zaretskii
2009-12-16 18:15                           ` Eli Zaretskii
2009-12-16 19:04                             ` Michael Snyder
2009-12-16 20:01                               ` Eli Zaretskii
2009-12-16 20:45                                 ` Vladimir Prus
2009-12-17 20:15                                   ` Eli Zaretskii
2010-02-12 21:36                                     ` Michael Snyder
2009-08-31 17:56                       ` Michael Snyder
2009-09-01  6:37                         ` Jakob Engblom
2009-08-29  7:37             ` Jakob Engblom
2009-08-28 10:44   ` Jakob Engblom

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='00d501ca2a34$93e5fe30$bbb1fa90$@com' \
    --to=jakob@virtutech.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox