Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Monitoring distributed real-time systems
Real-Time Systems
A constant propagation algorithm for explicitly parallel programs
International Journal of Parallel Programming - Special issue on languages and compilers for parallel computing. Part I
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Towards Systematic Testing of Distributed Real-Time Systems
RTSS '99 Proceedings of the 20th IEEE Real-Time Systems Symposium
Replay Debugging of Real-Time Systems Using Time Machines
IPDPS '03 Proceedings of the 17th International Symposium on Parallel and Distributed Processing
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Concurrent programming without locks
ACM Transactions on Computer Systems (TOCS)
Introduction to Software Testing
Introduction to Software Testing
Software debugging and testing using the abstract diagnosis theory
Proceedings of the 2011 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
Built-in coloring for highly-concurrent doubly-linked lists
DISC'06 Proceedings of the 20th international conference on Distributed Computing
Hi-index | 0.00 |
In this paper, we propose an automated technique for optimal instrumentation of multi-threaded programs for debugging and testing of concurrent data structures. We define a notion of observability that enables debuggers to trace back and locate errors through data-flow instrumentation. Observability in a concurrent program enables a debugger to extract the value of a set of desired variables through instrumenting another (possibly smaller) set of variables. We formulate an optimization problem that aims at minimizing the size of the latter set. In order to cope with the exponential complexity of the problem, we present a SAT-based solution. Our approach is fully implemented and experimental results on popular concurrent data structures (e.g., linked lists and red-black trees) show significant performance improvement in optimally-instrumented programs using our method as compared to ad-hoc over-instrumented programs.