Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Methods to improve reverse debugging performance

https://doi.org/10.15514/ISPRAS-2015-27(2)-8

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.

About the Authors

M. A. Klimushenkova
Novgorod State University
Russian Federation


P. M. Dovgalyuk
Novgorod State University
Russian Federation


References

1. Dovgalyuk P.M. Obratnaya otladka programmnogo obespecheniya: monografiya. Novgorod State University. Velikij Novgorod 2013. 72 p. (in Russian)

2. Dovgalyuk P.M. Determinirovannoe vosproizvedenie processa vypolnenija programm v virtual'noj mashine. Trudy ISP RАN [The Proceedings of ISP RAS], vol. 21, 2011, pp. 123-132, ISSN 2220-6426 (Online), ISSN 2079-8156 (Print) (in Russian)

3. Dunlap, George W. and King, Samuel T. and Cinar, Sukru and Basrai, Murtaza A. and Chen, Peter M. ReVirt: enabling intrusion analysis through virtual-machine logging and replay. ACM SIGOPS Operating Systems Review - OSDI '02: Proceedings of the 5th symposium on Operating systems design and implementation, vol. 36, 2002, pp. 211-224.

4. Haikun Liu, Hai Jin, Xiaofei Liao, 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.

5. Integrated Virtual Debugger for Visual Studio Developer’s Guide. http://www.vmware.com/pdf/ws7_visualstudio_debug.pdf. Access date: 11.06.2015

6. Samuel T. King, George W. Dunlap, and Peter M. Chen. Debugging operating systems with time-traveling virtual machines. Proceedings of the 2005 USENIX Annual Technical Conference, USENIX, 2005, pp. 1-15

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

8. QEMU - open source processor emulator. http://wiki.qemu.org/Main_Page. Access date: 11.06.2015

9. Chia-Wei Hsu, Shiuhpyng Shieh. FREE: A Fine-grain Replaying Executions by Using Emulation. The 20th Cryptology and Information Security Conference (CISC 2010), Taiwan, 2010.

10. Bochs -the cross platform IA-32 emulator. http://bochs.sourceforge.net. Access date: 11.06.2015

11. Daniela A. S. de Oliveira, Jedidiah R. Crandall, Gary Wassermann, S. Felix Wu, Zhendong Su, and Frederic T.Chong. ExecRecorder: VM-based full-system replay for attack analysis and system recovery. Proc. of the 1st workshop on Architectural and system support for improving software dependability (ASID '06), 2006. pp. 66-71

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

13. Bob Boothe. Efficient Algorithms for Bidirectional Debugging. Proceedings of the 2000 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2000, pp. 299-310

14. Marc Rittinghaus, Konrad Miller, Marius Hillenbrand, and Frank Bellosa. Simuboost: Scalable parallelization of functional system simulation. In 11th International Workshop on Dynamic Analysis, WODA ’03, Houston, Texas, March 2013

15. Robert O'Callahan. Efficient Collection And Storage Of Indexed Program Traces. https://www.cs.purdue.edu/homes/xyzhang/fall07/Papers/Amber.pdf. Access date: 11.06.2015

16. Volatility - an advanced memory forensics framework. https://code.google.com/p/volatility/. Access date: 11.06.2015

17. Standalone Debugging Tools for Windows (WinDbg). http://msdn.microsoft.com/en-us/windows/hardware/hh852365. Access date: 11.06.2015

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

19. Fursova N.I., Dovgalyuk P.M., Vasil'ev I.A., Klimushenkova M.A., Makarov V.A. Sposoby obratnoj otladki mobil'nyh prilozhenij. Problemy informacionnoj bezopasnosti. Komp'juternye sistemy, vol. 3, Saint Petersburg 2014, pp. 50-56 (in Russian)

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


Review

For citations:


Klimushenkova M.A., Dovgalyuk P.M. Methods to improve reverse debugging performance. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2015;27(2):127-144. (In Russ.) https://doi.org/10.15514/ISPRAS-2015-27(2)-8



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)