Rather than sampling the "last" icount then shutting down the vm while it is running, stop it first. This allows the actual last icount in the trace to be found.
Signed-off-by: Nicholas Piggin <npig...@gmail.com> --- tests/avocado/reverse_debugging.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/avocado/reverse_debugging.py b/tests/avocado/reverse_debugging.py index a790c342a8..c84fbcd8bd 100644 --- a/tests/avocado/reverse_debugging.py +++ b/tests/avocado/reverse_debugging.py @@ -152,19 +152,20 @@ def reverse_debugging(self, shift=7, args=None, x86_workaround=False): if x86_workaround and i == 0 and self.vm_get_icount(vm) == 0: logger.warn('failed to take first step, stepping again') self.gdb_step(g) - if self.vm_get_icount(vm) != self.STEPS: + self.gdb_step(g) + if self.vm_get_icount(vm) != self.STEPS + 1: self.fail('icount (%d) does not match number of instructions stepped' % self.vm_get_icount(vm)) logger.info('continue running') self.gdb_cont_nowait(g) - while self.vm_get_icount(vm) <= self.STEPS: - pass + logger.info('stopping to read final icount') + vm.qmp('stop') last_icount = self.vm_get_icount(vm) logger.info('shutdown...') vm.shutdown() - logger.info("recorded log with %s+ steps" % last_icount) + logger.info("recorded log with %s steps" % last_icount) # replay and run debug commands vm = self.run_vm(False, shift, args, replay_path, image_path, port) -- 2.42.0