real world reverse debugging success story

Michael Snyder msnyder@vmware.com
Thu Nov 12 01:09:00 GMT 2009


Hey guys,

Just wanted to make note that I used reverse debugging to
solve a real world gdb bug (the recently submitted one for
dcache.c).

First I found where the lists were cross-linked, then I put
watchpoints on the list elements that were crossed, and ran
backwards.  One watchpoint took me to dcache_alloc, and the
other to dcache_invalidate.

Then I used some bookmarks to look at the state of the list
before and after, and close in on the actual problem (which
was in fact in another function).

Doug rewrote my patch (thanks Doug), but he verified that
the actual bug was exactly what process record revealed it
to be.

Whee!
Michael

Stats: used an 8 million instruction cache, running as a
ring buffer.  Had to record over 80 million instructions
before I tripped the bug.  Saved core file with record log
was 250 megabytes, and reloaded fine.



More information about the Gdb mailing list