High-Level Heap Abstractions for Debugging Programs

March 2, 2010

Mark Marron


High-Level Heap Abstractions for Debugging Programs

Time:   11:00am
Location:   IMDEA conference room

The identification, isolation, and correction of program defects require the understanding of both the algorithmic structure of the code as well as the data structures that are being manipulated. While modern development environments provide substantial support for examining the program source code (the algorithmic aspect of the program), they provide relatively weak support for examining heap-based data structures. The goal of our work is to provide support for understanding data structures on the heap and the relations between them.

We introduce a novel approach that emphasizes high-level concepts about heap based data structures (their layout and size) and relationships between them (sharing and connectivity). The proposed abstract representation of the program is designed to help the developer look past, often unimportant, details and focus on understanding the overall structure of the program’s computation. When used in conjunction with the low-level view of individual values and objects provided by traditional debuggers, the high-level information in the abstract heap representation can be used to identify and diagnose subtle errors, as demonstrated via several case studies identifying heap related program defects. Further, we give an efficient algorithm for computing this abstract representation that scales quasilinearly with the size of the heap.