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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Acceptance & Commitment Therapy (ACT) nach Steven Hayes: Hexaflex-Modell mit den sechs Kernprozessen psychischer Flexibilität.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Terapia de Aceptación y Compromiso (ACT) según Steven Hayes: modelo Hexaflex con los seis procesos nucleares de la flexibilidad psicológica.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
スティーブン・ヘイズによるアクセプタンス&コミットメント・セラピー(ACT):心理的柔軟性の6つのコアプロセスを備えたヘキサフレックス・モデル。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.