Observability Tools C++: Beyond GDB and printf - Tools to Understand the Behavior of Your Program
summary
Flame graphs via speedscope + perf (99Hz sampling) show where time actually goes; heap profiling with Heaptrack: 19MB peak, ~200k allocations reveals allocation hotspots and temporary buffers; coverage requires compiling with --coverage to count line executions; syscall tracing with strace exposes heavy read/open/brk patterns; perf stat demonstrates a concrete performance claim — matrix multiply dropping from 8s to 3s with cycles 154→57 and IPC improving 0.91→1.23 — and automatic vectorization explains the instruction drop.
AI-written summary · about
chapters (17)
- 0:00Introduction to tools
- 3:00Using flame graphs
- 6:13Analyzing flame graph views
- 8:32Interpreting perf data
- 10:41Performance optimization tips
- 12:04Heap profiling with HeapTrack
- 13:55Memory analysis visualization
- 15:37Memory leak detection
- 17:10Code coverage tools
- 18:50Building for coverage
- 20:39Analyzing coverage reports
- 22:24System call tracing
- 24:57Advanced strace techniques
- 27:30Debugging with strace
- 29:57Hardware performance profiling
- 32:44Vectorization and memory
- 39:50Debugging and future steps
related talks
44mNow You See Me Too: Visual Tooling for Advanced System Analysis
30mUnderstanding the runtime behaviors of C++ programs using uftrace tool
50mVisualizing Performance - The Developers’ Guide to Flame Graphs
17mExtending Flamegraphs for Multi-Dimensional Performance Analysis
56mContinuous Profiling the missing piece in your observability puzzle
26mProfiling Mastery: Decode Your Data and Elevate Observability
37mAdvanced Performance Profiling Using Perf Tools
53mSource Instrumentation for Monitoring C++ in Production
