Dbxtool: A window-based symbolic debugger for sun workstations
Software—Practice & Experience
Debugging Parallel Programs with Instant Replay
IEEE Transactions on Computers
Series 32000 programmer's reference manual
Series 32000 programmer's reference manual
Parasight: a high-level debugger/profiler architecture for shared-memory multiprocessor
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Non-intrusive and interactive profiling in parasight
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
High-level debugging in parasight
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Symbolic Debugging of Optimized Code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Gprof: A call graph execution profiler
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Source language debugging tools.
Source language debugging tools.
Debugging standard ML without reverse engineering
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
A bibliography of parallel debuggers, 1990 edition
ACM SIGPLAN Notices
Correctness of trap-based breakpoint implementations
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Relative debugging and its application to the development of large numerical models
Supercomputing '95 Proceedings of the 1995 ACM/IEEE conference on Supercomputing
The Coign automatic distributed partitioning system
OSDI '99 Proceedings of the third symposium on Operating systems design and implementation
PDB: Pervasive Debugging With Xen
GRID '04 Proceedings of the 5th IEEE/ACM International Workshop on Grid Computing
Detours: binary interception of Win32 functions
WINSYM'99 Proceedings of the 3rd conference on USENIX Windows NT Symposium - Volume 3
Hi-index | 0.01 |
Existing kernel-level debugging primitives are inappropriate for instrumenting complex sequential or parallel programs. These functions incur a heavy overhead in their use of system calls and process switches. Context switches are used to alternately invoke the debugger and the target programs. System calls are used to communicate data between the target and debugger.None of this is necessary in shared-memory multiprocessors. Multiple processors concurrently run both the debugger and the target. Shared-memory is used to implement efficient communication. The target's state is accessed by running both the target and the debugger in the same address space. Finally, instrumentation points, which have largely been implemented as traps to the system, are reimplemented as simple branches to routines of arbitrary complexity maintained by the debugger. Not only are primitives such as conditional breakpoints thus generalized, but their efficiency is improved by several orders of magnitude. In the process, much of the traditional system's kernel support for debugging is reimplemented at user-level.This paper describes the implementation of debugging primitives in Parasight, a parallel programming environment. Parasight has been used to implement conditional breakpoints, an important primitive for both high-level and parallel debugging. Preliminary measurements indicate that Parasight breakpoints are 1000 times faster than the breakpoints in parallel “cdb”, a conventional UNIX debugger. Light-weight conditional breakpoints open up new opportunities for debugging and profiling both parallel and sequential programs.