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...
Main Authors: | , , |
---|---|
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 |