Ari64 said:
That seems tedious. What I do is calculate checksums in the interrupt handler, and find the point where they diverge. That gets it to within a million instructions or so. Then I do instruction-by-instruction tracing (or at least branches and loads/stores) starting from the last interrupt where they matched. Why do you dislike comparing traces? It isn't hard to diff the files and find the non-matching lines.
It's logarithmic time. It's manual work, but it doesn't take a long time. Of course, it can be automated as well; the fact that I'm doing it manually isn't really the point.
I dislike comparing traces for the same reason that notaz does, because the files get huge very quickly and slow down the emulation by a couple orders of magnitude. Add in the time it takes to transfer this file between an embedded platform and a PC and the answer should be pretty obvious why I'd want to avoid this. Sure, occasionally the state will diverge and then merge back, so that you miss the first divergence while binary searching, but this is uncommon enough to make it worth dealing with specially when it happens.