Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
日本語の概要は準備中です。原文の説明を表示しています。
Систематический 6-фазный протокол отладки. Структурированный подход к багам с быстрыми проверками, изолированным тестированием, правилом 20 минут и шаблоном отчета об ошибке.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Русский — Официальная русская версия
bugfix-protocol.
Структурированный подход к ошибкам — от анализа симптомов до проверки. Предотвращает бесцельный метод проб и ошибок и гарантирует устойчивость исправлений.
| Фаза | Название | Цель | Макс. время |
|---|---|---|---|
| 1 | Быстрые проверки | Исключить очевидные причины | 2 мин |
| 2 | Диагностика | Локализовать первопричину | 10 мин |
| 3 | Изолированный тест | Сделать баг воспроизводимым | 5 мин |
| 4 | Исправление | Минимальная коррекция | 10 мин |
| 5 | Верификация | Проверить исправление + проверить побочные эффекты | 5 мин |
| 6 | Документирование | Сохранить знания | 2 мин |
Правило 20 минут: Если через 20 минут прогресс отсутствует, измените подход или обратитесь за помощью.
Прежде чем погружаться глубоко — проверьте наиболее частые причины:
__pycache__, перезапустите# Очистить кэш
find . -name "__pycache__" -type d -exec rm -rf {} + 2>&1
find . -name "*.pyc" -delete 2>&1
# Проверить импорты
python -c "import modulename"
# Проверить синтаксис
python -m py_compile file.py
git diff, git log --oneline -10В зависимости от проекта могут пригодиться специализированные скрипты диагностики:
| Инструмент | Назначение |
|---|---|
import_diagnose.py | Анализ проблем с импортом |
method_analyzer.py | Проверка сигнатур методов |
env_checker.py | Валидация переменных окружения/путей |
Примечание: Создавайте специфичные для проекта диагностические утилиты или используйте существующие. Важен систематический подход, а не конкретный инструмент.
# 1. Отладка через print (быстро, но эффективно)
print(f"DEBUG: variable={variable!r}, type={type(variable)}")
# 2. Точка останова (интерактивно)
breakpoint() # Python 3.7+
# 3. Расширенный traceback
import traceback
traceback.print_exc()
# 4. Логирование вместо print
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"State: {state!r}")
Цель: Воспроизвести баг с минимальным количеством кода.
# test_bug.py — Минимальный тест воспроизведения
"""
Bug: [Краткое описание]
Expected: [Что должно произойти]
Actual: [Что происходит вместо этого]
"""
# Минимальная настройка
# ... только самое необходимое
# Триггер бага
# ... точный код, вызывающий баг
# Ожидаемый результат
# assert result == expected, f"Got {result}"
git bisect start, git bisect bad, git bisect good <commit># ПЛОХО: Лечение симптома
try:
result = broken_function()
except: # Подавление всех исключений
result = default_value
# ХОРОШО: Исправление первопричины
def broken_function():
if input_data is None: # Настоящая причина: отсутствие проверки на None
return default_value
return process(input_data)
| Категория | Типичное исправление |
|---|---|
| None/Null | Защитное условие: if x is None: return default |
| Ошибка индекса | Проверка границ: if i < len(lst) |
| Ошибка типа | Явное приведение: str(x), int(x) |
| Ошибка импорта | Исправить путь, установить пакет |
| Кодировка | Явно указать UTF-8: encoding='utf-8' |
| Состояние гонки | Блокировка/Мьютекс или изменение порядка |
| Баг состояния | Проверить инициализацию, добавить сброс |
# Юнит-тесты
python -m pytest tests/ -v
# Только затронутые тесты
python -m pytest tests/test_module.py -v -k "test_name"
# Проверка типов
python -m mypy file.py
# Линтер
python -m flake8 file.py
## Bug Report: [Краткий заголовок]
**Date:** YYYY-MM-DD
**Severity:** critical / high / medium / low
**Component:** [Модуль/Файл]
### Symptom
[Что видит пользователь / сообщение об ошибке]
### Root Cause
[Техническая первопричина]
### Fix
[Что было изменено + почему]
### Affected Files
- `file1.py` — [Изменение]
- `file2.py` — [Изменение]
### Prevention
[Как предотвратить подобный баг в будущем?]
fix: [Краткое описание исправления]
Cause: [Первопричина в одном предложении]
Fix: [Что было изменено]
Test: [Как проверялось]
Этот раздел актуален для десктопных GUI-проектов на PyQt6/PySide6.
| Ловушка | Проблема | Решение |
|---|---|---|
| Отключение Signal-Slot | Сигнал подключен, но обработчик не выполняется | print в обработчике, проверка сигнатуры |
| Потокобезопасность | Обновление GUI из рабочего потока | QMetaObject.invokeMethod или использование сигнала |
| Каскад макета (Layout) | Виджет не виден / смещен | widget.show(), проверка иерархии layout |
| Блокировка цикла событий | Зависание GUI | Перенести долгие операции в QThread |
| Сборка мусора | Виджет внезапно исчезает | Сохранять ссылку как self.widget |
# Дамп иерархии виджетов
def dump_widget_tree(widget, indent=0):
print(" " * indent + f"{widget.__class__.__name__}: {widget.objectName()}")
for child in widget.findChildren(QWidget):
if child.parent() == widget:
dump_widget_tree(child, indent + 2)
# Отладка сигналов
from PyQt6.QtCore import QObject
original_connect = QObject.connect
def debug_connect(self, *args, **kwargs):
print(f"CONNECT: {self.__class__.__name__} -> {args}")
return original_connect(self, *args, **kwargs)
ОШИБКА НАЙДЕНА?
|
v
[Фаза 1: Быстрые проверки] ───── Очевидно? -> ИСПРАВИТЬ
|
v
[Фаза 2: Диагностика] ────────── Причина ясна? -> Фаза 4
|
v
[Фаза 3: Изолированный тест] ── Воспроизводимо? -> Фаза 4
| |
| Не воспроизводится?
| |
| Добавить логирование,
| ждать повторения
v
[Фаза 4: Исправление] ────────── Минимальное + понятное
|
v
[Фаза 5: Верификация] ───────── Тесты пройдены? -> Фаза 6
| |
| Тесты провалены? -> Назад к Фазе 4
v
[Фаза 6: Документирование] ──── Отчет об ошибке + коммит
Если вы застряли через 20 минут:
git stash, начните с чистого листаまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
日本語の概要は準備中です。原文の説明を表示しています。
Aktives Lernen, Erarbeitung von Fachinhalten und strukturierte Erstellung von Synthesen.
日本語の概要は準備中です。原文の説明を表示しています。
Prüfungsvorbereitung, Selbsttests, Probeklausuren und systematische Fehleranalyse.
日本語の概要は準備中です。原文の説明を表示しています。
Terapia de Aceptación y Compromiso (ACT) según Steven Hayes: modelo Hexaflex con los seis procesos nucleares de la flexibilidad psicológica.
日本語の概要は準備中です。原文の説明を表示しています。
Acceptance & Commitment Therapy (ACT) nach Steven Hayes: Hexaflex-Modell mit den sechs Kernprozessen psychischer Flexibilität.
日本語の概要は準備中です。原文の説明を表示しています。
Acceptance & Commitment Therapy (ACT) according to Steven Hayes: Hexaflex model with the six core processes of psychological flexibility.
日本語の概要は準備中です。原文の説明を表示しています。