This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Stopping reverse debugging behaves differently with btrace
- From: Marc Khouzam <marc dot khouzam at ericsson dot com>
- To: "gdb at sourceware dot org" <gdb at sourceware dot org>
- Date: Tue, 7 Jun 2016 20:13:11 +0000
- Subject: Stopping reverse debugging behaves differently with btrace
- Authentication-results: sourceware.org; auth=none
Hi,
I noticed a difference of behaviour when stopping reverse debugging
with btrace vs record/replay (full mode).
If full mode, if I step to line 200 and then back to line 150 then give
the record stop command, real execution will start from line 150 as
I step my program. (This is really cool btw.)
In btrace mode (I tried bts), after I step back to line 150 and send
the record stop command, GDB appears to still be at line 150 but on
the next step, execution jumps to line 200 before doing the step
operation.
I'm guessing this has to do with the fact that btrace does not store
registers and memory, so cannot restart execution just anywhere.
I find it strange though that when turning off record, every indication
to the user is that we are still at line 150, when in reality, GDB is
effectively back at line 200. This is particularly noticeable in a
frontends when execution jumps (unexpectedly) when the first step
is requested.
Variables also remain unavailable until the next step (or strangely,
until I send some register command).
I was wondering if GDB should reset its execution to the proper
place upon a 'record stop' for btrace? And notify the frontend of
that change.
Any opinions?
Thanks
Marc