A structural view of the Cedar programming environment
ACM Transactions on Programming Languages and Systems (TOPLAS)
MIPS RISC architecture
High-level debugging in parasight
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Experiences creating a portable cedar
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Combining generational and conservative garbage collection: framework and implementations
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Eighty-Three Eighty-Six Microprocessor Handbook
Eighty-Three Eighty-Six Microprocessor Handbook
A processor for a high-performance personal computer
ISCA '80 Proceedings of the 7th annual symposium on Computer Architecture
Gprof: A call graph execution profiler
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
A portable interface for on-the-fly instruction space modification
ASPLOS IV Proceedings of the fourth international conference on Architectural support for programming languages and operating systems
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
ASPLOS V Proceedings of the fifth international conference on Architectural support for programming languages and operating systems
Practical data breakpoints: design and implementation
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Detection and recovery of endangered variables caused by instruction scheduling
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Correctness of trap-based breakpoint implementations
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficiently counting program events with support for on-line queries
ACM Transactions on Programming Languages and Systems (TOPLAS)
Architectural support for performance tuning: a case study on the SPARCcenter 2000
ISCA '94 Proceedings of the 21st annual international symposium on Computer architecture
ACM SIGPLAN Notices
The Rio file cache: surviving operating system crashes
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
KDB: a multi-threaded debugger for multi-threaded applications
SPDT '96 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
Comparison checking: an approach to avoid debugging of optimized code
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
A thread-aware debugger with an open interface
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Efficient algorithms for bidirectional debugging
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
The Design and Verification of the Rio File Cache
IEEE Transactions on Computers
Recompilation for debugging support in a JIT-compiler
Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Extension Language Automation of Embedded System Debugging
Automated Software Engineering
Dynamic Query-Based Debugging of Object-Oriented Programs
Automated Software Engineering
Relative Debugging of Automatically Parallelized Programs
Automated Software Engineering
A Concept of Portable Monitoring of Multithreaded Programs
ICCS '02 Proceedings of the International Conference on Computational Science-Part II
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Integrating and Reusing GUI-Driven Applications
ICSR-7 Proceedings of the 7th International Conference on Software Reuse: Methods, Techniques, and Tools
Retargetable and reconfigurable software dynamic translation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
METRIC: tracking down inefficiencies in the memory hierarchy via binary rewriting
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
A monitoring system for multithreaded applications
Future Generation Computer Systems - Tools for program development and analysis
SoftTest: a framework for software testing of Java programs
eclipse '03 Proceedings of the 2003 OOPSLA workshop on eclipse technology eXchange
Demand-driven structural testing with dynamic instrumentation
Proceedings of the 27th international conference on Software engineering
Instrumentation in software dynamic translators for self-managed systems
WOSS '04 Proceedings of the 1st ACM SIGSOFT workshop on Self-managed systems
Tdb: a source-level debugger for dynamically translated programs
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Low overhead program monitoring and profiling
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
The Tau Parallel Performance System
International Journal of High Performance Computing Applications
Dimension: an instrumentation tool for virtual execution environments
Proceedings of the 2nd international conference on Virtual execution environments
Detours: binary interception of Win32 functions
WINSYM'99 Proceedings of the 3rd conference on USENIX Windows NT Symposium - Volume 3
Jazz2: a flexible and extensible framework for structural testing in a Java VM
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Jazz: a tool for demand-driven structural testing
CC'05 Proceedings of the 14th international conference on Compiler Construction
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
The operating system: should there be one?
Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
Hi-index | 0.00 |
We have designed and implemented a fast breakpoint facility. Breakpoints are usually thought of as a feature of an interactive debugger, in which case the breakpoints need not be particularly fast. In our environment breakpoints are often used for non-interactive information gathering; for example, procedure call count and statement execution count profiling [Swinehart, et al.]. When used non-interactively, breakpoints should be as fast as possible, so as to perturb the execution of the program as little as possible. Even in interactive debuggers, a conditional breakpoint facility would benefit from breakpoints that could transfer to the evaluation of the condition rapidly, and continue expeditiously if the condition were not satisfied. Such conditional breakpoints could be used to check assertions, etc. Program advising could also make use of fast breakpoints [Teitelman]. Examples of advising include tracing, timing, and even animation, all of which should be part of an advanced programming environment.We have ported the Cedar environment from a machine with microcode support for breakpoints [Lampson and Pier] to commercial platforms running C code [Atkinson, et al.]. Most of our ports run under the Unix* operating system, so one choice for implementing breakpoints for Cedar was to use the breakpoint facility provided by that system. The breakpoints provided by the Unix operating system are several orders of magnitude too slow (and also several process switches too complicated) for the applications we have in mind. So we designed a breakpoint system that was fast enough for our purposes.Breakpoints for uni-processors running single threads of control used to be fast and simple to implement. This paper shows that breakpoints can still be fast, even with multiple threads of control on multi-processors. This paper describes problems in the design of a breakpoint package for modern computer architectures and programming styles, and our solutions to them for a particular architecture.