Abstract

Reverse debugging is software development technique that effectively helps to fix bugs caused by nondeterministic program behavior. It allows inspecting past program’s state without rerun. The paper describes implementation of software reverse debugging using deterministic replay based on the QEMU emulator. We present ways to improve debugging performance by reducing saved data, using copy-on-write snapshots’ format and indexing/compressing of replay log. QEMU supports a common user interface for reverse debugging in GDB debugger which allows using reverse-continue, reverse-nexti, reverse-stepi and reverse-finish commands. Time required for these commands’ execution depends on taking snapshots frequency in recording replay log. This paper also presents assessment of snapshots frequency for better performance.

Highlights

  • Reverse debugging is software development technique that effectively helps to fix bugs caused by nondeterministic program behavior

  • The paper describes implementation of software reverse debugging using deterministic replay based on the QEMU emulator

  • Record/replay subsystem saves these events into the log at the recording phase and reads them at the replaying phase

Read more

Summary

Введение

Процесс отладки может оказаться очень трудоемким и занять непредсказуемое количество времени. Программист перезапускает программу, останавливает ее в более раннем моменте времени и изучает ее состояние с помощью отладчика и трассировки, так происходит несколько раз. При остановке или выполнении программы по шагам обмен сетевыми пакетами может быть нарушен из-за истечения таймаута соединения. Аппаратные устройства являются источниками недетерминизма, и алгоритм их работы может быть нарушен из-за задержек при отладке. Вызванных описанными трудностями, может быть достигнуто посредством использования механизма обратной отладки. Обратная отладка может быть реализована с помощью трассировки или детерминированного воспроизведения. По этой причине детерминированное воспроизведение является более предпочтительным способом реализации обратной отладки [1]. Для создания интерактивного обратного отладчика необходимо реализовать детерминированное воспроизведение работы отлаживаемой системы, механизм перехода на произвольное количество инструкций вперед и назад и возможность исследования состояния системы в заданный момент времени

Средства детерминированного воспроизведения
Корректность и производительность воспроизведения
Реализация функций отладчика
Исследование гостевой системы
Предлагаемая реализация обратной отладки
Направления дальнейших исследований
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call