I Fundamental Concepts.- 1 Introduction.- 1.1 Understanding Program Behavior.- 1.2 Types of Program-Understanding Tools.- 1.3 Scope of This Book.
- 1.4 Contributions.- 1.5 Overview of This Book.- 2 Related Work.- 2.1 Information Sources and Access Methods.- 2.
2 Execution Models.- 2.3 User Interaction Facilities.- 2.4 Runtime Instrumentation Systems.- 2.4.1 Dbx.
- 2.4.2 Dalek and Duel.- 2.4.3 cdb and Deet.- 2.4.
4 Parasight.- 2.4.5 FIELD.- 2.4.6 ATOM and EEL.- 2.
5 Manual Instrumentation Systems.- 2.5.1 BALSA.- 2.5.2 Smalltalk.- 2.
5.3 Tango.- 2.5.4 BEE++.- 2.5.5 PV.
- 2.6 Interpreter Instrumentation.- 2.6.1 SNOBOL4.- 2.6.2 PECAN.
- 2.6.3 KAESTLE and FooScape.- 2.6.4 Dewlap.- 2.6.
5 SeePS.- 2.6.6 Dynascope.- 2.7 Instrumenting Compilers.- 2.7.
1 Voyeur.- 2.7.2 UW Illustrating Compiler.- 2.7.3 SMLD.- 2.
8 Existing Systems Support for Monitor Development.- 3 Visualization Principles and Techniques.- 3.1 Principles.- 3.1.1 Graphic Design Principles.- 3.
1.2 Visualization Principles.- 3.2 Techniques.- 3.2.1 Incremental Algorithms.- 3.
2.2 Radial Coordinates.- 3.2.3 Colors and Textures.- II An Execution Monitoring Framework for Icon.- 4 An Overview of the Alamo Architecture.- 4.
1 Inventory of Architecture Components.- 4.2 Standard Execution Monitoring Scenario.- 4.2.1 Preliminary Definitions.- 4.2.
2 Sources of Relevant Execution Behavior.- 4.2.3 Selecting or Developing Appropriate Monitors.- 4.2.4 Running the Target Program.- 4.
3 Framework Characteristics.- 4.3.1 Multitasking.- 4.3.2 Execution Control.- 4.
3.3 Visualization Support.- 4.4 Comparison with Related Systems.- 5 A Multitasking Icon Interpreter.- 5.1 Introduction.- 5.
2 Co-expressions.- 5.2.1 Creating Co-expressions.- 5.2.2 Co-expression Transfers of Control.- 5.
2.3 Co-expression Keywords.- 5.3 MT Icon Preliminary Terminology.- 5.3.1 Name Spaces.- 5.
3.2 Program and Co-expression State.- 5.4 Tasks: An Extended Co-expression Model.- 5.4.1 Task Creation.- 5.
4.2 Running Other Programs.- 5.5 Data Access.- 5.5.1 Access Through Task Argument Lists.- 5.
5.2 Inter-task Access Functions.- 5.6 MT Icon Summary.- 6 Execution Monitoring in MT Icon.- 6.1 Terminology.- 6.
1.1 Events.- 6.1.2 Event Codes and Values.- 6.1.3 Event Reporting and Masking.
- 6.2 Obtaining Events Using evinit.- 6.2.1 Setting Up an Event Stream.- 6.2.2 EvGet().
- 6.2.3 Event Masks and Value Masks.- 6.3 Instrumentation in the Icon Interpreter.- 6.3.1 Explicit Source Related Events.
- 6.3.2 Implicit Runtime System Events.- 6.4 Artificial Events.- 6.4.1 Virtual Events Using event().
- 6.4.2 Pseudo Events for Tool Communication.- 6.5 Monitoring Techniques.- 6.5.1 Anatomy of an Execution Monitor.
- 6.5.2 Handling User Input.- 6.5.3 Querying the Target Program for More Information.- 6.6 Icon Graphics Capabilities.
- 6.7 Some Useful Library Procedures.- 6.8 Typical Evolution of a Visualization Tool.- 6.8.1 Generate Log Files.- 6.
8.2 Depict the Log Files.- 6.8.3 Scale to Handle Real Problems.- 6.8.4 Focus on Behaviors of Interest.
- 6.8.5 Add User-Directed Navigation.- 6.9 Conclusions.- III Writing Visualization Tools.- 7 Following the Locus of Execution.- 7.
1 Location Events.- 7.2 A Simple Line Number Monitor.- 7.3 A Location Profile Scatterplot.- 7.4 Tracking Source File Changes.- 8 Monitoring Procedure Activity.
- 8.1 Activation Trees.- 8.2 An Animated Call-result Scatterplot.- 8.2.1 scatlib.- 8.
2.2 The Call-result Scatterplot Application.- 8.3 Algae.- 8.3.1 Algae Geometry.- 8.
3.2 Using evaltree() to Incrementally Update the Display.- 8.3.3 Algae Controls.- 8.4 Maintaining the Current Source File.- 9 Monitoring Memory Usage.
- 9.1 Allocation by Type.- 9.1.1 Pinwheel.- 9.1.2 Nova.
- 9.2 Cumulative Allocation by Type.- 9.2.1 Animating a Bar Graph.- 9.2.2 Pie Charts.
- 9.3 Running Allocation by Type.- 9.4 Survival Rates Across Collections.- 10 Monitoring String Scanning.- 10.1 Overview of String Scanning.- 10.
2 String Scanning Events.- 10.3 Absolute and Relative Position Changes.- 10.3.1 Visualizing Absolute Positions Within the Subject.- 10.3.
2 Visualizing Relative Position Changes.- 10.4 The Scanning Environment Tree.- 10.4.1 Updating Position in the Current Scanning Environment.- 10.4.
2 Drawing Pin wheel Sectors for Scanning Functions.- 10.4.3 Pinwheels for Nested Scanning Environments.- 10.5 Conclusions.- 11 Monitoring Structure and Variable Usage.- 11.
1 Visualizing Lists and List Accesses.- 11.2 Visualizing Heterogeneous Structures.- 11.3 Monitoring Variable References.- 11.3.1 Assignment Events.
- 11.3.2 Monitoring Variables by Name.- 11.3.3 Monitoring Individual Variables.- 11.3.
4 Detecting Structure Variable References.- IV Visualization in the Programming Environment.- 12 Monitor Coordination and Communication.- 12.1 Some Monitoring Configurations.- 12.2 Pros and Cons of the MC Approach.- 12.
3 Eve: An Execution Monitor Coordinator.- 12.4 Writing EMs to Run Under Eve.- 12.4.1 Client Environment.- 12.4.
2 General-Purpose Artificial Events.- 12.4.3 Monitor Communication Example.- 12.5 Eve in Operation.- 12.5.
1 Computation of the Minimal Event Set.- 12.5.2 The Event Code Table.- 12.5.3 Event Handling.- 12.
5.4 Eve''s Main Loop.- 12.6 Interactive Error Conversion.- 13 Performance.- 13.1 Costs of Multitasking and of Interpreter Instrumentation.- 13.
2 Varying Costs of Monitoring Language Features.- 13.3 Limitations of Graphics Hardware and Software.- 13.4 Cost Incurred by Monitor Coordinators.- 14 Conclusions and Future Work.- 14.1 Successes of the Framework.
- 14.2 Limitations of the Framework.- 14.3 Enhancements and Future Directions.- 14.3.1 Update Variation in Simultaneous Animations.- 14.
3.2 Concurrency Among Monitors.- 14.3.3 Integrating Monitors Into Coordinators.- 14.3.4 Integrating the Icon Interpreter and Compiler.
- 14.3.5 More Execution Monitors.- 14.3.6 More Types of Events; Finer Selection Controls.- 14.3.
7 Language Support for Trapped Variables.- 14.3.8 Preemptive Scheduling Monitor Coordinators.- 14.4 Final Thoughts.- Appendices.- A Algae.
- B Eve.- C Event Codes.- C.1 Classes of Events.- C.2 Individual Events.- D The MT Icon Implementation.- D.
1 Icon Interpreter Overview.- D.2 The MT Icon Core.- D.3 Monitoring Support.- E Software and Supporting Documentation.- References.