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

gdb — скилл для Claude Code: отладка C/C++ через GDB

Ведёт агента по сессии GDB: точки останова, просмотр переменных, разбор падений, реверс-отладка и удалённая отладка через gdbserver.

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

Что делает gdb

Скилл описывает рабочий процесс GDB от первого запуска до сложных сценариев: диагностика крашей, запись и воспроизведение, удалённая отладка, инспекция потоков. Внутри — таблицы команд с сокращениями, примеры точек останова и watchpoint-ов, разбор типичных ошибок вроде No symbol table или ?? в backtrace.

Отдельные разделы посвящены многопоточности (thread apply all bt, set scheduler-locking on), реверс-отладке через record и Intel PT, а также подключению к gdbserver на удалённой машине. Есть готовый набор настроек для ~/.gdbinit и ссылки на справочник по pretty-printer-ам и Python-скриптам.

Скилл бесполезен, если бинарник собран без -g: без отладочной информации GDB не покажет исходники, и первым шагом всегда идёт пересборка с -g -Og. Для реверс-отладки через Intel PT нужен процессор с поддержкой Processor Trace, а программная запись заметно замедляет выполнение.

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

  • разобрать segfault по core dump
  • поставить условную точку останова на нужное значение
  • поймать момент изменения переменной через watchpoint
  • посмотреть стек всех потоков при зависании
  • воспроизвести баг в обратном порядке через record/replay

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

  • Моя программа падает с segfault — помоги разобрать core dump в GDB
  • Поставь breakpoint на функцию foo, если x > 10, и покажи locals
  • Подключись к gdbserver на 192.168.1.10:1234 и продолжи выполнение

Как установить gdb

1Через Skills CLI (Vercel)

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

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

~/.claude/skills/gdb/SKILL.md

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

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

Вопросы о gdb

Как установить gdb в Claude?

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

Что делает скилл gdb?

Проводит агента через сессию GDB: запуск, точки останова, просмотр переменных и регистров, разбор падений, многопоточная отладка, реверс-отладка и удалённое подключение через gdbserver.

Что нужно, чтобы скилл работал?

Бинарник должен быть собран с флагом -g, иначе GDB не покажет исходный код. Для реверс-отладки через Intel PT требуется поддержка Processor Trace на процессоре.

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

SKILL.md · MIT
---
name: gdb
description: GDB debugger skill for C/C++ programs. Use when starting a GDB session, setting breakpoints, stepping through code, inspecting variables, debugging crashes, using reverse debugging (record/replay), remote debugging with gdbserver, or loading core dumps. Activates on queries about GDB commands, segfaults, hangs, watchpoints, conditional breakpoints, pretty-printers, Python GDB scripting, or multi-threaded debugging.
---

# GDB

## Purpose

Walk agents through GDB sessions from first launch to advanced workflows: crash diagnosis, reverse debugging, remote debugging, and multi-thread inspection.

## Triggers

- "My program segfaults / crashes — how do I debug it?"
- "How do I set a breakpoint on condition X?"
- "How do I inspect memory / variables in GDB?"
- "How do I debug a remote embedded target?"
- "GDB shows `??` frames / no source"
- "How do I replay a bug deterministically?" (record/replay)

## Workflow

### 1. Prerequisite: compile with debug info

Always compile with `-g` (GCC/Clang). Use `-Og` or `-O0` for most debuggable code.

```bash
gcc -g -Og -o prog main.c
```

For release builds: use `-g -O2` and keep the binary with symbols (strip separately with `objcopy`).

### 2. Start GDB

```bash
gdb ./prog                          # load binary
gdb ./prog core                     # load with core dump
gdb -p 12345                        # attach to running process
gdb --args ./prog arg1 arg2         # pass arguments
gdb -batch -ex 'run' -ex 'bt' ./prog  # non-interactive (CI)
```

### 3. Essential commands

| Command | Shortcut | Effect |
|---------|----------|--------|
| `run [args]` | `r` | Start the program |
| `continue` | `c` | Resume after break |
| `next` | `n` | Step over (source line) |
| `step` | `s` | Step into |
| `nexti` | `ni` | Step over (instruction) |
| `stepi` | `si` | Step into (instruction) |
| `finish` | | Run to end of current function |
| `until N` | | Run to line N |
| `return [val]` | | Force return from function |
| `quit` | `q` | Exit GDB |

### 4. Breakpoints and watchpoints

```gdb
break main                          # break at function
break file.c:42                     # break at line
break *0x400abc                     # break at address
break foo if x > 10                 # conditional break
tbreak foo                          # temporary breakpoint (fires once)
rbreak ^mylib_.*                    # regex breakpoint on all matching functions

watch x                             # watchpoint: break when x changes
watch *(int*)0x601060               # watch memory address
rwatch x                            # break when x is read
awatch x                            # break on read or write

info breakpoints                    # list all breakpoints
delete 3                            # delete breakpoint 3
disable 3                           # disable without deleting
enable 3
```

### 5. Inspect state

```gdb
print x                             # print variable
print/x x                           # print in hex
print *ptr                          # dereference pointer
print arr[0]@10                     # print 10 elements of array
display x                           # auto-print x on every stop
undisplay 1

info locals                         # all local variables
info args                           # function arguments
info registers                      # all CPU registers
info registers rip rsp rbp          # specific registers
x/10wx 0x7fff0000                   # examine 10 words at address
x/s 0x400abc                        # examine as string
x/i $rip                            # examine current instruction

backtrace                           # call stack (bt)
bt full                             # bt + local vars
frame 2                             # switch to frame 2
up / down                           # move up/down the stack
```

### 6. Multi-thread debugging

```gdb
info threads                        # list threads
thread 3                            # switch to thread 3
thread apply all bt                 # backtrace all threads
thread apply all bt full            # full bt all threads
set scheduler-locking on            # pause other threads while stepping
```

### 7. Reverse debugging (record/replay)

Record requires `target record-full` or `target record-btrace` (Intel PT):

```gdb
# Software record (slow but universal)
record                              # start recording
run
# ... trigger the bug ...
reverse-continue                    # go back to last break
reverse-next                        # step backwards
reverse-step
reverse-finish

# Intel Processor Trace (fast, hardware)
target record-btrace pt
run
# view instruction history
record instruction-history
```

### 8. Remote debugging with gdbserver

On target:

```bash
gdbserver :1234 ./prog
# Or attach:
gdbserver :1234 --attach 5678
```

On host:

```bash
gdb ./prog
(gdb) target remote 192.168.1.10:1234
(gdb) break main
(gdb) continue
```

For cross-compilation: use `aarch64-linux-gnu-gdb` on the host.

### 9. Common problems

| Symptom | Cause | Fix |
|---------|-------|-----|
| `No symbol table` | Binary not compiled with `-g` | Recompile with `-g` |
| `??` frames in backtrace | Missing debug info or stack corruption | Install debuginfo package; check for stack smash |
| `Cannot access memory at address` | Null dereference / freed memory | Check pointer before deref; use ASan |
| `SIGABRT` in backtrace | `abort()` or assertion failure | Go up frames to find the assertion |
| GDB hangs on `run` | Binary waiting for input | Redirect stdin: `run < /dev/null` |
| Breakpoint in wrong place | Optimiser moved code | Compile with `-Og`; or use `nexti` |

### 10. GDB init file (~/.gdbinit)

```gdb
set history save on
set history size 1000
set print pretty on
set print array on
set print array-indexes on
set pagination off
set confirm off
```

For a command cheatsheet, see [references/cheatsheet.md](references/cheatsheet.md).
For pretty-printers and Python scripting, see [references/scripting.md](references/scripting.md).

## Related skills

- Use `skills/debuggers/core-dumps` for loading core files
- Use `skills/debuggers/lldb` for LLDB-based workflows
- Use `skills/runtimes/sanitizers` to catch bugs before needing the debugger
- Use `skills/compilers/gcc` for `-g` flag details

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

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

Все скиллы по теме «Языки программирования» →
memory-safety-patterns Seth Hobson Скилл помогает писать код на Rust, C++ и C с учётом владения памятью, RAII и управления ресурсами. Подойдёт для системного кода и поиска ошибок памяти. CX Codex 11 746установок nodejs-core mcollina Скилл для правок и отладки ядра Node.js: коммиты и PR в nodejs/node, нативные краши, V8, node-gyp, N-API и libuv. CX Codex +1 1 900установок cpp-testing affaan-m Скилл ведёт агента по циклу red-green-refactor в тестах на C++17/20 и настраивает GoogleTest с CMake/CTest. Пригодится, когда тесты падают или ведут себя нестабильно. CX Codex +1 4 700установок migrate-to-rust официальный google Скилл переносит кодовые базы C++, Fortran, Java, Python и C на безопасный Rust с замерами производительности. CX Codex 538установок cpp-pro Seth Hobson Пишет код на C++ по стандартам от C++11 до C++23 с упором на RAII, умные указатели и алгоритмы STL. Помогает при рефакторинге и поиске проблем с памятью. CX Codex 781установок golang-troubleshooting samber Систематический поиск причин падений, гонок данных и утечек памяти в коде на Go. Помогает пошагово воспроизвести баг тестом и разобрать трейс вместо правок наугад. CX Codex +1 40 000установок

Из того же набора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установок llvm Скилл для работы с LLVM IR: генерация промежуточного представления, прогон пассов через opt, понижение до ассемблера через llc и разбор упущенных оптимизаций. CX Codex +1 899установок core-dumps Учит агента включать core dumps, грузить их в GDB или LLDB и снимать стек без повторного запуска упавшей программы. CX Codex +1 764установок 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установок

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

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