From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31083 invoked by alias); 10 Jun 2011 01:55:25 -0000 Received: (qmail 31011 invoked by uid 22791); 10 Jun 2011 01:55:25 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-gx0-f169.google.com (HELO mail-gx0-f169.google.com) (209.85.161.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Jun 2011 01:55:10 +0000 Received: by gxk23 with SMTP id 23so1711296gxk.0 for ; Thu, 09 Jun 2011 18:55:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.183.231 with SMTP id q67mr1822849yhm.286.1307670909283; Thu, 09 Jun 2011 18:55:09 -0700 (PDT) Received: by 10.236.114.137 with HTTP; Thu, 9 Jun 2011 18:55:09 -0700 (PDT) In-Reply-To: References: <158712.44942.qm@web112515.mail.gq1.yahoo.com> Date: Fri, 10 Jun 2011 01:55:00 -0000 Message-ID: Subject: Re: Re: ReBranch - a record-replay debugging tool From: pi3orama To: paawan oza , Nan Wang Cc: gdb@sourceware.org Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes 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: 2011-06/txt/msg00060.txt.bz2 Hi, ReBranch instruments all indirect branch instruction (such as jnz, jmp *0x12345, call *%eax..., and syscall), records their branch targets. For system calls, ReBranch also record their results (for write(), ReBranch records its return value; for read(), ReBranch records its return value as well as the data it retrieves). It also records the result of 'rdtsc'. All instrumentation is done dynamically at runtime -- no recompilation or relinking is required. On , paawan oza wrote: > Hi, > > > > Is it something like you do an instrumentation in object code....mostly at > all > > control flows and system calls. > > and record some things. > > so indirectly you do not record every instruction, but you need to modify > object > > code by binary instrumentation. > > > > but what I fail to understand is; what all do you record ? > > > > > > Regards, > > Oza. > > > > > > > > ----- Original Message ---- > > From: Nan Wang pi3orama@gmail.com> > > To: Pedro Alves pedro@codesourcery.com>; gdb@sourceware.org > > Sent: Thu, June 9, 2011 10:09:09 PM > > Subject: Re: ReBranch - a record-replay debugging tool > > > > What I mean "control-flow only debugging" is: > > > > Sometimes user only use GDB's control-flow functions, such as 'c', 'b', > > 'n', 's' ... to watch how the program get to the bug. He or she doesn't > > care the variable name, the memory and some data-flow information. > > > > ReBranch demands "control-flow only debugging" because it only records > > every branch instruction. In current implementation (the modified > > version of gdbserver), the replayer still need to create a process and > > use ptrace to control it. When data-flow have error (caused by data-race > > in multi threading situation), the ptraced process will generate > > segfault for every instructions, which slows down the performance. > > > > ReBranch have a GUI replayer -- ReBranchK -- which is a simple > > control-flow-only debugging tool. ReBranchK doesn't really create the > > process and debug it. It 'executes' the program virtually by reads the > > log and shows corresponding source code. It implements 's', 'b' and 'c' > > command. However, when writing ReBranchK, I found that, without stack > > information, many useful control-flow command such as 'n' and 'bt' are > > hard to be implemented. Therefore, I hope someone help me to put this > > "control-flow only debugging" function into gdbserver. > > > Can you clarify what do you mean by "control-flow only debugging"? > > > > > > (Note: I haven't had the time yet to read your document on ReBranch, > > > so I don't really know how it works or why would you need gdbserver > > > for replay) > > > > >