Abstract
Large complex Ada real-time embedded software systems typically contain critical order-dependent unit elaboration sequences executed during system startup. However, software enhancements and maintenance activities can inadvertently alter unit dependencies and produce grammatically legal yet semantically illegal elaboration sequence orders. Location of failure during system boot-up is traditionally difficult to diagnose, as large legacy systems typically do not contain trace logging capabilities in unit elaboration regions. Additionally, the Ada language does not provide constructs for executing non-declarative expressions in package specifications, making unit specification elaboration trace logging impossible. Typical system boot failure diagnosis is a combination of educated guesswork, ad-hoc insertions of trace logging code at suspicious locations, and/or the creation of large quantities of temporary trace logging code, resulting in time-consuming iterations of altered builds, system execution, and subsequent analysis. This paper describes a Generic Reflective Declarative Elaboration Logger (GRDEL) which can be used in non-traditional source code locations anywhere declarations are grammatically legal. The tool provides previously unavailable Ada package Specification elaboration trace logging, formal run-time discovery of arbitrarily deeply nested unit name usage locations, implicit generation of trace information during separate logging instance creations, and facilitation of electronic code augmentation via identically formed logging usage expressions, which can automate a repeatable and deterministic instrumentation of extremely large and complex systems with or without permanent source code modifications.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have