Abstract:
Abstract—Logging is an important feature for a software
system to record its run-time information. Detailed logging allows
developers to collect information in situations where they cannot
use an interactive debugger, such as continuous integration and
web application server cases. However, extensive logging leads
to larger execution traces because few instructions could be
repeated many times. To record detailed program behavior within
limited storage space constraints, we propose Near-Omniscient
Debugging, a methodology that records an execution trace using
fixed size buffers for each observed instruction. Our tool monitors
a Java program’s execution and annotates source code with
observed values in an HTML format. Developers can easily
investigate the execution and share the report on a web server.
In case of DaCapo benchmark applications, our tool requires
fewer than 1% of the complete execution traces to visualize all
runtime values used by 66% of instructions that are executed
less than 64 times. Developers also can obtain data dependencies
with precision 91.8% and recall 79.0% using this tool.
Index Terms—Dynamic Analysis, Logging, Software Visualization