К основному содержанию
скилл CX Codex

core-dumps — скилл для Claude Code: разбор краш-дампов

Учит агента включать core dumps, грузить их в GDB или LLDB и снимать стек без повторного запуска упавшей программы.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill core-dumps -a claude-code
Открыть на GitHub

Что делает core-dumps

Скилл описывает весь путь от падения бинарника до читаемого стека. Сначала включение дампов: ulimit -c unlimited на одну сессию, строки в /etc/security/limits.conf для постоянного режима, шаблон имени через kernel.core_pattern. На системах с systemd добавляется работа с coredumpctl — список падений, coredumpctl info, загрузка в GDB и выгрузка файла через coredumpctl dump. Для macOS отдельный раздел: дампы ложатся в /cores, а для служб под launchd лимит задаётся в plist.

Дальше разбор. В GDB агент грузит бинарник вместе с core-файлом и идёт по шагам: bt, bt full, info registers, переход по кадрам, thread apply all bt full для многопоточных падений. В LLDB то же самое через target create ./prog --core core.12345 и thread backtrace all. Если бинарник stripped, скилл показывает два пути: debuginfod с переменной DEBUGINFOD_URLS и ручной поиск debug-пакета по build ID, который снимается через readelf -n.

Отдельный раздел про сборку: objcopy --only-keep-debug, затем --add-gnu-debuglink, чтобы GDB сам находил символы. Есть и быстрый вариант без интерактивной сессии — gdb -batch с bt full и записью в файл. Учтите: debuginfod-find и eu-readelf требуют установленного пакета elfutils, а coredumpctl работает только там, где дампы собирает systemd.

Какие задачи решает

  • включить запись core-дампов на Linux и macOS
  • загрузить core-файл в GDB или LLDB и снять стек
  • получить символы для stripped-бинарника через debuginfod
  • разобрать падение многопоточного процесса по всем тредам
  • выгрузить дамп из coredumpctl и отдать его коллеге

Примеры запросов агенту

  • Программа упала в проде, есть core-файл — покажи стек через GDB
  • Как включить core dumps на Linux, чтобы дампы писались в /tmp?
  • У меня stripped-бинарник и core, помоги достать символы через debuginfod

Как установить core-dumps

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill core-dumps -a claude-code

2Вручную: положить файлы

~/.claude/skills/core-dumps/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/core-dumps/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о core-dumps

Как установить core-dumps в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill core-dumps -a claude-code. Скилл окажется в ~/.claude/skills/core-dumps/SKILL.md.

Что делает core-dumps?

Проводит агента по включению core-дампов, их сбору и анализу в GDB или LLDB. Программу перезапускать не нужно — всё читается из дампа.

Что нужно для работы с символами?

Либо настроенный DEBUGINFOD_URLS с установленным клиентом debuginfod, либо debug-пакет под ваш дистрибутив. Build ID снимается через readelf -n.

Исходный текст

SKILL.md · MIT
---
name: core-dumps
description: Core dump analysis skill for production crash triage. Use when loading core files in GDB or LLDB, enabling core dump generation on Linux/macOS, mapping symbols with debuginfo or debuginfod, or extracting backtraces from crashes without re-running the program. Activates on queries about core files, ulimit, coredumpctl, debuginfod, crash triage, or analyzing segfaults from production binaries.
---

# 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)

```bash
# 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):

```bash
# 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)

```bash
# 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

```bash
# 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

```bash
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.

```bash
# 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

```bash
# 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.

```bash
# 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

```bash
# 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](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

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
cli-anything-lldb HKUDS Скилл запускает структурированные LLDB-сессии с JSON-выводом: ставит точки останова, изучает кадры и память, подключается к процессам. CX Codex +1 405установок dbg theodo-group Скилл учит агента работать с CLI-отладчиком dbg: ставить брейкпоинты, шагать по коду, смотреть переменные и править JS/TS без перезапуска. CX Codex +1 620установок nodejs-core mcollina Скилл для правок и отладки ядра Node.js: коммиты и PR в nodejs/node, нативные краши, V8, node-gyp, N-API и libuv. CX Codex +1 1 900установок c-bounds-safety superagents-lab Помогает внедрить расширение -fbounds-safety в C-код, настроить аннотации указателей и отладить ошибки переполнения буфера во время сборки и в рантайме. CX Codex +1 623установок analyzing-memory-dumps-with-volatility mahipal Скилл помогает расследовать дампы оперативной памяти через Volatility 3: выявляет скрытые процессы, инъекции кода, открытые сокеты и извлекает пароли из RAM. CX Codex +1 354установок debugging-instruments dpearson2699 Помогает искать утечки памяти, зависания главного потока и сбои в iOS-приложениях через LLDB, Memory Graph Debugger и Instruments. CX Codex +1 4 100установок

Из того же набора62

cmake Скилл настраивает сборку проектов на C и C++ по правилам современного CMake. Пригодится при написании CMakeLists.txt, подключении библиотек и сборке с санитайзерами. CX Codex +1 1 700установок static-analysis Настраивает статический анализ кода на C и C++ через clang-tidy, cppcheck и scan-build. Скилл помогает отобрать проверки и убрать ложные срабатывания. CX Codex +1 1 200установок gdb Ведёт агента по сессии GDB: точки останова, просмотр переменных, разбор падений, реверс-отладка и удалённая отладка через gdbserver. CX Codex +1 936установок llvm Скилл для работы с LLVM IR: генерация промежуточного представления, прогон пассов через opt, понижение до ассемблера через llc и разбор упущенных оптимизаций. CX Codex +1 899установок linux-perf Ведёт агента по perf на Linux: сэмплирование, счётчики железа, поиск горячих функций и сборка флеймграфов. Полезен, когда программа тормозит, а непонятно где. CX Codex +1 753установок clang Настраивает компилятор Clang, флаги оптимизации и линковщик lld в проектах на C и C++. Помогает включить статический анализ и ThinLTO. CX Codex +1 722установок gcc Подсказывает агенту флаги GCC для debug и release, разбирает ошибки компиляции и настраивает LTO с PGO. CX Codex +1 690установок cross-gcc Проведёт агента через настройку кросс-компиляции на GCC: триплеты, sysroot, pkg-config, тесты под QEMU и разбор типовых ошибок. CX Codex +1 682установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой