Skip to main content


This module will introduce profiling, and debugging, two techniques for performing analysis of the runtime behavior of an application. Effective use of profiling and debugging techniques requires a basic understanding of system-level details related to compiling, linking, storing, and running executables, which this module will discuss.

Profiling and debugging have different goals. Profiling focuses on characterizing the performance of an application, while debugging focuses on diagnosing faults. In particular, Debugging:

  • Helps one find defects, analyze failures, and analyze expected program flow.
  • Inspects and modifies the state of a running program, or performs post-mortem analysis of failures via inspecting memory dumps
  • Is harder in parallel applications

.. while Profiling:

  • Measures performance characteristics, helps identify areas for performance improvement.
  • Collects performance measurements of a running program, analyzes results afterward.
  • Is harder in parallel applications

Profiling and debugging tools and techniques for parallel applications will be discussed along with a survey of profiling and debugging tools available on Stampede2.

Douglas Fuller
Arizona State University
March 2008

Updated July 2014
Cornell Center for Advanced Computing