Skip to main content
Glama

GDB CLI para IA

PyPI version Python License CI

English | 한국어 | 中文 | 日本語 | Español | Tiếng Việt | Português | Русский | Türkçe | Deutsch | Français | Italiano

Una herramienta de depuración GDB diseñada para agentes de IA (Claude Code, etc.). Utiliza una arquitectura de "CLI de cliente ligero + servidor RPC de Python integrado en GDB", lo que permite la depuración GDB con estado a través de Bash.

Características

  • Análisis de volcado de memoria (Core Dump): Carga volcados de memoria con símbolos residentes en la memoria para una respuesta de nivel de milisegundos

  • Depuración con adjunción en vivo (Live Attach): Se adjunta a procesos en ejecución con soporte para modo sin interrupción

  • Salida JSON estructurada: Todos los comandos generan JSON con truncamiento/paginación automática y sugerencias de operación

  • Mecanismos de seguridad: Lista blanca de comandos, limpieza automática por tiempo de espera de latido, garantías de idempotencia

  • Optimizado para bases de datos: bloqueo de programador, paginación de objetos grandes, truncamiento multihilo

Related MCP server: GDB MCP Server

Requisitos

  • Python: 3.6.8+

  • GDB: 9.0+ con soporte para Python habilitado

  • SO: Linux

Comprobar el soporte de Python en GDB

# Check if GDB has Python support
gdb -nx -q -batch -ex "python print('OK')"

# If system GDB lacks Python, check GCC Toolset (RHEL/CentOS)
/opt/rh/gcc-toolset-13/root/usr/bin/gdb -nx -q -batch -ex "python print('OK')"

Instalación

# Install from PyPI
pip install gdb-cli

# Or install from GitHub
pip install git+https://github.com/Cerdore/gdb-cli.git

# Or clone and install locally
git clone https://github.com/Cerdore/gdb-cli.git
cd gdb-cli
pip install -e .

Comprobación del entorno

gdb-cli env-check


## Quick Start

### 1. Load Core Dump

```bash
gdb-cli load --binary ./my_program --core ./core.12345

Salida:

{
  "session_id": "f465d650",
  "mode": "core",
  "binary": "./my_program",
  "core": "./core.12345",
  "gdb_pid": 12345,
  "status": "loading"
}

Al cargar un binario grande o un archivo core, realice sondeos hasta que la sesión esté lista:

gdb-cli status -s f465d650
{
  "session_id": "f465d650",
  "state": "ready",
  "mode": "core",
  "binary": "./my_program"
}

Si el GDB predeterminado de su sistema no tiene soporte para Python, especifíquelo con --gdb-path:

gdb-cli load --binary ./my_program --core ./core.12345 \
  --gdb-path /opt/rh/gcc-toolset-13/root/usr/bin/gdb

2. Operaciones de depuración

Todas las operaciones utilizan --session / -s para especificar el ID de sesión:

SESSION="f465d650"

# List threads
gdb-cli threads -s $SESSION

# Get backtrace (default: current thread)
gdb-cli bt -s $SESSION

# Get backtrace for a specific thread
gdb-cli bt -s $SESSION --thread 3

# Evaluate C/C++ expressions
gdb-cli eval-cmd -s $SESSION "my_struct->field"

# Access array elements
gdb-cli eval-element -s $SESSION "my_array" --index 5

# View local variables
gdb-cli locals-cmd -s $SESSION

# Execute raw GDB commands
gdb-cli exec -s $SESSION "info registers"

# Check session status
gdb-cli status -s $SESSION

3. Gestión de sesiones

# List all active sessions
gdb-cli sessions

# Stop a session
gdb-cli stop -s $SESSION

4. Depuración con adjunción en vivo

# Attach to a running process (default: scheduler-locking + non-stop)
gdb-cli attach --pid 9876

# Attach with symbol file
gdb-cli attach --pid 9876 --binary ./my_program

# Allow memory modification and function calls
gdb-cli attach --pid 9876 --allow-write --allow-call

Referencia completa de comandos

load — Cargar volcado de memoria (Core Dump)

gdb-cli load --binary <path> --core <path> [options]

  --binary, -b      Executable file path (required)
  --core, -c        Core dump file path (required)
  --sysroot         sysroot path (for cross-machine debugging)
  --solib-prefix    Shared library prefix
  --source-dir      Source code directory
  --timeout         Heartbeat timeout in seconds (default: 600)
  --gdb-path        GDB executable path (default: "gdb")

load devuelve inmediatamente un "status": "loading" una vez que el servidor RPC es accesible. Utilice gdb-cli status -s <session> y espere a que aparezca "state": "ready" antes de ejecutar comandos de inspección pesados.

attach — Adjuntar a un proceso

gdb-cli attach --pid <pid> [options]

  --pid, -p               Process PID (required)
  --binary                Executable file path (optional)
  --scheduler-locking     Enable scheduler-locking (default: true)
  --non-stop              Enable non-stop mode (default: true)
  --timeout               Heartbeat timeout in seconds (default: 600)
  --allow-write           Allow memory modification
  --allow-call            Allow function calls

threads — Listar hilos

gdb-cli threads -s <session> [options]

  --range           Thread range, e.g., "3-10"
  --limit           Maximum return count (default: 20)
  --filter-state    Filter by state ("running" / "stopped")

bt — Backtrace (seguimiento de pila)

gdb-cli bt -s <session> [options]

  --thread, -t      Specify thread ID
  --limit           Maximum frame count (default: 30)
  --full            Include local variables
  --range           Frame range, e.g., "5-15"

eval-cmd — Evaluar expresión

gdb-cli eval-cmd -s <session> <expr> [options]

  --max-depth       Recursion depth limit (default: 3)
  --max-elements    Array element limit (default: 50)

eval-element — Acceder a elementos de arreglos/contenedores

gdb-cli eval-element -s <session> <expr> --index <N>

exec — Ejecutar comando GDB sin procesar

gdb-cli exec -s <session> <command>

  --safety-level    Safety level (readonly / readwrite / full)

thread-apply — Operaciones de hilos por lotes

gdb-cli thread-apply -s <session> <command> --all
gdb-cli thread-apply -s <session> <command> --threads "1,3,5"

Ejemplos de salida

threads

{
  "threads": [
    {"id": 1, "global_id": 1, "state": "stopped"},
    {"id": 2, "global_id": 2, "state": "stopped"}
  ],
  "total_count": 5,
  "truncated": true,
  "current_thread": {"id": 1, "global_id": 1, "state": "stopped"},
  "hint": "use 'threads --range START-END' for specific threads"
}

eval-cmd

{
  "expression": "(int)5+3",
  "value": 8,
  "type": "int",
  "size": 4
}

bt

{
  "frames": [
    {"number": 0, "function": "crash_thread", "address": "0x400a1c", "file": "test.c", "line": 42},
    {"number": 1, "function": "start_thread", "address": "0x7f3fa2e13fa"}
  ],
  "total_count": 2,
  "truncated": false
}

Mecanismos de seguridad

Lista blanca de comandos (Modo adjunto)

Nivel de seguridad

Comandos permitidos

readonly (predeterminado)

bt, info, print, threads, locals, frame

readwrite

+ set variable

full

+ call, continue, step, next

quit, kill, shell, signal están siempre bloqueados.

Tiempo de espera de latido (Heartbeat)

Se desconecta y cierra automáticamente después de 10 minutos de inactividad de forma predeterminada. Configurable mediante --timeout.

Idempotencia

Solo se permite una sesión por PID / archivo Core. La carga/adjunción repetida devuelve el session_id existente.

Depuración de volcados de memoria entre máquinas

Al analizar volcados de memoria de otras máquinas, las rutas de las bibliotecas compartidas pueden diferir:

# Set sysroot (path prefix replacement)
gdb-cli load --binary ./my_program --core ./core.1234 \
  --sysroot /path/to/target/rootfs

# Set source directory (for source-level debugging)
gdb-cli load --binary ./my_program --core ./core.1234 \
  --source-dir /path/to/source

Desarrollo

Estructura del proyecto

src/gdb_cli/
├── cli.py              # CLI entry point (Click)
├── client.py           # Unix Socket client
├── launcher.py         # GDB process launcher
├── session.py          # Session metadata management
├── safety.py           # Command whitelist filter
├── formatters.py       # JSON output formatting
├── env_check.py        # Environment check
├── errors.py           # Error classification
└── gdb_server/
    ├── gdb_rpc_server.py   # RPC Server core
    ├── handlers.py         # Command handlers
    ├── value_formatter.py  # gdb.Value serialization
    └── heartbeat.py         # Heartbeat timeout management

skills/
└── gdb-cli/               # Claude Code skill for intelligent debugging
    ├── SKILL.md            # Skill definition
    └── evals/              # Test cases for skill evaluation

Ejecutar pruebas

pip install -e ".[dev]"
pytest tests/ -v

Pruebas de extremo a extremo (E2E)

Requiere GDB con soporte para Python. Utilice el programa de prueba de fallos en tests/crash_test/:

# Compile test program
cd tests/crash_test
gcc -g -pthread -o crash_test crash_test_c.c

# Generate coredump
ulimit -c unlimited
./crash_test  # Will SIGSEGV

# Find core file
ls /path/to/core_dumps/core-crash_test-*

# Run E2E test
gdb-cli load --binary ./crash_test --core /path/to/core \
  --gdb-path /opt/rh/gcc-toolset-13/root/usr/bin/gdb

Limitaciones conocidas

  • No hay soporte para target remote (use SSH para depuración remota, vea abajo)

  • No hay soporte para depuración de múltiples inferiores (multi-inferior)

  • Los pretty printers de Guile en GDB 12.x no son seguros para hilos, solución alternativa mediante format_string(raw=True)

  • La versión de Python integrada en GDB puede ser antigua (p. ej., 3.6.8), el código tiene manejo de compatibilidad

Depuración remota vía SSH

Instale y ejecute en la máquina remota con un solo comando:

ssh user@remote-host "pip install git+https://github.com/Cerdore/gdb-cli.git && gdb-cli load --binary ./my_program --core ./core.12345"

O instale primero y luego depure:

# Install on remote
ssh user@remote-host "pip install git+https://github.com/Cerdore/gdb-cli.git"

# Run debugging
ssh user@remote-host "gdb-cli load --binary ./my_program --core ./core.12345"

Habilidades de Claude Code

Este proyecto incluye una habilidad gdb-cli para Claude Code que proporciona asistencia de depuración inteligente combinando el análisis del código fuente con la inspección del estado en tiempo de ejecución.

Instalar la habilidad

bunx skills add https://github.com/Cerdore/gdb-cli --skill=gdb-cli

Uso en Claude Code

/gdb-cli

# Or describe your debugging need:
I have a core dump at ./core.1234 and binary at ./myapp. Help me debug it.

Características

  • Correlación de código fuente: Lee automáticamente los archivos fuente alrededor de los puntos de fallo

  • Detección de interbloqueos (Deadlock): Identifica patrones de espera circular en programas multihilo

  • Advertencias de seguridad: Alerta sobre riesgos en el entorno de producción al adjuntarse a procesos en vivo

  • Informes estructurados: Genera análisis con hipótesis de causa raíz y próximos pasos

Consulte skills/README.md para más detalles.

Licencia

Apache License 2.0

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
6dResponse time
2wRelease cycle
3Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Provides GDB debugging functionality for use with Claude or other AI assistants, allowing users to manage debugging sessions, set breakpoints, examine variables, and execute GDB commands through natural language.
    16
    56
    158
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables LLM clients to interact with the GNU Debugger (GDB) for comprehensive debugging and binary analysis. It provides a wide range of tools for program execution control, memory examination, stack analysis, and disassembly.
    13
    71
    GPL 3.0
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to debug embedded systems by providing a comprehensive interface for GDB operations across multiple architectures like ARM and x86. It supports remote debugging via gdbserver or QEMU, allowing for detailed inspection of memory, registers, stack frames, and variables.
    31
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with GDB for debugging via the MCP protocol. Supports setting breakpoints, stepping through code, inspecting memory and registers, and more.
    85
    MIT

View all related MCP servers

Related MCP Connectors

  • Shared debugging memory for AI coding agents

  • Agent Replay Debugger MCP — record every agent step + deterministic replay. Step-debugger for

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cerdore/gdb-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server