Hard real-time systems have stringent timing and resource requirements. As such, debugging and tracing such systems often requires low-level hardware support, and online debugging is usually precluded entirely. In other areas, however, visual debugging has greatly improved program understanding and late cycle development times for nonreal-time applications. In this paper, we introduce a visual test and debug framework for hard real-time Java applications built around the JIVE platform and realized in the Fiji virtual machine.Our framework, called JI.FI ["dZIfi], provides high-level debugging support over low-level execution traces. JI.FI provides both powerful visualizations and real-time centric temporal query support. To ensure preservation of the real-time characteristics of the application being tested and debugged, JI.FI leverages a real-time event log infrastructure that logs only relevant application and virtual machine level events, such as synchronization and modifications to priorities or thread state. Our performance results indicate that our logging infrastructure is suitable for hard real-time systems, as the performance impact is both uniform and quantifiable.
2457dumps, requiring hardware support to be effective. This support is realized in the form of specific logic for capturing and filtering traces (logs), as well as buffers to store the trace itself. Unfortunately, such a setup only supports offline debugging via stored hardware traces.The loss of online symbolic debugging with breakpoints, stop-and-examine capabilities, and direct manipulation of program state due to real-time requirements creates a need for a replacement debugging technology. Pervasive software tracing with predictable performance coupled with offline tools capable of reconstructing detailed, symbolic debugger-style call graphs, and symbolic traces can help fill this need. Although many tools exist to help real-time embedded systems developers early in the software life-cycle, for instance to help debug models [5], only a handful of software tools exist for late life-cycle debugging [6].In this paper, we present the following contributions:1. An extensible visual debugging tool, JI.FI, for Java-based, hard real-time embedded systems built on the JIVE [7, 8] debugging platform. 2. A Java virtual machine (VM) independent, light-weight logging format to gather relevant debugging information for a given execution run. Unlike standard Java debug logging formats, this event log can be gathered in real-time. 3. A real-time aware temporal query processing engine able to answer temporal queries about the execution of the program. 4. An extension to the JI.FI system for debugging Safety Critical Java (SCJ) applications. 5. A detailed performance evaluation of the JI.FI system. This paper is an extended version of a work [9] that was previously published in the Proceedings of ACM JTRES 2012. This version includes details on an SCJ-specific extension to JI.FI and related evaluation; additional material on queries, including examples and ...