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. 拡張トレースバック
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: [検証方法]
このセクションは PyQt6/PySide6 を使用したデスクトップ GUI プロジェクトに関連します。
| トラップ | 問題 | 解決策 |
|---|---|---|
| Signal-Slot 切断 | シグナルが接続されているがハンドラーが実行されない | ハンドラー内で print、シグネチャの確認 |
| スレッドセーフ | ワーカースレッドからの GUI 更新 | QMetaObject.invokeMethod またはシグナルを使用 |
| レイアウトの崩れ | ウィジェットが非表示/配置ミス | widget.show()、レイアウト階層の確認 |
| イベントループのブロック | 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つのコアプロセスを備えたヘキサフレックス・モデル。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.