Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
mohitmishra786 avatar

Core Dumps

  • 425 installs
  • 155 repo stars
  • Updated June 27, 2026
  • mohitmishra786/low-level-dev-skills

core-dumps is an agent skill that analyzes native process core dumps with gdb and lldb for developers who must isolate segfaults, heap corruption, and production crashes from symbolized backtraces.

About

core-dumps is a low-level debugging skill in mohitmishra786/low-level-dev-skills for post-crash analysis of native binaries. It walks developers through loading core files in gdb or lldb, resolving symbols, reading backtraces, and inspecting memory and registers to pinpoint segfaults and heap corruption that only surface under production load. Developers reach for core-dumps when a service dies with a core dump artifact and logs alone do not reveal the faulting frame—common in C, C++, and Rust services, game engines, and embedded runtimes. The skill emphasizes symbol table usage and debugger commands that turn opaque crash artifacts into actionable root-cause lines.

  • Post-mortem native crash analysis
  • gdb/lldb core file loading workflows
  • Symbol resolution and stack unwinding
  • Memory, heap, and register inspection
  • Root-cause isolation for segfaults

Core Dumps by the numbers

  • 425 all-time installs (skills.sh)
  • +28 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #103 of 596 Debugging skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill core-dumps

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs425
repo stars155
Last updatedJune 27, 2026
Repositorymohitmishra786/low-level-dev-skills

How do you debug a native core dump crash?

Analyze native process core dumps after crashes using gdb/lldb, symbol tables, backtraces, and memory/register inspection to isolate segfaults and heap corruption in production.

Who is it for?

Systems engineers triaging segfaults or heap corruption in C, C++, or Rust binaries that left a core dump and incomplete logs.

Skip if: Developers debugging pure managed-language exceptions without native core files or symbol tables available.

When should I use this skill?

The user reports a segfault, heap corruption, native crash, or asks to analyze a core dump with gdb or lldb.

What you get

Symbolized backtrace, faulting stack frame identification, and register or memory inspection notes isolating the crash cause.

  • Symbolized backtrace
  • Root-cause crash frame analysis

Files

SKILL.mdMarkdownGitHub ↗

Core Dumps

Purpose

Guide agents through enabling, collecting, and analysing core dumps for post-mortem crash investigation without rerunning the buggy program.

Triggers

  • "My program crashed in production — how do I analyse the core?"
  • "How do I enable core dumps on Linux?"
  • "I have a core file but no symbols / source"
  • "How do I use debuginfod to get symbols for a core?"
  • "coredumpctl show me the crash"

Workflow

1. Enable core dumps (Linux)

# Per-session (lost on logout)
ulimit -c unlimited

# Persistent (add to /etc/security/limits.conf)
*   soft   core   unlimited
*   hard   core   unlimited

# Check current limit
ulimit -c

# Set core pattern (where and how cores are named)
# Default: 'core' in CWD — often not useful
sudo sysctl -w kernel.core_pattern=/tmp/core-%e-%p-%t
# %e = executable, %p = PID, %t = timestamp

# Persistent (add to /etc/sysctl.d/99-core.conf)
kernel.core_pattern=/tmp/core-%e-%p-%t
kernel.core_uses_pid=1

2. systemd/coredumpctl (modern Linux)

If systemd manages core dumps (common on Ubuntu 20+, Fedora, Arch):

# List recent crashes
coredumpctl list

# Show details of the latest crash
coredumpctl info

# Load latest crash in GDB
coredumpctl gdb

# Load specific PID crash
coredumpctl gdb 12345

# Export core file
coredumpctl dump -o myapp.core PID

Core storage location: /var/lib/systemd/coredump/.

3. Enable core dumps (macOS)

# macOS uses /cores by default (must be root-writable)
ulimit -c unlimited

# Check
ls /cores/

# launchd-launched services: set in plist
# <key>HardResourceLimits</key>
# <dict><key>Core</key><integer>9223372036854775807</integer></dict>

4. Analyse a core with GDB

# Load binary and core
gdb ./prog core.12345

# If the binary was stripped, provide the unstripped copy
gdb ./prog-with-symbols core.12345

# Essential first commands
(gdb) bt                    # call stack
(gdb) bt full               # stack + locals
(gdb) info registers        # CPU state at crash
(gdb) frame 2               # jump to interesting frame
(gdb) info locals           # local variables in frame
(gdb) print ptr             # inspect a pointer

# All threads (multi-threaded crash)
(gdb) thread apply all bt full

5. Analyse a core with LLDB

lldb ./prog -c core.12345

# Or
lldb
(lldb) target create ./prog --core core.12345

# Commands
(lldb) bt
(lldb) thread backtrace all
(lldb) frame select 2
(lldb) frame variable

6. Missing symbols: debuginfod

debuginfod serves debug symbols from a central server, mapping build IDs to DWARF data.

# Install client (Debian/Ubuntu)
sudo apt install debuginfod

# Enable (add to ~/.bashrc or /etc/environment)
export DEBUGINFOD_URLS="https://debuginfod.ubuntu.com https://debuginfod.elfutils.org"

# GDB auto-fetches symbols when DEBUGINFOD_URLS is set
gdb ./prog core

# Manually query
debuginfod-find debuginfo <build-id>
debuginfod-find source <build-id> /path/to/file.c

7. Missing symbols: manual approach

# Check if binary has a build ID
readelf -n ./prog | grep Build

# Find the correct debug package
# Debian: apt install prog-dbg or prog-dbgsym
# RPM: dnf install prog-debuginfo

# Point GDB to debug symbols directory
(gdb) set debug-file-directory /usr/lib/debug

# Or use eu-readelf to dump build ID, then find .debug file
eu-readelf -n ./prog
find /usr/lib/debug -name "*.debug" | xargs eu-readelf -n 2>/dev/null | grep <build-id>

8. Strip binaries and keep symbols

Best practice: build with symbols, strip for distribution, keep an unstripped copy.

# Build
gcc -g -O2 -o prog main.c

# Separate debug info
objcopy --only-keep-debug prog prog.debug
objcopy --strip-debug prog prog.stripped

# Add a debuglink so GDB finds the debug file automatically
objcopy --add-gnu-debuglink=prog.debug prog.stripped

# Deploy prog.stripped; keep prog.debug in a symbols store indexed by build-id

9. Quick triage from core without full debug session

# Print backtrace non-interactively
gdb -batch -ex 'bt full' -ex 'thread apply all bt full' ./prog core 2>&1 | tee crash.txt

# Print registers
gdb -batch -ex 'info registers' ./prog core

# Check signal that caused crash
gdb -batch -ex 'info signal' ./prog core

For a full cheatsheet covering core pattern tokens, coredumpctl, GDB/LLDB commands, debuginfod servers, and strip/symbol workflows, see references/cheatsheet.md.

Related skills

  • Use skills/debuggers/gdb for full GDB session details
  • Use skills/debuggers/lldb for LLDB-based analysis
  • Use skills/runtimes/sanitizers to catch the bug before it reaches production
  • Use skills/binaries/elf-inspection for readelf, build IDs, and binary inspection

Related skills

FAQ

Which debuggers does core-dumps use?

core-dumps guides analysis with gdb and lldb, loading core files, printing backtraces, and inspecting registers and memory to isolate segfaults and heap corruption in native processes.

When should I invoke core-dumps?

core-dumps fits after a native process crashes and leaves a core dump—especially production segfaults or heap corruption where application logs do not show the faulting instruction.

Debuggingmonitoringsupportinfra

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.