Fast breakpoints: design and implementation
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Dominators, super blocks, and program coverage
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
Residual test coverage monitoring
Proceedings of the 21st international conference on Software engineering
Efficient coverage testing using global dominator graphs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Fundamentals of Software Engineering
Fundamentals of Software Engineering
Efficient instrumentation for code coverage testing
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Profiling Java applications using code hotswapping and dynamic call graph revelation
WOSP '04 Proceedings of the 4th international workshop on Software and performance
Reducing Coverage Collection Overhead With Disposable Instrumentation
ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering
Optimized interval splitting in a linear scan register allocator
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Instrumentation in software dynamic translators for self-managed systems
WOSS '04 Proceedings of the 1st ACM SIGSOFT workshop on Self-managed systems
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Leveraging disposable instrumentation to reduce coverage collection overhead: Research Articles
Software Testing, Verification & Reliability
An automatically-generated run-time instrumenter to reduce coverage testing overhead
Proceedings of the 3rd international workshop on Automation of software test
Trace-based compilation for the Java HotSpot virtual machine
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Evaluation of trace inlining heuristics for Java
Proceedings of the 27th Annual ACM Symposium on Applied Computing
The Java Virtual Machine Specification, Java SE 7 Edition
The Java Virtual Machine Specification, Java SE 7 Edition
Hi-index | 0.00 |
Code coverage information is typically recorded by adding instrumentation to an application before or during execution. However, this has the disadvantage that the instrumentation decreases the performance. A high-performance virtual machine (VM), such as Oracle's Java HotSpot VM, is already designed to record profiling data for the executed application. This profiling data is intended to guide optimizations during just-in-time (JIT) compilation. In this paper, we propose a runtime system that allows deriving exact code coverage information from this recorded profiling data by guaranteeing certain system properties. With this approach, we avoid the hassle of instrumenting the application explicitly. Therefore, we minimize both the run-time overhead and the implementation effort for recording code coverage information. We implemented our approach for a variant of the Java HotSpot VM that uses a trace-based JIT compiler. However, our approach is simple and general enough to be applicable to most modern VMs. Our evaluation with industry-strength benchmark suites shows that this approach allows recording code coverage information while retaining almost full peak performance. So, our approach is also suitable for collecting code coverage information in day-to-day operation environments such as long running server applications.