From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21333 invoked by alias); 6 May 2009 19:44:18 -0000 Received: (qmail 21313 invoked by uid 22791); 6 May 2009 19:44:16 -0000 X-SWARE-Spam-Status: No, hits=0.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_37,RCVD_IN_JMF_BL,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Received: from mtaout6.012.net.il (HELO mtaout6.012.net.il) (84.95.2.16) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 06 May 2009 19:44:09 +0000 Received: from conversion-daemon.i-mtaout6.012.net.il by i-mtaout6.012.net.il (HyperSendmail v2007.08) id <0KJ800E00MQ9NU00@i-mtaout6.012.net.il> for gdb-patches@sourceware.org; Wed, 06 May 2009 22:42:30 +0300 (IDT) Received: from HOME-C4E4A596F7 ([77.127.230.216]) by i-mtaout6.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0KJ800E5BMQQII00@i-mtaout6.012.net.il> for gdb-patches@sourceware.org; Wed, 06 May 2009 22:42:26 +0300 (IDT) Date: Wed, 06 May 2009 19:44:00 -0000 From: Eli Zaretskii Subject: [doc/RFA] Describe reverse execution with process record and replay To: gdb-patches@sourceware.org Reply-to: Eli Zaretskii Message-id: <83r5z2c91n.fsf@gnu.org> 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-05/txt/msg00134.txt.bz2 Would people please eyeball the text below and see if my understanding of the code and what's been said here recently is correct? 2009-05-06 Eli Zaretskii * gdb.texinfo (Process Record and Replay): Add description of reverse execution. Index: gdb/doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.589 diff -u -r1.589 gdb.texinfo --- gdb/doc/gdb.texinfo 1 May 2009 09:11:24 -0000 1.589 +++ gdb/doc/gdb.texinfo 6 May 2009 19:40:37 -0000 @@ -5008,10 +5008,9 @@ @cindex process record and replay @cindex recording inferior's execution and replaying it -In an architecture environment that supports process recording and -replay, a special @dfn{process record and replay} target can record a -log of the process execution, and replay it later with both forward -and reverse execution commands. +On some platforms, @value{GDBN} provides a special @dfn{process record +and replay} target that can record a log of the process execution, and +replay it later with both forward and reverse execution commands. @cindex replay mode When this target is in use, if the execution log includes the record @@ -5021,7 +5020,8 @@ code execution are taken from the execution log. While code is not really executed in replay mode, the values of registers (including the program counter register) and the memory of the inferior are still -changed as they normally would. +changed as they normally would. Their contents are taken from the +execution log. @cindex record mode If the record for the next instruction is not in the execution log, @@ -5029,6 +5029,18 @@ inferior executes normally, and @value{GDBN} records the execution log for future replay. +The process record and replay target supports reverse execution +(@pxref{Reverse Execution}), even if the platform on which the +inferior runs does not. However, the reverse execution is limited in +this case by the range of the instructions recorded in the execution +log. In other words, reverse execution on platforms that don't +support it directly can only be done in the replay mode. + +When debugging in the reverse direction, @value{GDBN} will work in +replay mode as long as the execution log includes the record for the +previous instruction; otherwise, it will work in record mode, if the +platform supports reverse execution, or stop if not. + For architecture environments that support process record and replay, @value{GDBN} provides the following commands: