Sourceware Bugzilla – Bug 12938
RFE: Find the regression point in the code
Last modified: 2013-03-04 18:08:50 UTC
Diego Novillo has asked to find where the execution of two inferiors (with two different executables) starts to differ - to find the exact regression point in the code.
Currently I use reverse execution to iterate down throught the code where the behavior still does / does not differ.
The problem with the automatic way may be to properly differentiate ignorable vs. significant execution differences.
A while ago someone posted <http://comments.gmane.org/gmane.comp.gdb.devel/27441>
showing an approach for this use case that builds on top of gdb, rather than built in:
"(...) which was written to run two gdb's debugging a stage1 and
stage2 generation of a compiler and single step until a line number differs.
It is written in Python and uses pexpect"
From tgdb-0.1.tar.gz's README.
"TwinGDB is a front end to GDB which runs two instances of gdb on two
executables and will automatically single step them until a deviation
(seen by line number) occurs. Typically this is useful if you are
developing a program for a different archicture or if you are in
compiler development where a second generation build fails to behave
in exactly the same way as the first generation. It can also be used
to explore when a particular command line option takes effect. There
are probably more uses as well..
This program is in a pre alpha state, nevetheless, the author uses
it to debug GNU Modula-2.
As single stepping gdb is not exactly fast, the program can be
configured to skip functions, skip source files which reside in
particular directories, start stepping at a particular function and
finish at another etc."
Copied from 13207 for reference sake:
Such a script feels like more of a contrib-like patch, than part of gdb proper,
but it still feels like something gdb could/should provide.
When it works, it's a real timesaver, and the basic infrastructure shouldn't be
that hard to write in python (and if it is then we've found good places where
python needs to be extended).
*** Bug 13207 has been marked as a duplicate of this bug. ***