Введение
Каждый разработчик знает: найти баг — это половина дела. Вторая половина — понять, что именно пошло не так, и исправить это без побочных эффектов. По данным отчёта Stripe (2022), разработчики тратят около 42% рабочего времени на отладку и тестирование, что обходится глобальной экономике в 300 миллиардов долларов ежегодно. Современные AI-инструменты, такие как Claude, GPT-4o или Gemini, могут значительно сократить это время, если использовать правильные промты. В этой подборке — 15 конкретных, готовых к копипасту промтов для разных этапов отладки: от анализа логов до рефакторинга. Каждый промт сопровождается пояснением и примером.
1. Промт для анализа стека ошибок (Stack Trace)
Когда использовать: Вы получили stack trace из продакшена, но не понимаете, какая строка кода вызвала ошибку.
Промт:
Проанализируй следующий stack trace и определи:
1. Точную строку кода, где произошла ошибка.
2. Причину (например, null pointer, деление на ноль).
3. Предполагаемый контекст (какие данные могли вызвать сбой).
4. Рекомендацию по исправлению.
Stack trace:
[вставьте сюда]
Пример использования:
Exception in thread "main" java.lang.NullPointerException
at com.example.UserService.getUser(UserService.java:45)
at com.example.UserController.handleRequest(UserController.java:12)
AI ответит: «Ошибка в строке 45 UserService.getUser — вероятно, userRepository вернул null. Проверьте, инициализирован ли userRepository в конструкторе. Рекомендуется добавить проверку на null».
2. Промт для поиска причины race condition
Когда использовать: Баг проявляется нестабильно, подозреваете гонку потоков.
Промт:
Ниже приведён код, в котором возникает race condition. Найди все точки, где два потока могут одновременно изменять общий ресурс, и предложи исправление с помощью мьютексов или атомарных операций. Используй язык [язык программирования].
Код:
[вставьте сюда]
Пример: Для кода на Java с инкрементом счётчика в двух потоках AI предложит использовать AtomicInteger или synchronized.
3. Промт для расшифровки логов
Когда использовать: Есть много логов, нужно быстро выявить аномалии.
Промт:
Вот фрагмент логов приложения. Найди все необычные события, которые могут указывать на баги или уязвимости. Для каждого события укажи: уровень серьёзности (низкий/средний/высокий), возможную причину и строку кода, где это могло произойти.
Логи:
[вставьте сюда]
4. Промт для поиска утечек памяти
Когда использовать: Приложение потребляет всё больше памяти, нужно найти виновника.
Промт:
Проанализируй этот код на предмет утечек памяти. Укажи объекты, которые не освобождаются после использования, и предложи паттерн (например, try-with-resources, weak reference) для исправления. Язык: [язык].
Код:
[вставьте сюда]
5. Промт для сравнения двух версий кода
Когда использовать: После обновления кода появился баг, нужно понять, что изменилось.
Промт:
Сравни две версии кода ниже. Найди изменения, которые могли привести к ошибке [опишите ошибку]. Выдели конкретные строки и объясни, почему это могло повлиять на работу.
Версия 1 (старая):
[вставьте сюда]
Версия 2 (новая):
[вставьте сюда]
6. Промт для отладки SQL-запросов
Когда использовать: Запрос работает медленно или возвращает неверные данные.
Промт:
Вот SQL-запрос и его план выполнения (EXPLAIN). Найди узкие места (full table scan, неиспользованные индексы) и предложи оптимизацию. Также проверь на синтаксические ошибки.
Запрос:
[вставьте сюда]
План:
[вставьте сюда]
7. Промт для написания unit-тестов для бага
Когда использовать: Нашли баг, нужно написать тест, который его воспроизводит.
Промт:
Напиши unit-тест на [фреймворк, например, JUnit] для следующей функции, которая содержит баг. Тест должен воспроизводить проблему, используя граничные значения. После этого предложи исправление функции.
Функция:
[вставьте сюда]
8. Промт для поиска deadlock
Когда использовать: Приложение зависает, подозреваете взаимную блокировку.
Промт:
Ниже дамп потоков (thread dump) из JVM. Найди deadlock: укажи потоки, которые заблокированы, и ресурсы, которые они ожидают. Предложи способ разрешения (например, изменить порядок блокировок).
Дамп:
[вставьте сюда]
9. Промт для отладки асинхронного кода (Promise, async/await)
Когда использовать: Баг в JavaScript/TypeScript с колбэками или промисами.
Промт:
В этом асинхронном коде есть баг: [опишите симптом]. Проанализируй цепочку промисов и найди, где теряется контекст или не обрабатывается ошибка. Предложи исправление с использованием async/await или .catch().
Код:
[вставьте сюда]
10. Промт для ревью кода на баги
Когда использовать: Нужно быстро проверить код на типичные ошибки.
Промт:
Выполни code review этого кода на предмет:
- Null pointer dereference
- Неинициализированные переменные
- Ошибки в логике условий
- Уязвимости (например, SQL injection)
Дай список найденных проблем с указанием строк и критичности.
Код:
[вставьте сюда]
11. Промт для отладки API-интеграции
Когда использовать: Вызов API возвращает неожиданный ответ.
Промт:
Вот запрос к API и ответ сервера. Найди несоответствие между ожидаемыми данными и реальным ответом. Проверь статус-коды, заголовки и тело ответа. Предположи, в чём может быть ошибка: в клиенте, сервере или спецификации.
Запрос:
[вставьте сюда]
Ответ:
[вставьте сюда]
12. Промт для оптимизации алгоритма
Когда использовать: Код работает, но слишком медленно.
Промт:
Этот алгоритм имеет временную сложность O(n^2) и вызывает тайм-ауты. Перепиши его с использованием более эффективной структуры данных (например, хеш-таблицы) и объясни новую сложность.
Код:
[вставьте сюда]
13. Промт для поиска багов в регулярных выражениях
Когда использовать: Регулярка не матчит или матчит лишнее.
Промт:
Проверь это регулярное выражение на корректность. Для каждой группы в выражении объясни, что она захватывает. Предложи исправление, если выражение не соответствует задумке: [опишите задачу]. Тестовые строки: [вставьте].
Регулярка:
[вставьте сюда]
14. Промт для анализа ошибок компиляции/интерпретации
Когда использовать: Код не компилируется, ошибка непонятна.
Промт:
Вот ошибка компиляции и код. Объясни причину ошибки простым языком и покажи исправленный фрагмент. Учти версию языка: [версия].
Ошибка:
[вставьте сюда]
Код:
[вставьте сюда]
15. Промт для отладки конфигураций (Docker, CI/CD)
Когда использовать: Сборка падает, но код корректен.
Промт:
Ниже конфигурационный файл Dockerfile. Сборка падает с ошибкой [вставьте]. Найди проблему — возможно, неверный порядок инструкций, отсутствие зависимостей или несовместимость версий. Предложи исправленный файл.
Dockerfile:
[вставьте сюда]
Заключение
Эти 15 промтов покрывают основные сценарии отладки: от анализа стека до оптимизации алгоритмов. Для максимальной эффективности адаптируйте каждый промт под свой язык программирования и контекст. Помните: AI — это помощник, а не замена вашему опыту; всегда проверяйте предложенные исправления в тестовой среде. Начните с первого промта сегодня — и вы увидите, как сократится время на поиск багов.
Если вы хотите углубить знания по промт-инжинирингу, подпишитесь на наш блог — мы регулярно публикуем практические руководства.
Комментарии