Re: embedded dataflow tracking code?

Gene <gene.ressler@gmail.com>
Mon, 26 Jul 2010 16:24:38 -0700 (PDT)

          From comp.compilers

Related articles
embedded dataflow tracking code? dennis.yurichev@gmail.com (Dennis Yurichev) (2010-07-24)
Re: embedded dataflow tracking code? gneuner2@comcast.net (George Neuner) (2010-07-26)
Re: embedded dataflow tracking code? gene.ressler@gmail.com (Gene) (2010-07-26)
Re: embedded dataflow tracking code? dot@dotat.at (Tony Finch) (2010-07-27)
Re: embedded dataflow tracking code? walter@bytecraft.com (Walter Banks) (2010-07-30)
| List of all articles for this month |

From: Gene <gene.ressler@gmail.com>
Newsgroups: comp.compilers
Date: Mon, 26 Jul 2010 16:24:38 -0700 (PDT)
Organization: Compilers Central
References: 10-07-030
Keywords: debug, dataflow
Posted-Date: 26 Jul 2010 20:41:37 EDT

On Jul 24, 3:21 pm, Dennis Yurichev <dennis.yuric...@gmail.com> wrote:
> I would like to load debugger, attach to working process, and at some
> breakpoint, instead of numerical values in the CPU registers, I would
> like to see genesis of each value like "result of f(arg1, arg2,arg3)
> called at point X" or "result of comparison of values X and Y" and so
> on.
>
> Probably, compiler backend could embed some dataflow tracking code
> between basic blocks and store information about all variables flow in
> some separate data segment..
>
> Are there any known attempts or projects or...?


At one point Borland debuggers offered the capability to step backward
from a breakpoint. (I don't know if this is still true.) I recall one
could graphically depict the backward control flow in the source. It
appeared this was done entirely in the debugger, as no recompilation
was ever necessary to use the feature. It seemed likely to me that the
debugger must have been trapping every instruction and maintaining a
trace of branch sources and overwritten data. The trace was consulted
in backward order to do the reverse stepping. It sounds like you are
proposing that the compiled program do the same thing. I guess there
could be some performance advantage in maintaining the trace without
context swaps.


I obtained more insight by finding the right Google term, which is
"reverse execution." Borland called it this in 1991-1992. Apparently
it's now a feature in GDB v7 and other modern debuggers, which seem to
have re-discovered it only lately.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.