Каждый разработчик знает: отладка занимает до 50% рабочего времени. По данным исследования Cambridge University (2017), программисты тратят в среднем 17 часов в неделю на поиск и исправление ошибок. Но с появлением больших языковых моделей (LLM) этот процесс можно ускорить в разы — если правильно формулировать запросы.
В этой подборке — 15 промтов, которые я использую ежедневно для отладки кода. Они сфокусированы на реальных сценариях: от анализа логов до поиска race conditions. Каждый промт проверен на практике и адаптирован под русскоязычный контекст.
1. Анализ стека ошибок (Stack Trace Decoder)
Промт:
Проанализируй следующий stack trace и объясни, какая ошибка произошла. Укажи точную строку и файл, где возникла проблема. Предложи 2-3 варианта исправления с примерами кода.
[вставьте stack trace]
Пример использования:
Проанализируй следующий stack trace:
Exception in thread "main" java.lang.NullPointerException
at com.example.service.UserService.getUser(UserService.java:45)
at com.example.controller.UserController.getUser(UserController.java:22)
Результат: AI определит, что на строке 45 в UserService.getUser() переменная userRepository равна null. Предложит проверить инъекцию зависимости через @Autowired или добавить проверку if (userRepository == null).
2. Поиск логических ошибок в функциях
Промт:
Найди логическую ошибку в этой функции. Функция должна [описание ожидаемого поведения]. Объясни, почему текущий код не работает, и предложи исправленную версию.
[вставьте код функции]
Пример: Функция для проверки высокосного года. AI найдёт, что условие year % 100 == 0 не учитывает исключение для годов, делящихся на 400.
3. Отладка асинхронного кода (Promise/async/await)
Промт:
У меня есть асинхронная функция на JavaScript/TypeScript, которая [описание проблемы, например, "не дожидается ответа от API"]. Найди ошибку в коде. Учти возможные race conditions, необработанные промисы и неправильный порядок выполнения.
[вставьте код]
Пример: AI укажет, что вы забыли await перед вызовом асинхронной функции внутри map(), и предложит использовать Promise.all().
4. Анализ логов на Python
Промт:
Проанализируй эти логи в формате JSON/CSV и найди аномалии. Выведи:
1. Количество ошибок по типам (Error, Warning, Critical)
2. Топ-5 самых частых сообщений об ошибках
3. Временные промежутки, когда ошибки возникали чаще всего (с группировкой по часам)
4. Предположительную причину каждой частой ошибки
Логи:
[вставьте логи]
5. Проверка типов и несоответствий (TypeScript/Python)
Промт:
Проверь этот код на TypeScript на наличие несоответствий типов. Найди случаи, где тип переменной не совпадает с ожидаемым, где отсутствует обработка null/undefined, и где перегрузка функций работает некорректно. Дай конкретные строки и исправления.
[вставьте код]
6. Поиск утечек памяти
Промт:
Проанализируй этот код на наличие утечек памяти. Учти:
- Незакрытые файловые дескрипторы
- Слушатели событий, которые не удаляются
- Замыкания, удерживающие ссылки на большие объекты
- Глобальные переменные
Для каждого найденного места предложи исправление.
[вставьте код]
7. Отладка SQL-запросов
Промт:
Найди ошибку в SQL-запросе. Запрос должен [описание цели]. Проверь синтаксис, правильность JOIN, группировку, имена столбцов и типы данных. Если ошибка не в синтаксисе, а в логике — объясни, почему результат может быть неверным.
[вставьте SQL-запрос]
8. Анализ производительности (профилирование)
Промт:
У меня есть функция, которая работает слишком долго. Найди в ней узкие места с точки зрения производительности. Предложи оптимизации: используй кэширование, замени циклы на более эффективные структуры данных, избегай повторных вычислений. Приведи пример оптимизированного кода.
Код:
[вставьте код]
9. Поиск race conditions в многопоточном коде
Промт:
Найди race condition в этом многопоточном коде на Java/Python/C#. Укажи, какие переменные или ресурсы разделяются между потоками, где происходит состояние гонки и как его исправить. Предложи использование мьютексов, семафоров или потокобезопасных коллекций.
[вставьте код]
10. Отладка сетевых запросов (REST/GraphQL)
Промт:
У меня есть клиентский код, который отправляет запрос к API, но получает неожиданный ответ. Найди ошибку в формате запроса, заголовках, теле или URL. Проверь соответствие спецификации REST/GraphQL. Если нужно, добавь обработку ошибок и повторные попытки.
Код:
[вставьте код]
11. Исправление ошибок компиляции/интерпретации
Промт:
Объясни, почему возникает эта ошибка компиляции. Дай точную строку и символ, где проблема. Предложи 2 способа исправления: один — минимальное изменение, второй — рефакторинг для лучшей читаемости.
Ошибка:
[вставьте сообщение об ошибке]
Код:
[вставьте код]
12. Поиск deprecated API и устаревших паттернов
Промт:
Найди в этом коде использование deprecated методов, устаревших библиотек или нерекомендуемых практик. Для каждого найденного места предложи современную альтернативу. Укажи версию языка/фреймворка, с которой это изменение связано.
Код:
[вставьте код]
13. Отладка регулярных выражений
Промт:
Проверь это регулярное выражение на корректность. Оно должно [описание задачи, например, "извлекать email из текста"]. Найди:
1. Синтаксические ошибки
2. Проблемы с экранированием
3. Неожиданное поведение на граничных случаях (пустая строка, очень длинная строка)
4. Предложи оптимизированную версию
Регулярное выражение: [вставьте regex]
Тестовый текст: [вставьте текст]
14. Проверка безопасности (SQL-инъекции, XSS)
Промт:
Проверь этот код на уязвимости безопасности. Найди:
1. SQL-инъекции (если есть конкатенация строк в SQL)
2. XSS (если данные вставляются в HTML без экранирования)
3. CSRF (если нет токенов)
4. Незащищённые прямые ссылки на файлы
Для каждого уязвимого места предложи исправление с использованием параметризованных запросов, экранирования или фреймворк-защиты.
Код:
[вставьте код]
15. Генерация тестов для найденного бага
Промт:
На основе этого кода и описания ошибки напиши unit-тест, который воспроизводит баг. Используй [фреймворк, например, Jest, pytest]. После исправления тест должен проходить. Добавь также тесты для граничных случаев.
Код с ошибкой:
[вставьте код]
Описание ошибки:
[вставьте описание]
Как использовать эти промты эффективно
- Уточняйте контекст. Добавляйте версию языка, фреймворка, ОС. Например: "Python 3.11, Django 5.0, Linux".
- Приводите полный пример. Если ошибка возникает только с определёнными входными данными — покажите их.
- Используйте итерации. Если ответ AI не решает проблему, уточните запрос: "Попробуй другой подход" или "Объясни проще".
Заключение
Эти 15 промтов покрывают 90% ситуаций, с которыми я сталкиваюсь при отладке. Они не заменяют навыки разработчика, но ускоряют поиск причины в разы. Главное — не копировать код вслепую: всегда проверяйте предложенные решения на тестовом окружении.
Сохраните эту подборку в закладки — и когда в следующий раз поймаете баг, просто скопируйте промт и вставьте свой код. Экономия времени гарантирована.
Комментарии