# dwarf-debug-format

Скилл объясняет агенту, как читать отладочную информацию DWARF: секции ELF, split DWARF, debuginfod, влияние LTO и stripping.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 471 установка · ★ 267
- Автор: mohitmishra786
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/mohitmishra786/low-level-dev-skills/tree/HEAD/skills/debuggers/dwarf-debug-format/SKILL.md
- Обновлён: 2026-06-27
- HTML: https://affpapa.org/nevibecode/skills/dwarf-debug-format

## Что делает

Скилл ведёт агента по отладочной информации в бинарниках: какие секции бывают в ELF, чем отличаются `.debug_info`, `.debug_line` и `.debug_str`, как устроены DIE с тегами `DW_TAG_*` и атрибутами `DW_AT_*`. Внутри — готовые команды для `readelf`, `dwarfdump` и `llvm-dwarfdump`, включая `llvm-dwarfdump --statistics` для оценки вклада DWARF в размер файла.

Отдельные разделы посвящены split DWARF и `debuginfod`. Первый описывает сборку с `-gsplit-dwarf`, появление файлов `.dwo` и упаковку их в `.dwp` через `dwp` или `llvm-dwp`. Второй — настройку `DEBUGINFOD_URLS`, команды `debuginfod-find` и запуск собственного сервера на локальном порту. Есть разбор того, как LTO и `strip` меняют отладочную информацию, и как сохранить её в отдельном файле через `objcopy --only-keep-debug`.

Скилл активируется сам, когда в запросе всплывают DWARF, `.dwo`, `dwarfdump`, `debuginfod` или «no debugging symbols found». Для работы с ним нужны установленные `dwarfdump` (пакет `libdwarf`) и `readelf` из elfutils — без них команды из скилла просто не запустятся.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mohitmishra786/low-level-dev-skills --skill dwarf-debug-format -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/dwarf-debug-format/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/dwarf-debug-format/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mohitmishra786/low-level-dev-skills --skill dwarf-debug-format -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/dwarf-debug-format/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mohitmishra786/low-level-dev-skills --skill dwarf-debug-format -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/dwarf-debug-format/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install mohitmishra786/low-level-dev-skills dwarf-debug-format
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/dwarf-debug-format/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mohitmishra786/low-level-dev-skills --skill dwarf-debug-format -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/mohitmishra786/low-level-dev-skills --path skills/debuggers/dwarf-debug-format
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/dwarf-debug-format/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add mohitmishra786/low-level-dev-skills --skill dwarf-debug-format -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/mohitmishra786/low-level-dev-skills/tree/HEAD/skills/debuggers/dwarf-debug-format/SKILL.md

## Когда брать
- разобраться, какие DWARF-секции лежат в ELF-бинарнике
- найти функцию и переменную по DIE-дереву через dwarfdump
- собрать проект со split DWARF и упаковать .dwo в .dwp
- настроить debuginfod, чтобы GDB сам подтягивал символы
- понять, почему после LTO или strip пропала отладочная информация

## Примеры запросов агенту
- Покажи DWARF-секции в prog и объясни, что лежит в .debug_line
- GDB пишет no debugging symbols found — проверь бинарник и подскажи, как настроить debuginfod
- Собери main.c со split DWARF и упакуй .dwo файлы в prog.dwp

## Похожие
- [dwarf-expert](https://affpapa.org/nevibecode/skills/dwarf-expert.md) — скилл · 5200 установок
- [build-run-debug](https://affpapa.org/nevibecode/skills/build-run-debug.md) — скилл · 60 установок
- [platform-apex-logs-debug](https://affpapa.org/nevibecode/skills/platform-apex-logs-debug.md) — скилл · 6800 установок
- [agents-debug](https://affpapa.org/nevibecode/skills/agents-debug.md) — скилл · 2000 установок
- [sentry-debug-issue](https://affpapa.org/nevibecode/skills/sentry-debug-issue.md) — скилл · 1900 установок
- [gitops-cluster-debug](https://affpapa.org/nevibecode/skills/gitops-cluster-debug.md) — скилл · 1100 установок

Из того же набора: [mohitmishra786/low-level-dev-skills](https://affpapa.org/nevibecode/by/mohitmishra786/low-level-dev-skills.md) — 62 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
