You are required to read and agree to the below before accessing a full-text version of an article in the IDE article repository.
The full-text document you are about to access is subject to national and international copyright laws. In most cases (but not necessarily all) the consequence is that personal use is allowed given that the copyright owner is duly acknowledged and respected. All other use (typically) require an explicit permission (often in writing) by the copyright owner.
For the reports in this repository we specifically note that
- the use of articles under IEEE copyright is governed by the IEEE copyright policy (available at http://www.ieee.org/web/publications/rights/copyrightpolicy.html)
- the use of articles under ACM copyright is governed by the ACM copyright policy (available at http://www.acm.org/pubs/copyright_policy/)
- technical reports and other articles issued by M‰lardalen University is free for personal use. For other use, the explicit consent of the authors is required
- in other cases, please contact the copyright owner for detailed information
By accepting I agree to acknowledge and respect the rights of the copyright owner of the document I am about to access.
If you are in doubt, feel free to contact webmaster@ide.mdh.se
Preparing for Replay
Publication Type:
Licentiate Thesis
Publisher:
Mälardalen University Press
Abstract
Cyclic debugging is the process normally used for examining and
removing bugs in computer systems. For this process, the possibility
to deterministically repeat executions is a requirement - without
repeatible experiments, it is not certain that existing bugs can be
located. Thus, in order to debug real-time systems, which normally do
not allow repeatable experiments, additional methods are needed to
provide repeatability. Several solutions based on a resource demanding
record/replay approach have been proposed: By recording data
describing the occurencies of non-deterministic events during a
reference execution, and then using this data to force a consequtive
replay excecution to perform in the same way as the reference,
repeatability in experiments is achieved.We adhere to the previous work on deterministic replay by Thane et al.
The method assumes that memory resources have limited capacity
compared to the amount of data recorded. This assumption leads to that
data available after the completion of the reference execution does
not cover the reference execution in its entirety, wherefore replay
must be started from a state which is not the initial state of the
system. To facilitate this, at predefined locations in the code,
checkpoints are taken of the individual task-states. In order to reduce
the overhead imposed on the system, checkpoints are not required to be
exhaustive, only to cover the parts of the data-space with
non-deterministic properties.The combination of these factors leads to an environment that requires
new methods for initiating replay - one of the contribution of this
thesis is such a method. By treating each task in the system
independently, we show (by means of an industrial case-study) that a
restarted version of the system can be made to look like the reference
execution.In order to guarantee that a replay execution can always be performed,
the addition of this new method triggers the requirement of new
dynamic methods for managing data during recording. The second
contribution of this thesis is a dynamic memory manager that fills
this gap and is also shown to improve memory utilization in sporadic
real-time systems.
Bibtex
@misc{Huselius515,
author = {Joel Huselius},
title = {Preparing for Replay},
number = {16},
month = {November},
year = {2003},
publisher = {M{\"a}lardalen University Press},
url = {http://www.es.mdu.se/publications/515-}
}