Tracing And Replay Of Real-time Concurrent Programs In VxWorks




Journal Title

Journal ISSN

Volume Title


Computer Science & Engineering


Real-time concurrent programs are difficult to analyze, debug and test because of the existence of race conditions. In particular, cyclic debugging requires the ability to reproduce a failed execution. That is, when a failure is observed during a test run, it is often necessary to reproduce the test run as an effort to locate the bug that has caused the failure. However because of the variations in thread scheduling and signal latency, a real-time concurrent execution may not be reproduced simply by re-executing the program under test. In this thesis, we describe a language-based framework for tracing and replay of real-time concurrent programs in Vxworks. The framework consists of wrappers for Vxworks synchronization constructs like semaphores, message queues and threads. This framework supports two modes of execution, namely, trace and replay. In the trace mode, important synchronization events, with necessary debugging information, are recorded into a trace file. In the replay mode, a trace of synchronization events is read and used to control the behavior of threads so that these events are exercised in the same order as they were recorded. The ability of tracing and replay real-time concurrent executions facilitates the dynamic analysis and debugging of these executions. Unlike most existing frameworks, which are implemented in a platform-specific manner, our framework inserts additional runtime control at the programming language level and can be easily ported to other platforms.