10 промтов для отладки и поиска багов в коде: шпаргалка разработчика

Введение

Каждый разработчик знает, как много времени уходит на поиск и исправление ошибок. Согласно отчёту Stripe (2020), разработчики тратят до 17 часов в неделю на отладку — это почти половина рабочего времени. Современные AI-модели, такие как GPT-4 и Claude, способны значительно ускорить этот процесс, если правильно формулировать запросы (промты). В этой подборке — 10 готовых промтов для разных сценариев отладки: от поиска логических ошибок до анализа логов и code review. Каждый промт сопровождается реальным примером кода, чтобы вы могли сразу скопировать и использовать.

Важно: Промты рассчитаны на работу с ChatGPT, Claude или локальными моделями (например, Ollama с llama3). Адаптируйте их под свой контекст, подставляя конкретный код или логи.

1. Универсальный поиск багов «на лету»

Когда использовать: Вы написали функцию, но она возвращает неожиданный результат. Не хотите тратить время на ручной дебаг — пусть AI найдёт ошибку.

Промт:

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

[вставьте код]

Пример использования:

def calculate_discount(price: float, discount_percent: float) -> float:
    if discount_percent > 100:
        return 0
    return price - (price * discount_percent / 100)  # вроде верно

Ответ модели укажет на отсутствие проверки отрицательных скидок и предложит добавить if discount_percent < 0: discount_percent = 0. Мгновенная экономия времени на ручном тестировании.

Совет: Для многофайловых проектов добавляйте в промт «учти все импорты и зависимости».

2. Объяснение ошибки по stack trace

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

Промт:

Вот stack trace из моего приложения. Объясни простыми словами, почему произошла эта ошибка, и укажи, в какой строке кода проблема. Предложи три возможных исправления.

[вставьте traceback]

Пример:

Traceback (most recent call last):
  File "app.py", line 23, in <module>
    result = divide(10, 0)
ZeroDivisionError: division by zero

Модель объяснит, что деление на ноль недопустимо, предложит добавить проверку делителя или использовать try/except. Это быстрее, чем гуглить каждый трейс.

3. Анализ логов и поиск аномалий

Когда использовать: У вас гигабайты логов, и нужно найти повторяющиеся ошибки или необычные паттерны.

Промт:

Проанализируй следующие логи. Выдели: (1) наиболее частые типы ошибок, (2) время их возникновения, (3) возможные первопричины. Если есть явные аномалии (например, резкий рост числа ошибок в определённый час) — укажи это.

[логи, первые 100–200 строк, чтобы уложиться в контекст]

Пример:

2026-07-25 10:01:23 ERROR Timeout connecting to DB
2026-07-25 10:01:24 ERROR Timeout connecting to DB
2026-07-25 10:02:00 INFO Connection restored

Модель заметит кластер ошибок в 10:01 и предположит сбой в пуле соединений. Это помогает быстро локализовать причину без ручного чтения тысяч строк.

4. Генерация юнит-тестов для выявления багов

Когда использовать: Вы хотите проверить, что функция работает корректно во всех граничных случаях.

Промт:

Напиши юнит-тесты на [фреймворк, например pytest] для следующей функции. Покрой основные сценарии: успешное выполнение, краевые случаи (пустые входные данные, отрицательные значения, None), и ожидаемые исключения. Используй паттерн AAA (Arrange-Act-Assert).

[код функции]

Пример:

def get_user_age(user_id: int) -> int:
    # возвращает возраст из БД, может выбросить ValueError если id < 0
    if user_id < 0:
        raise ValueError("Invalid ID")
    # ...

Модель сгенерирует тесты с pytest.raises, что сразу выявит недостающую обработку user_id == 0.

5. Code review с акцентом на потенциальные баги

Когда использовать: Вы готовите PR и хотите, чтобы AI провёл предварительный ревью.

Промт:

Проведи code review этого кода. Особое внимание удели: ошибкам в бизнес-логике, race condition, утечкам ресурсов, неправильной обработке исключений и несоответствию типов. Опиши критичные проблемы первыми, затем рекомендации.

[код]

Пример:

with open("file.txt") as f:
    data = f.read()
    return data

Модель заметит, что файл может быть слишком большим — предложит читать построчно. Такие нюансы часто упускаются при ручном ревью.

6. Оптимизация медленного кода (с исправлением багов)

Когда использовать: Код работает, но слишком медленно. Возможно, есть скрытая ошибка, вызывающая излишние вычисления.

Промт:

Оптимизируй этот код по времени выполнения и памяти. При этом исправь любые логические ошибки, которые заметишь. После изменений объясни, что именно было улучшено.

[код]

Пример:

result = []
for i in range(len(lst)):
    if lst[i] not in result:
        result.append(lst[i])  # O(n^2)

Модель заменит на list(dict.fromkeys(lst)) — O(n), и заметит, что оригинальный код не сохраняет порядок? (нет, сохраняет), но предложит лучший вариант.

7. Перевод кода между языками с выявлением несоответствий

Когда использовать: Мигрируете проект с Python на JavaScript или рефакторите легаси.

Промт:

Переведи этот код на [целевой язык]. После перевода проверь, что семантика полностью совпадает: учти различия в типах данных, передаче по ссылке/значению, работе с памятью. Если есть потенциальные баги из-за разных парадигм — подсвети их.

[исходный код]

Пример:

def fetch_data(limit=None):
    if limit is None:
        limit = 100
    return [i for i in range(limit)]

При переводе на JavaScript модель заметит, что None в JS превращается в undefined или null, и предложит явную проверку, избегая бага.

8. Обработка ошибок и добавление корректных исключений

Когда использовать: В коде нет try/except, или они написаны неправильно.

Промт:

Добавь в этот код корректную обработку исключений. Используй специфичные типы ошибок (не просто except Exception). Для каждой ошибки укажи в комментарии, почему она может возникнуть и как её логировать.

[код без обработки]

Пример:

def connect(host, port):
    sock = socket.socket()
    sock.connect((host, port))

Модель обернёт в try с socket.timeout и ConnectionRefusedError, добавит логирование — это предотвратит падение продакшена.

9. Поиск проблем с безопасностью, ведущих к багам

Когда использовать: Нужно убедиться, что код не уязвим для SQL-инъекций, XSS и других атак.

Промт:

Проверь этот код на уязвимости безопасности, которые могут вызывать баги или утечку данных. Особое внимание удели: SQL-инъекциям, XSS, небезопасной десериализации, использованию eval/exec. Предложи исправления с использованием безопасных практик.

[код]

Пример:

query = f"SELECT * FROM users WHERE id = {user_id}"  # инъекция

Модель укажет на опасность и заменит на параметризованный запрос.

10. Рефакторинг с сохранением поведения и устранением багов

Когда использовать: Нужно переписать «спагетти-код», не сломав логику.

Промт:

Выполни рефакторинг этого кода: разбей на маленькие функции, дай осмысленные имена, убери дублирование. При этом исправь любые логические ошибки, которые заметишь. После рефакторинга напиши краткую документацию каждой функции.

[код]

Пример:

def process(data):
    a = data['val'] * 2
    # ... 50 строк с глобальными переменными
    return a

Модель разобьёт код на 3–4 функции, заметит, что data['val'] может не существовать — добавит проверку.

Заключение

Эти 10 промтов помогут вам быстрее находить и исправлять баги, анализировать логи, проводить code review и рефакторинг. Главное — не копируйте их слепо, а адаптируйте под свой язык, фреймворк и контекст. Например, для JavaScript добавьте в промт «учитывай асинхронность», для Go — «обрати внимание на горутины и каналы».

Попробуйте прямо сегодня: возьмите самый надоевший баг и отправьте его в AI с одним из промтов. Часто оказывается, что проблема решается за минуту, а не за час. А чтобы не терять время на ручное копирование, заведите файлик с избранными промтами — это превратит отладку из рутины в удовольствие.

Использованные источники: документация Python (docs.python.org), MDN Web Docs, практические руководства OpenAI по prompt engineering (platform.openai.com/docs/guides/prompt-engineering).

← Все статьи

Комментарии

Читайте также