Skip to main content
Log in

Improving the performance of reverse debugging

  • Published:
Programming and Computer Software Aims and scope Submit manuscript

Abstract

Reverse debugging is the software development technique that effectively helps fix bugs occurring at the nondeterministic program behavior. It allows one to examine the past states of the program without rerunning it. An implementation of reverse debugging based on deterministic replay in the QEMU 2.0 emulator is described. A number of techniques improving the debugging performance due to reducing the amount of saved data, optimized storage of system snapshots, indexing, and compressing of the event log are proposed. The emulator can work together with the interactive GDB debugger, which makes it possible to use the reverse-continue, reverse-nexti, reverse-stepi and reverse-finish commands in the course of debugging. The execution time of these commands depends on the frequency of recording the system’s state snapshots. An estimate of the optimal frequency for the reverse-continue command is obtained.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Dovgalyuk, P.M., Reverse Software Debugging, Velikii Novgorod: Novg. Gos. Univ, 2013 [in Russian].

    Google Scholar 

  2. Dovgalyuk, P.M., Deterministic replay of the program execution path on a virtual machine, Trudy Inst. Syst. Programm. Ross Akad Nauk, 2011, vol. 21, pp. 123–132.

    Google Scholar 

  3. Dunlap, G.W., King, S.T., Cinar, S., Basrai, M.A., and Chen, P.M., ReVirt: Enabling intrusion analysis through virtual-machine logging and replay. ACM SIGOPS Operating Systems Review OSDI’02: in Proc. of the 5th Symposium on Operating Systems Design and Implementation (OSDI-2), ACM SIGOPS Operating Systems Review, 2002, vol. 36, pp. 211–224.

    Article  Google Scholar 

  4. Haikun Liu, Hai Jin, Xiaofei Liao and Zhengqiu Pan, XenLR: Xen-based Logging for Deterministic Replay, in Proc. of Japan-China Joint Workshop on Frontier of Computer Science and Technology, 2008, pp. 149–154.

    Google Scholar 

  5. Integrated Virtual Debugger for Visual Studio Developer’s Guide. http://www.vmware.com/pdf/ws7_visualstudio_debug.pdf. Accessed June 11, 2015.

  6. King, S.T., Dunlap, G.W., and Chen, P.M., Debugging operating systems with time-traveling virtual machines, in Proc. of the 2005 USENIX Annual Technical Conference, USENIX, 2005, pp. 1–15.

    Google Scholar 

  7. Dike, J., A user-mode port of the Linux kernel, in Proc. of the 2000 Linux Showcase and Conference, 2000.

    Google Scholar 

  8. QEMU—Open source processor emulator. http:// wiki.qemu.org/Main_Page

  9. Chia-Wei Hsu and Shiuhpyng Shieh, FREE: A Finegrain replaying executions by using emulation, in Proc. of the 20th Cryptology and Information Security Conference (CISC 2010), Taiwan, 2010.

    Google Scholar 

  10. Bochs—The cross platform IA-32 emulator. http://bochs.sourceforge.net

  11. De Oliveira, D.A.S., Crandall, J.R., Wassermann, G., Wu, S.F., Zhendong Su, and Chong, F.T., ExecRecorder: VM-based full-system replay for attack analysis and system recovery, in Proc. of the 1st Workshop on Architectural and System Support for Improving Software Dependability (ASID’06), 2006, pp. 66–71.

    Chapter  Google Scholar 

  12. GDB and Reverse Debugging. http://sourceware.org/gdb/news/reversible.html

  13. Boothe, B., Efficient algorithms for bidirectional debugging, in Proc. of the 2000 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2000, pp. 299–310.

    Chapter  Google Scholar 

  14. Rittinghaus, M., Miller, K., Hillenbrand, M., and Bellosa, F., Simuboost: Scalable parallelization of functional system simulation, in Proc. of the 11th International Workshop on Dynamic Analysis, WODA’03, Houston, Texas, 2013.

    Google Scholar 

  15. Robert O’Callahan, Efficient collection and storage of indexed program traces. https://www.cs.purdue.edu/homes/xyzhang/fall07/Papers/Amber.pdf

  16. Volatility—An advanced memory forensics framework. https://code.google.com/p/volatility/

  17. Standalone Debugging Tools for Windows (WinDbg). http://msdn.microsoft.com/enus/windows/hardware/hh852365

  18. Using DDMS. http://developer.android.com/tools/debugging/ddms.html

  19. Fursova, N.I., Dovgalyuk, P.M., Vasil’ev, I.A., Klimushenkova, M.A., and Makarov, V.A., Reverse debugging techniques for mobile applications, Problemy informacionnojbezopasnosti. Komp’yuternye sistemy, 2014, vol. 3, pp. 50–56.

    Google Scholar 

  20. Wireshark User’s Guide. https://www.wireshark.org/docs/wsug_html/

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to M. A. Klimushenkova.

Additional information

Original Russian Text © M.A. Klimushenkova, P.M. Dovgalyuk, 2017, published in Trudy Instituta Sistemnogo Programmirovaniya, vol. 27, issue 2, 2015, pp. 127–144.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Klimushenkova, M.A., Dovgalyuk, P.M. Improving the performance of reverse debugging. Program Comput Soft 43, 60–66 (2017). https://doi.org/10.1134/S0361768817010042

Download citation

  • Received:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1134/S0361768817010042

Navigation