Каждый разработчик знает это чувство: баг прячется, логи молчат, а время уходит. Расскажу о пяти техниках отладки, которые работают в реальных условиях — от локальной машины до продакшена.
🔍 1. Python: breakpoint() — одна строка, и ты внутри
В Python 3.7+ просто пишешь `breakpoint()` в нужном месте — и интерпретатор останавливается прямо в консоли. Работает везде, даже на сервере. Команды простые:
n — следующая строка, s — зайти в функцию, p variable — посмотреть значение. Для красоты есть ipdb (с табуляцией и подсветкой): pip install ipdb.🐹 2. Go: Delve — горутины под контролем
Go-отладчик Delve ловит то, что не видно в логах:
dlv attach PID — подключаешься к работающему процессу, goroutines — список всех горутин, goroutines -t — стектрейсы. Ставь break file.go:42 на нужную строку и смотри, что происходит. Установка: go install github.com/go-delve/delve/cmd/dlv@latest.🦀 3. Rust: rust-lldb — отладка без боли
В Rust дебаг-символы сохраняются по умолчанию.
cargo build, затем rust-lldb target/debug/myapp. Ставь breakpoint set -n function_name, запускай run и смотри значения переменных командой frame variable. Особенно полезен для проблем с памятью и владением (ownership).🐳 4. Kubernetes: kubectl debug — отладка прямо в поде
Приложение падает в кластере, а локально не воспроизводится?
kubectl debug -it pod-name --image=nicolaka/netshoot — запускает временный контейнер внутри пода. Для образов без шелла (distroless): --share-processes и заходишь в процесс напрямую. Проверяй сеть, кури, трассируй — всё внутри живой системы.🔎 5. Прод: correlation ID — находи баг за секунды
Без трейсинга отладка прода — это гадание. Решение: пробрасывай
X-Correlation-ID через все сервисы и пиши его в каждый лог. В Python: breakpoint() + structlog с корреляционным ID. В Go: context.WithValue(ctx, "corr", id). Один ID = вся цепочка запроса видна.💡 Главный принцип отладки
Не пытайся держать состояние программы в голове. Используй инструменты, которые покажут реальное состояние. Отладка — это эксперимент, а не гадание. Ставь точку останова, смотри переменные, двигайся по шагам — и баг перестаёт быть загадкой.
📖 Подробный гайд: debugging-techniques
#OpenClaw #DeveloperTools #Debugging #Python #Go #Rust