Platform-independent reverse debugging of the virtual machines

Prototyping and debugging of operating systems and drivers are very tough tasks because of hardware volatility, kernel panics, blue screens of death, long periods of time required to expose the bug, perturbation of the drivers by the debugger, and non-determinism of multi-threaded environment. This...

Full description

Bibliographic Details
Main Authors: Pavel Dovgalyuk, Denis Dmitriev, Vladimir Makarov
Format: Article
Language:English
Published: FRUCT 2016-04-01
Series:Proceedings of the XXth Conference of Open Innovations Association FRUCT
Subjects:
Online Access:https://fruct.org/publications/fruct18/files/Dov.pdf
_version_ 1818967458122301440
author Pavel Dovgalyuk
Denis Dmitriev
Vladimir Makarov
author_facet Pavel Dovgalyuk
Denis Dmitriev
Vladimir Makarov
author_sort Pavel Dovgalyuk
collection DOAJ
description Prototyping and debugging of operating systems and drivers are very tough tasks because of hardware volatility, kernel panics, blue screens of death, long periods of time required to expose the bug, perturbation of the drivers by the debugger, and non-determinism of multi-threaded environment. This paper shows how the deterministic replay of the virtual machine execution can be used to reduce the impact of these factors to the process of debugging. We present an approach to reverse debugging which allows creating multi-target whole-system debugger. Using this debugger one can investigate the failures affecting behavior of virtual hardware and guest software. Our debugger is capable of replaying whole virtual machine execution with reproducing internal state of all virtual devices. Although reverse debugging was a subject of many previous researches, there is no widely available practical tool for debugging software on different platforms. We present reverse debugger as a practical tool, which was tested for Í386, x86-64, MIPS, and ARM platforms, for Windows and Linux guest operating systems. One can use this debugger to debug user-and kernel-level code, deterministic functional modelling of peripheral devices and hardware platforms. We show that this tool incurs 15-40% recording overhead, which allows using our tool for debugging time-sensitive applications. We presented reverse execution implementation as a set of patches. Some of the patches were already included into mainline QEMU.
first_indexed 2024-12-20T13:49:07Z
format Article
id doaj.art-64aad414248b4e8eb2ce7c5e34998c86
institution Directory Open Access Journal
issn 2305-7254
2343-0737
language English
last_indexed 2024-12-20T13:49:07Z
publishDate 2016-04-01
publisher FRUCT
record_format Article
series Proceedings of the XXth Conference of Open Innovations Association FRUCT
spelling doaj.art-64aad414248b4e8eb2ce7c5e34998c862022-12-21T19:38:34ZengFRUCTProceedings of the XXth Conference of Open Innovations Association FRUCT2305-72542343-07372016-04-0166418414710.1109/FRUCT-ISPIT.2016.7561506Platform-independent reverse debugging of the virtual machinesPavel Dovgalyuk0Denis Dmitriev1Vladimir Makarov2Novgorod State University, Velikiy Novgorod, RussiaNovgorod State University, Velikiy Novgorod, RussiaNovgorod State University, Velikiy Novgorod, RussiaPrototyping and debugging of operating systems and drivers are very tough tasks because of hardware volatility, kernel panics, blue screens of death, long periods of time required to expose the bug, perturbation of the drivers by the debugger, and non-determinism of multi-threaded environment. This paper shows how the deterministic replay of the virtual machine execution can be used to reduce the impact of these factors to the process of debugging. We present an approach to reverse debugging which allows creating multi-target whole-system debugger. Using this debugger one can investigate the failures affecting behavior of virtual hardware and guest software. Our debugger is capable of replaying whole virtual machine execution with reproducing internal state of all virtual devices. Although reverse debugging was a subject of many previous researches, there is no widely available practical tool for debugging software on different platforms. We present reverse debugger as a practical tool, which was tested for Í386, x86-64, MIPS, and ARM platforms, for Windows and Linux guest operating systems. One can use this debugger to debug user-and kernel-level code, deterministic functional modelling of peripheral devices and hardware platforms. We show that this tool incurs 15-40% recording overhead, which allows using our tool for debugging time-sensitive applications. We presented reverse execution implementation as a set of patches. Some of the patches were already included into mainline QEMU.https://fruct.org/publications/fruct18/files/Dov.pdf debuggingdeterministic replayreverse debuggingkernel debuggingvirtual machineqemu
spellingShingle Pavel Dovgalyuk
Denis Dmitriev
Vladimir Makarov
Platform-independent reverse debugging of the virtual machines
Proceedings of the XXth Conference of Open Innovations Association FRUCT
debugging
deterministic replay
reverse debugging
kernel debugging
virtual machine
qemu
title Platform-independent reverse debugging of the virtual machines
title_full Platform-independent reverse debugging of the virtual machines
title_fullStr Platform-independent reverse debugging of the virtual machines
title_full_unstemmed Platform-independent reverse debugging of the virtual machines
title_short Platform-independent reverse debugging of the virtual machines
title_sort platform independent reverse debugging of the virtual machines
topic debugging
deterministic replay
reverse debugging
kernel debugging
virtual machine
qemu
url https://fruct.org/publications/fruct18/files/Dov.pdf
work_keys_str_mv AT paveldovgalyuk platformindependentreversedebuggingofthevirtualmachines
AT denisdmitriev platformindependentreversedebuggingofthevirtualmachines
AT vladimirmakarov platformindependentreversedebuggingofthevirtualmachines