Analyzes un-instrumented ELF core files for memory leaks, growth, and corruption without requiring code instrumentation.
Chap is a memory analysis tool that examines un-instrumented ELF core files to detect memory leaks, growth, and corruption. It is designed for reliability in automated testing to catch leaks before code commits, and serves as an interactive tool to explain memory usage and supplement debuggers by showing memory status.
Developers and engineers working with C, C++, Python (CPython), or Go on 64-bit or 32-bit little-endian Linux systems who need to analyze memory issues in production or testing environments without instrumenting code.
Chap uniquely analyzes core files without requiring instrumented code, making it practical for production incidents or automated testing where instrumentation is impractical or distorts timing. It supports multiple allocators like glibc malloc and CPython, and offers an interactive REPL with command history and tab completion for exploration.
chap analyzes un-instrumented core files for leaks, memory growth, and corruption
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Chap identifies memory leaks directly from ELF core files without requiring instrumented code, making it practical for production incidents where instrumentation is impractical or distorts timing, as highlighted in the motivation.
Supports glibc malloc and CPython allocator out of the box, with tentative support for tcmalloc and partial support for golang, allowing analysis across different memory management systems as noted in the README.
Features an interactive REPL with command history and tab completion using the replxx library, enabling detailed memory investigation without needing external debuggers, as shown in the quick start example.
Designed for reliability in automated testing pipelines to catch leaks before code commits, with options like the -t flag for truncation checks that can fail builds, per the description and usage.
Lacks support for jemalloc and has only tentative or partial support for tcmalloc and golang, with golang specifically not supporting leak analysis, limiting its utility for diverse codebases.
Requires ELF core files for analysis, which may not be generated in all environments or for live processes, making it unsuitable for real-time debugging without prior core dump setup.
Distributed as source code requiring building on 64-bit Linux with cmake and submodule initialization, which adds setup overhead compared to pre-packaged tools, as noted in the quick start.