From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24387 invoked by alias); 2 Sep 2010 06:48:10 -0000 Received: (qmail 24379 invoked by uid 22791); 2 Sep 2010 06:48:09 -0000 X-SWARE-Spam-Status: No, hits=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.windriver.com (HELO mail.windriver.com) (147.11.1.11) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 02 Sep 2010 06:48:04 +0000 Received: from ALA-MAIL03.corp.ad.wrs.com (ala-mail03 [147.11.57.144]) by mail.windriver.com (8.14.3/8.14.3) with ESMTP id o826m2ZR013428 for ; Wed, 1 Sep 2010 23:48:02 -0700 (PDT) Received: from ala-mail09.corp.ad.wrs.com ([147.11.57.154]) by ALA-MAIL03.corp.ad.wrs.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 1 Sep 2010 23:48:01 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable x-cr-hashedpuzzle: CRqS Cto5 DSsQ D5rs EBUn GrOM I5ia JCgB JNC+ JVX2 JwsW KCTr KkvS LUft Lq2k Lq/5;1;ZwBkAGIAQABzAG8AdQByAGMAZQB3AGEAcgBlAC4AbwByAGcA;Sosha1_v1;7;{B2542E8D-4A5A-4859-AF3A-71CF7D5034B1};agBhAGsAbwBiAC4AZQBuAGcAYgBsAG8AbQBAAHcAaQBuAGQAcgBpAHYAZQByAC4AYwBvAG0A;Thu, 02 Sep 2010 06:33:43 GMT;UgBFADoAIAByAGUAdgBlAHIAcwBlACAAZABlAGIAdQBnAGcAaQBuAGcAIABpAG0AcABsAGUAbQBlAG4AdABhAHQAaQBvAG4A x-cr-puzzleid: {B2542E8D-4A5A-4859-AF3A-71CF7D5034B1} Content-class: urn:content-classes:message Subject: RE: reverse debugging implementation Date: Thu, 02 Sep 2010 06:48:00 -0000 Message-ID: In-Reply-To: <4C7566D3.70109@fano.co.uk> References: <4C712882.9040700@fano.co.uk> <312153.55254.qm@web112503.mail.gq1.yahoo.com> <4C7566D3.70109@fano.co.uk> From: "Engblom, Jakob" To: Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2010-09/txt/msg00001.txt.bz2 > > of memory locations before they are changed. Going back one > instruction then > > involves rolling back the memory changes, the registers are set up > then go > > forward n-1 instruction to go back one. If you go back in the gdb mailinglist, you will see that this is exactly how Wind River Simics does its reverse execution. Back up to a recent checkpoint, and then reexecute forward to some point in time. Silently record any breakpoints, and if you are running breakpoints backwards, go back to the checkpoint again and reexecute forward to the point in time where the breakpoint hits.=20=20 Works very well for a full-system simulator where the entire target state is encapsulated and controlled. I believe similar things have been done in the RTL simulation field in the 1990s, but I have only anecdotal evidence. If you have checkpoints/snapshots and a deterministic simulator it is an "obvious" thing to do. /jakob Jakob Engblom | Wind River | Technical Marketing Manager - Simics Stockholm, Sweden mobile +46 734 368 958 | email jakob.engblom@windriver.com