0
рейтинг

1
0
Есть ответы

ИИ-помощник в отладке: промт для трассировки сложных багов

Отладка сложных багов

Простой баг отлаживают чтением кода. Сложный — тот, где поведение не воспроизводится стабильно, зависит от времени, порядка или окружения, а трейсбек указывает на место, где всё уже сломано. Здесь помогает не гениальная догадка, а дисциплина: сузить область, зафиксировать факты, проверять по одной гипотезе.

ИИ в этой дисциплине силён ровно в одном месте — он быстро порождает список гипотез, включая те, о которых вы бы не подумали, потому что уже уверены в причине.

Промт для гипотез

Помоги отладить. Ниже только факты — не мои предположения.

СИМПТОМ: [что видит пользователь или что в логах]
КОГДА ВОСПРОИЗВОДИТСЯ: [всегда / иногда / при нагрузке / после перезапуска]
КОГДА НЕ ВОСПРОИЗВОДИТСЯ: [где не проявляется — это важно]
ЧТО ИЗМЕНИЛОСЬ ПЕРЕД ПОЯВЛЕНИЕМ: [релиз, конфиг, нагрузка, данные, ничего]
ОКРУЖЕНИЕ: [версии, инфраструктура, отличия от dev]
ТРЕЙСБЕК/ЛОГИ: [дословно, без правок]
ЧТО УЖЕ ПРОВЕРИЛ И ИСКЛЮЧИЛ: [список]

ЗАДАЧА:
Дай 8 гипотез, отсортированных по вероятности с учётом того, что уже исключено.
Для каждой: механизм — как именно она приводит к этому симптому; проверка, занимающая меньше 10 минут; что будет наблюдаться, если гипотеза верна, и что — если неверна.
Не предлагай гипотез, противоречащих разделу «когда не воспроизводится».
Не советуй «добавить логирование» без указания, что именно логировать и где.

Раздел «когда не воспроизводится» — самый недооценённый. Разница между средой, где баг есть, и средой, где его нет, обычно и содержит ответ.

Сужение области

Когда гипотез слишком много, помогает механическое деление пополам:

Помоги сузить область бинарным поиском.
Опиши цепочку: от точки входа до места, где симптом уже виден. Раздели её на 6-8 контрольных точек.
Для каждой точки: что именно проверить, чтобы понять, корректны ли данные и состояние на этом рубеже, и как это сделать без остановки системы.
Начни с середины цепочки, а не с начала.

Тот же приём работает с историей коммитов: если известен релиз, где бага не было, git bisect находит виновный коммит за пять-семь шагов даже в большой истории.

Минимальное воспроизведение

Баг, который воспроизводится за десять секунд одной командой, считайте наполовину починенным. Промт для сжатия:

Вот код и сценарий, при котором проявляется баг [вставить].
Предложи, как сократить сценарий до минимума: что можно убрать, не потеряв симптом, в каком порядке пробовать убирать.
Отдельно: какие внешние зависимости можно заменить заглушкой, а какие, скорее всего, участвуют в проблеме и заменять их нельзя.

Типичные ловушки сложных багов

КлассПризнакГде искать
ГонкаПлавает под нагрузкой, исчезает при логированииОбщее состояние, проверка-и-действие
КешПроявляется после перезапуска или на одном узлеКлючи кеша, время жизни, инвалидация
ДанныеТолько у части пользователейПустые поля, кодировки, старые записи
ВремяРаз в сутки, на границе месяца, при переводе часовЧасовые пояса, срок жизни токенов
ОкружениеНе воспроизводится локальноВерсии, лимиты, переменные, права

Чего модели не поручать

  • Делать выводы по одному трейсбеку. Она уверенно назовёт причину, глядя на последствие.
  • Оценивать вероятность гонок. Без исполнения это гадание.
  • Чинить, не поняв. Правка, которая «убрала симптом», часто просто сдвигает его.

И правило, которое стоит всех промтов: не считайте баг исправленным, пока не можете объяснить, почему он происходил. Если объяснение не складывается, симптом вернётся — обычно в худший момент и в другом месте.

Похожие вопросы

1 ответ

обсуждение открыто
0
26 августа 2026 00:02
Это не вопрос, а методичка/шпаргалка по промптам для отладки с ИИ. Вы её делитесь или хотите, чтобы я:

1. Проверил/улучшил эти промпты?
2. Добавил недостающие кейсы (например, для распределённых систем, утечек памяти, дедлоков)?
3. Показал пример заполнения на конкретном баге?
4. Сделал из этого готовый системный промпт для повторного использования?
5. Что-то иное?

Напишите задачу — разберём.

Ответ сгенерирован ИИ автоматически, потому что вопрос какое-то время оставался без ответа. Проверьте важные детали и поправьте, если что-то не так — живой ответ всегда ценнее.

Добавление комментария

Не публикуется. Нужен для уведомлений об ответах.
Отвечайте по существу: решение, а не «у меня то же самое».
Кликните на изображение чтобы обновить код, если он неразборчив