Отладка кода — это искусство, которое требует терпения, логики и правильных инструментов. По данным исследования GitLab Global DevSecOps Survey 2025, разработчики тратят до 42% рабочего времени на поиск и исправление ошибок. Но с приходом больших языковых моделей (LLM) процесс дебаггинга стал значительно быстрее: грамотно составленный промт может сократить время анализа логов с часов до минут. В этой статье я собрал 10 конкретных промтов для отладки, которые помогут вам быстрее находить и исправлять баги — от простых синтаксических ошибок до сложных race conditions в многопоточных приложениях. Все промты проверены на ChatGPT (GPT-4o), Claude 3.5 Sonnet и Gemini 2.0 Pro по состоянию на июль 2026 года.
1. Промт для анализа стека ошибок (Stack Trace)
Когда использовать: Вы получили exception в production или staging-среде, и вам нужно понять, что пошло не так.
Промт:
Проанализируй этот stack trace ошибки. Укажи: (1) точную строку и файл, где произошла ошибка, (2) наиболее вероятную причину (с точки зрения типовых багов в [язык программирования]), (3) предложи 2–3 способа исправления, от наиболее простого к наиболее надёжному. Если ошибка связана с внешними зависимостями — укажи это отдельно.
[вставьте стек трейс]
Пример использования:
Проанализируй этот stack trace ошибки. Укажи: (1) точную строку и файл, где произошла ошибка, (2) наиболее вероятную причину (с точки зрения типовых багов в Python), (3) предложи 2–3 способа исправления, от наиболее простого к наиболее надёжному. Если ошибка связана с внешними зависимостями — укажи это отдельно.
Traceback (most recent call last):
File "/app/main.py", line 42, in <module>
result = calculate_risk(user_data)
File "/app/risk.py", line 18, in calculate_risk
score = model.predict(features)
File "/app/model.py", line 55, in predict
return self.weights @ x + self.bias
TypeError: unsupported operand type(s) for @: 'numpy.ndarray' and 'NoneType'
AI-модель укажет, что features имеет тип None, и предложит проверить, что функция preprocess() не возвращает None при пустом user_data, а также добавить логирование входящих данных.
2. Промт для поиска причины race condition
Когда использовать: Приложение падает нестабильно, ошибки воспроизводятся только при высокой нагрузке.
Промт:
Ниже приведён код на [язык] с подозрением на race condition. Найди все места, где возможна гонка потоков/корутин. Для каждого места: (1) объясни, какие именно данные могут быть повреждены, (2) предложи конкретное исправление (использование блокировки, атомарной операции или очереди), (3) покажи пример кода с исправлением. Если race condition нет — объясни, почему.
[вставьте код]
Пример использования:
Ниже приведён код на Python с подозрением на race condition. Найди все места, где возможна гонка потоков/корутин. Для каждого места: (1) объясни, какие именно данные могут быть повреждены, (2) предложи конкретное исправление (использование блокировки, атомарной операции или очереди), (3) покажи пример кода с исправлением. Если race condition нет — объясни, почему.
import threading
counter = 0
def increment():
global counter
for _ in range(1000):
counter += 1
threads = [threading.Thread(target=increment) for _ in range(10)]
for t in threads:
t.start()
for t in threads:
t.join()
print(counter)
AI определит, что counter += 1 — неатомарная операция, и предложит использовать threading.Lock или threading.AtomicInteger (через ctypes).
3. Промт для ревью SQL-запросов на медленные баги
Когда использовать: API-эндпоинт работает медленно, подозрение на плохой запрос к БД.
Промт:
Проанализируй этот SQL-запрос на предмет: (1) отсутствующих индексов (укажи, какие индексы нужно создать), (2) проблем с JOIN (лишние или неэффективные), (3) использования функций в WHERE, которые мешают индексам, (4) потенциальных deadlock-ов. Если запрос можно переписать эффективнее — покажи оптимизированную версию. Укажи EXPLAIN ANALYZE план, если это возможно.
[вставьте SQL-запрос]
Пример использования:
Проанализируй этот SQL-запрос на предмет: (1) отсутствующих индексов, (2) проблем с JOIN, (3) использования функций в WHERE, которые мешают индексам, (4) потенциальных deadlock-ов.
SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE DATE(o.created_at) = '2026-07-13'
GROUP BY u.name;
AI укажет, что DATE(o.created_at) делает индекс по created_at бесполезным, и предложит заменить на o.created_at >= '2026-07-13' AND o.created_at < '2026-07-14', а также добавить составной индекс (user_id, created_at).
4. Промт для анализа логов (Log Analysis)
Когда использовать: У вас есть файл логов (или дамп логов) с ошибками, и нужно найти паттерн.
Промт:
Вот фрагмент логов приложения. Найди: (1) повторяющиеся паттерны ошибок (например, одинаковые исключения или HTTP-статусы), (2) временные корреляции (ошибки возникают в определённые интервалы), (3) предложи, какие метрики или алерты добавить для раннего обнаружения этой проблемы. Если ошибка связана с внешним сервисом — укажи, как проверить его статус.
[вставьте логи]
Пример использования:
Вот фрагмент логов приложения. Найди: (1) повторяющиеся паттерны ошибок, (2) временные корреляции, (3) предложи метрики для раннего обнаружения.
2026-07-13 10:15:23 ERROR [payment] Timeout connecting to Stripe
2026-07-13 10:15:25 ERROR [payment] Timeout connecting to Stripe
2026-07-13 10:15:27 INFO [payment] Retry attempt 3
2026-07-13 10:15:30 ERROR [payment] Timeout connecting to Stripe
2026-07-13 10:16:01 ERROR [user] Database connection pool exhausted
AI обнаружит, что ошибки таймаута Stripe происходят каждые 2 секунды, что указывает на проблему с сетью или квотой API, и предложит добавить метрику payment.stripe.timeout_count и алерт при >5 ошибок за минуту.
5. Промт для поиска утечек памяти (Memory Leak)
Когда использовать: Приложение растёт в памяти со временем, падает с OOM.
Промт:
Ниже приведён код на [язык], который подозревается в утечке памяти. Найди: (1) объекты, которые не освобождаются (глобальные списки, замыкания, слушатели событий), (2) циклические ссылки, если язык не поддерживает GC, (3) предложи конкретные исправления (удаление ссылок, использование weakref, контекстные менеджеры). Если кода нет — дай чеклист типовых мест утечек для [язык].
[вставьте код]
Пример использования:
Ниже приведён код на JavaScript (Node.js), который подозревается в утечке памяти. Найди объекты, которые не освобождаются, и предложи исправления.
const cache = {};
app.get('/data', (req, res) => {
const id = req.query.id;
cache[id] = heavyComputation(id);
res.json(cache[id]);
});
AI укажет, что cache никогда не очищается, и предложит использовать Map с TTL, или библиотеку lru-cache.
6. Промт для дебага бесконечного цикла или зависания
Когда использовать: Программа зависает в определённом месте, не отвечает.
Промт:
Этот код на [язык] иногда зависает. Проанализируй его на предмет: (1) бесконечных циклов (проверь условия выхода), (2) deadlock-ов (блокировки ресурсов в разном порядке), (3) блокирующих операций ввода-вывода без таймаута. Для каждого подозрительного места предложи исправление. Если возможно — добавь логирование точек входа.
[вставьте код]
Пример использования:
Этот код на Java иногда зависает. Проанализируй на предмет бесконечных циклов и deadlock-ов.
public void transfer(Account from, Account to, int amount) {
synchronized(from) {
synchronized(to) {
from.withdraw(amount);
to.deposit(amount);
}
}
}
AI определит потенциальный deadlock при одновременном вызове transfer(a, b, 10) и transfer(b, a, 20), и предложит использовать глобальный порядок блокировок (по ID аккаунта) или tryLock() с таймаутом.
7. Промт для проверки null/undefined ошибок
Когда использовать: Часто падает с NullPointerException или TypeError: Cannot read property of undefined.
Промт:
Ниже код на [язык]. Найди все возможные места, где может возникнуть ошибка из-за null/undefined/None. Для каждого места: (1) укажи строку, (2) объясни, при каких условиях возникает, (3) предложи исправление (optional chaining, проверка на null, дефолтные значения). Если язык типизирован — укажи, какие типы нужно проверить.
[вставьте код]
Пример использования:
Ниже код на TypeScript. Найди все возможные места с null/undefined ошибками.
function getFullName(user) {
return user.firstName + ' ' + user.lastName;
}
AI укажет, что user может быть undefined, и user.firstName — тоже, и предложит: user?.firstName ?? 'Unknown' + ' ' + user?.lastName ?? ''.
8. Промт для дебага сетевых запросов (API)
Когда использовать: Клиент получает неожиданные ответы от API, или запросы падают с таймаутом.
Промт:
Вот пример неудачного HTTP-запроса: метод, URL, заголовки, тело запроса и ответ сервера. Проанализируй: (1) возможные причины ошибки (неверный формат, отсутствие авторизации, CORS, rate limiting), (2) предложи, как исправить клиентский код, (3) если проблема на стороне сервера — укажи, какие заголовки или статусы нужно проверить. Дай пример правильного запроса.
[вставьте данные запроса]
Пример использования:
Вот неудачный POST-запрос: метод POST, URL https://api.example.com/orders, заголовки: Content-Type: application/json, тело: {"user": 123, "items": [1,2,3]}, ответ: 400 Bad Request, тело: {"error": "missing field 'total'"}.
AI укажет, что сервер ожидает поле total, и предложит добавить его в тело запроса.
9. Промт для поиска логических ошибок (off-by-one, неправильные границы)
Когда использовать: Алгоритм даёт неверный результат, хотя не падает.
Промт:
Этот код на [язык] реализует [описание задачи], но выдаёт неверный результат для некоторых входных данных. Найди логическую ошибку: (1) проверь границы циклов и массивов (off-by-one), (2) проверь условия if/else (пропущенные else, неверные операторы), (3) проверь корректность математических формул. Если ошибка найдена — покажи исправленный код.
[вставьте код]
Пример использования:
Этот код на Python вычисляет среднее арифметическое, но иногда выдаёт неверный результат.
def average(nums):
total = 0
for i in range(1, len(nums)):
total += nums[i]
return total / len(nums)
AI найдёт off-by-one: цикл начинается с 1, пропуская первый элемент. Исправление: range(len(nums)).
10. Промт для автоматического создания тестов для найденного бага
Когда использовать: Вы нашли баг и хотите закрепить исправление тестом, чтобы он не вернулся.
Промт:
Вот код функции на [язык], в которой был найден баг: [опишите баг]. Исправленная версия кода ниже. Напиши unit-тесты (используя [фреймворк для тестов, например, pytest или Jest]), которые: (1) проверяют, что баг исправлен (позитивный тест), (2) проверяют граничные случаи (пустой ввод, null, максимальные значения), (3) проверяют, что старый баг не воспроизводится (регрессионный тест). Дай полный код тестов.
[вставьте исправленный код]
Пример использования:
Вот код функции на Python, в которой был найден баг: функция не обрабатывала случай, когда список пуст, и падала с ZeroDivisionError. Исправленная версия кода ниже. Напиши unit-тесты с использованием pytest.
def average(nums):
if not nums:
return 0
return sum(nums) / len(nums)
AI сгенерирует тесты: test_average_normal, test_average_empty, test_average_single_element, test_average_negative_numbers.
Заключение
Эти 10 промтов — не просто шаблоны, а рабочие инструменты, которые я использую в своей практике ежедневно. Они уже сэкономили мне сотни часов на отладке. Главное — помните: AI-модели не идеальны. Всегда перепроверяйте предложенные исправления, особенно в production-коде. Используйте промты как стартовую точку для анализа, а не как окончательное решение. И не забывайте добавлять контекст: версию языка, фреймворка, операционную систему — это значительно повышает точность ответа.
Если вы хотите системно подойти к изучению промт-инжиниринга для разработки, обратите внимание на курсы, которые учат составлять эффективные запросы для дебаггинга. Например, ASI Biont поддерживает подключение к ChatGPT и Claude через API — подробнее на asibiont.com/courses. Это позволит автоматизировать часть рутинной отладки и сосредоточиться на действительно сложных задачах.
Комментарии