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

zig-debugging — скилл для Claude Code: отладка Zig через GDB и LLDB

Скилл для ИИ-агента: разбирает паники Zig, error return traces и сессии GDB/LLDB. Пригодится, когда программа падает, а стек нечитаемый.

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

Что делает zig-debugging

Скилл ведёт агента по отладке программ на Zig. Внутри — разбор паник с указанием файла и строки, чтение error return traces снизу вверх по цепочке try, трассировка через std.debug.print и настройка уровней std.log. Отдельный блок про сборку: zig build-exe src/main.zig -O Debug даёт полную отладочную информацию и проверки безопасности.

Для GDB и LLDB расписаны готовые сессии: точки останова, шаг с заходом и без, печать переменных, бэктрейс. Есть приёмы остановки прямо на панике — break __zig_panic_start в GDB и b __zig_panic в LLDB. Для VS Code приведены launch.json и tasks.json с расширением zig.vscode-zig и CodeLLDB.

Одна деталь: error return traces в релизных сборках по умолчанию выключены. Чтобы они работали в ReleaseFast, в build.zig нужно выставить .error_tracing = true — иначе на релизной сборке вы увидите только голый код ошибки без цепочки вызовов. Скилл ссылается на смежные: zig-compiler для режимов сборки, gdb и lldb для основ отладчиков, zig-cinterop для смешанного кода Zig и C.

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

  • разобрать текст паники Zig и найти упавшую строку
  • прочитать error return trace и понять, где ошибка всплыла наверх
  • запустить сессию GDB или LLDB на бинарнике Zig
  • включить трассировку через std.debug.print в нужном месте
  • настроить отладку Zig в VS Code с CodeLLDB

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

  • Собери проект в Debug и покажи, как поставить breakpoint на панике в GDB
  • Вот текст паники Zig — объясни, что именно сломалось
  • Почему error return trace пустой в ReleaseFast и как его включить

Как установить zig-debugging

1Через Skills CLI (Vercel)

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

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

~/.claude/skills/zig-debugging/SKILL.md

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

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

Вопросы о zig-debugging

Как установить zig-debugging в Claude?

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

Что делает zig-debugging?

Помогает агенту отлаживать программы на Zig: разбирает паники, error return traces, показывает работу с GDB и LLDB, трассировку через std.debug.print и настройку отладки в VS Code.

Почему в релизной сборке нет error return traces?

Их нужно включить вручную: в build.zig добавьте .error_tracing = true в описание исполняемого файла. Тогда цепочка try будет видна и в ReleaseFast.

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

SKILL.md · MIT
---
name: zig-debugging
description: Zig debugging skill. Use when debugging Zig programs with GDB or LLDB, interpreting Zig runtime panics, using std.debug.print for tracing, configuring debug builds, or debugging Zig programs in VS Code. Activates on queries about debugging Zig, Zig panics, zig gdb, zig lldb, std.debug.print, Zig stack traces, or Zig error return traces.
---

# Zig Debugging

## Purpose

Guide agents through debugging Zig programs: GDB/LLDB sessions, interpreting Zig panics and error return traces, `std.debug.print` logging, debug build configuration, and IDE integration.

## Triggers

- "How do I debug a Zig program with GDB?"
- "How do I interpret a Zig panic message?"
- "How do I use std.debug.print for debugging?"
- "Zig is showing an error return trace — what does it mean?"
- "How do I set up Zig debugging in VS Code?"
- "How do I get a stack trace from a Zig crash?"

## Workflow

### 1. Build for debugging

```bash
# Debug build (default) — full debug info, safety checks
zig build-exe src/main.zig -O Debug

# With build system
zig build            # uses Debug by default
zig build -Doptimize=Debug

# Run directly with debug output
zig run src/main.zig
```

### 2. GDB with Zig

Zig emits standard DWARF debug information compatible with GDB:

```bash
# Build with debug info
zig build-exe src/main.zig -O Debug -femit-bin=myapp

# Launch GDB
gdb ./myapp

# GDB session
(gdb) break main
(gdb) run arg1 arg2
(gdb) next          # step over
(gdb) step          # step into
(gdb) continue
(gdb) print my_var
(gdb) info locals
(gdb) bt            # backtrace
```

Break on Zig panics:
```gdb
(gdb) break __zig_panic_start
(gdb) break std.builtin.default_panic
```

### 3. LLDB with Zig

```bash
lldb ./myapp

(lldb) b main
(lldb) r arg1 arg2
(lldb) n            # next
(lldb) s            # step into
(lldb) p my_var     # print
(lldb) frame variable
(lldb) bt           # backtrace
(lldb) c            # continue

# Break on panic
(lldb) b __zig_panic
```

### 4. Interpreting Zig panics

Zig panics include the source location and reason:

```
thread 'main' panic: index out of bounds: index 5, len 3
/home/user/src/main.zig:15:14
/home/user/src/main.zig:42:9
???:?:?: (name not available)
```

Common panic messages:
| Panic | Cause |
|-------|-------|
| `index out of bounds: index N, len M` | Slice/array OOB access |
| `integer overflow` | Arithmetic overflow in Debug/ReleaseSafe |
| `attempt to unwrap null` | Optional access `.?` on null |
| `reached unreachable code` | `unreachable` executed |
| `casting...` | Invalid enum tag or union access |
| `integer cast truncated bits` | `@intCast` with value out of range |
| `out of memory` | Allocator failed |

### 5. Error return traces

Zig tracks where errors propagate with error return traces:

```
error: FileNotFound
/home/user/src/main.zig:30:20: 0x10a3b in openConfig (main)
    const f = try std.fs.openFileAbsolute(path, .{});
                   ^
/home/user/src/main.zig:15:25: 0x10b12 in run (main)
    const cfg = try openConfig("/etc/myapp.conf");
                    ^
/home/user/src/main.zig:8:20: 0x10c44 in main (main)
    try run();
               ^
```

The trace shows the exact `try` chain where the error propagated. Read bottom-up: `main → run → openConfig`.

Enable in release builds:
```zig
// build.zig
const exe = b.addExecutable(.{
    .name = "myapp",
    .root_source_file = b.path("src/main.zig"),
    .target = target,
    .optimize = optimize,
    .error_tracing = true,  // enable even in ReleaseFast
});
```

### 6. std.debug.print for tracing

```zig
const std = @import("std");

pub fn main() !void {
    const x: u32 = 42;
    const name = "world";

    // Basic print (always to stderr)
    std.debug.print("x = {d}, name = {s}\n", .{ x, name });

    // Print any value (useful for structs)
    const point = Point{ .x = 1, .y = 2 };
    std.debug.print("point = {any}\n", .{point});

    // Formatted output
    std.debug.print("hex: {x}, binary: {b}\n", .{ x, x });

    // Log levels (respects compile-time log level)
    const log = std.log.scoped(.my_module);
    log.debug("debug info: {d}", .{x});
    log.info("started processing", .{});
    log.warn("unusual condition", .{});
    log.err("failed: {s}", .{"reason"});
}
```

### 7. std.log configuration

```zig
// Override default log level at root
pub const std_options = std.Options{
    .log_level = .debug,  // .debug | .info | .warn | .err
};

// Custom log handler
pub fn logFn(
    comptime level: std.log.Level,
    comptime scope: @TypeOf(.enum_literal),
    comptime format: []const u8,
    args: anytype,
) void {
    const prefix = "[" ++ @tagName(level) ++ "] (" ++ @tagName(scope) ++ "): ";
    std.debug.print(prefix ++ format ++ "\n", args);
}

pub const std_options = std.Options{
    .logFn = logFn,
};
```

### 8. VS Code / IDE integration

Install the `zig.vscode-zig` extension and CodeLLDB.

`.vscode/launch.json`:
```json
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug Zig",
            "program": "${workspaceFolder}/zig-out/bin/myapp",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "zig build"
        }
    ]
}
```

`.vscode/tasks.json`:
```json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "zig build",
            "type": "shell",
            "command": "zig build",
            "group": { "kind": "build", "isDefault": true },
            "problemMatcher": ["$zig"]
        }
    ]
}
```

## Related skills

- Use `skills/zig/zig-compiler` for build modes and debug info flags
- Use `skills/debuggers/gdb` for GDB fundamentals
- Use `skills/debuggers/lldb` for LLDB fundamentals
- Use `skills/zig/zig-cinterop` when debugging mixed Zig/C code

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

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

Все скиллы по теме «Языки программирования» →
debugging-instruments dpearson2699 Помогает искать утечки памяти, зависания главного потока и сбои в iOS-приложениях через LLDB, Memory Graph Debugger и Instruments. CX Codex +1 4 100установок cli-anything-lldb HKUDS Скилл запускает структурированные LLDB-сессии с JSON-выводом: ставит точки останова, изучает кадры и память, подключается к процессам. CX Codex +1 405установок dbg theodo-group Скилл учит агента работать с CLI-отладчиком dbg: ставить брейкпоинты, шагать по коду, смотреть переменные и править JS/TS без перезапуска. CX Codex +1 620установок anti-debugging-techniques yaklang Справочник по анализу и обходу антиотладочных проверок в бинарниках под Linux и Windows. Помогает нейтрализовать ptrace, флаги PEB, тайминги и скрытие потоков при реверс-инжиниринге. CX Codex +1 3 700установок java-debugging официальный github Скилл ведёт агента по методике поиска причины бага в Java: воспроизвести, сузить, проверить гипотезу, подключить отладчик. Пригодится, когда логи уже не помогают. 1установок debugging-and-error-recovery addyosmani Скилл ведёт агента по шагам от воспроизведения ошибки до проверки исправления. Подойдёт, когда падают тесты, ломается сборка или поведение не совпадает с ожиданиями. CX Codex +1 62 800установок

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

debug-optimized-builds Помогает разобраться, почему GDB показывает «value optimized out» и как вообще отлаживать код, собранный с оптимизацией. CX Codex +1 533установок concurrency-debugging Скилл ведёт агента по отчётам ThreadSanitizer, графам блокировок Helgrind и зависшим потокам в GDB. Пригодится, когда программа падает или виснет на многопоточке. CX Codex +1 524установок linker-scripts Помогает писать и править скрипты компоновщика GNU ld для bare-metal: регионы памяти, VMA и LMA, инициализация .bss и .data. CX Codex +1 523установок wasm-emscripten Скилл ведёт агента через сборку C и C++ в WebAssembly: подбор флагов emcc, экспорт функций, модель памяти, Asyncify и отладка .wasm. CX Codex +1 513установок zig-build-system Помогает агенту писать и отлаживать build.zig: исполняемые файлы, библиотеки, C-исходники, опции сборки и тесты. CX Codex +1 508установок build-acceleration Скилл для ИИ-агентов, который помогает разобраться, почему сборка C/C++ идёт медленно, и настроить кэш, распределённую компиляцию и PCH. CX Codex +1 506установок zig-cinterop Скилл объясняет агенту, как связать Zig и C: @cImport, translate-c, extern struct, экспорт функций и сборка смешанных проектов. CX Codex +1 482установок include-what-you-use Скилл ведёт агента через IWYU: разбирает отчёты, применяет mapping-файлы и убирает лишние #include, из-за которых сборка C++ расползается. CX Codex +1 480установок

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

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