Start date:


This project deals with investigation, design and development of methods and techniques for embedded multitasking real-time software debugging. Our vision is to provide an environment where debugging of multitasking real-time systems is no different than traditional debugging of sequential single-tasking non-real time software. Research ProblemsTraditionally, debugging is performed by the use of specialized debugger tools. Once a failure in a program is detected, the execution is repeated in a debugger tool, where you can single-step, breakpoint and watch selected variables during the re-execution. This is done repeatedly until the the bug that led to the failure is found. This method of debugging (called cyclic debugging) calls for a deterministic execution of the program, i.e. given the same input, the program will always follow the same path through the code and produce the same output. However, in the domain of multi-tasking real-time systems, very few executions are deterministically reproducable. Firstly, this is due to the fact that real-time systems traditionally interact with an external context via sensors and actuators. Real-time systems also depend heavily on the correctness of a real-time clock. These kinds of interactions are virtually impossible to reproduce deterministically. Secondly, multi-tasking systems include fundamentally non-deterministic aspects such as asynchronous preemptions and interrupts. In order to handle these problems, information of the non-deterministic aspects of the system needs to be monitored and extracted. This leads to yet another problem. Embedded systems, by definition, have very few interactive resources available and even though if extensive monitoring is possible within the system (which not always is the case), the monitored information might not be presented to the user in a proper way.

Henrik Thane, Adjunct Professor

Phone: 021-183600