CSc 620 Debugging, Profiling, Tracing, and Visualizing Programs 2005

In this seminar class we will study various ways of learning about a program. We're both interested in how to find bugs (logical bugs as well as performance bugs) in a program and how to present this information to the programmer.

Topics include

See this grant proposal for a good introduction to this class.

Course Contents

Necessary prerequisites

Preliminary course structure

The first half of the course:
  1. How do debuggers work?
  2. How do profilers work?
  3. How do program visualizers work?

The second half of the course:

  1. Pick a group to work with!
  2. Pick a project!
  3. Implement the project!
  4. Do a presentation to the class!
  5. Read more papers to get a more in-depth view of particular topics that interest you.

A list of papers that we might be reading can be found here.

Notes

Readings - Debuggers

  1. A Survey of Support For Implementing Debuggers
    Vern Paxson
  2. Playing with ptrace, Part I
  3. Playing with ptrace, Part II
  4. Practical Data Breakpoints: Design and Implementation
  5. Efficient Algorithms for Bidirectional Debugging
    Bob Boothe
  6. Fast breakpoints: design and implementation, Peter B. Kessler
  7. Debugging Operating Systems with Time-Traveling Virtual Machines,
    Samuel T. King, George W. Dunlap, and Peter M. Chen
  8. Reverse Execution of Java Bytecode,
    JONATHAN J. COOK
  9. RELATIVE DEBUGGING USING MULTIPLE PROGRAM VERSIONS, David Abramson and Rok Sosic

Readings - Profilers

  1. STOOP, The Sable Toolkit for Object-Oriented Profiling ,
    Rhodes Brown, Karel Driesen, John Jorgensen, Laurie J. Hendren, Qin Wang, Clark Verbrugge.
  2. gprof: a Call Graph Execution Profiler,
    Susan L. Graham, Peter B. Kessler, Marshall K. McKusick
  3. Continuous Profiling: Where Have All the Cycles Gone?
    Jennifer M. Anderson, Lance M. BERC, JEFFREY DEAN, SANJAY GHEMAWAT, MONIKA R. HENZINGER, SHUN-TAK A. LEUNG, RICHARD L. SITES, MARK T. VANDEVOORDE, CARL A. WALDSPURGER, WILLIAM E. WEIHL
  4. Java Virtual Machine Profiler Interface ,
    D. Viswanathan and S. Liang
  5. JaViz: A client/server Java profiling tool,
    I. H. Kazi, D. P. Jose, B. Ben-Hamida, C. J. Hescott, C. Kwok, J. A. Konstan, D. J. Lilja, and P.-C Yew
  6. Comprehensive Profiling Support in the Java Virtual Machine
  7. Vertical Profiling: Understanding the Behavior of Object-Oriented Applications ,
    Matthias Hauswirth, Peter F. Sweeney, Amer Diwan, Michael Hind
  8. Using Hardware Performance Monitors to Understand the Behavior of Java Applications,
    Peter F. Sweeney, Matthias Hauswirth, Brendon Cahoon, Perry Cheng, Amer Diwan, David Grove, Michael Hind
  9. PCT
  10. Simple and General Statistical Profiling with PCT
  11. Using the SimOS Machine Simulator to Study Complex Computer Systems,
    Mendel Rosenblum, Edouard Bugnion, Scott Devine, and Steve Herrod
  12. SimOS
  13. Profiling and Tracing in Linux,
    Shende

Readings - Program Visualization

  1. Combining Static and Dynamic Data in Code Visualization,
    David Eng

Back to CSc 620 Home Page