Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Protocolo sistemático de depuración en 6 fases. Enfoque estructurado ante errores con verificaciones rápidas, pruebas aisladas, regla de los 20 minutos y plantilla de informe de errores.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Español — Versión oficial en español de
bugfix-protocol.
Enfoque estructurado para la resolución de errores — desde el análisis de síntomas hasta la verificación. Evita el ensayo y error sin rumbo y garantiza que las soluciones sean sostenibles.
| Fase | Nombre | Objetivo | Tiempo máx. |
|---|---|---|---|
| 1 | Verificaciones rápidas | Descartar causas evidentes | 2 min |
| 2 | Diagnóstico | Localizar la causa raíz | 10 min |
| 3 | Prueba aislada | Hacer que el error sea reproducible | 5 min |
| 4 | Corrección | Corrección mínima | 10 min |
| 5 | Verificación | Verificar la solución + comprobar efectos secundarios | 5 min |
| 6 | Documentación | Preservar el conocimiento | 2 min |
Regla de los 20 minutos: Si no hay avances tras 20 minutos, cambia de enfoque o busca ayuda.
Antes de profundizar, comprueba las causas más comunes:
__pycache__, reinicia# Limpiar caché
find . -name "__pycache__" -type d -exec rm -rf {} + 2>&1
find . -name "*.pyc" -delete 2>&1
# Comprobar importaciones
python -c "import modulename"
# Comprobar sintaxis
python -m py_compile file.py
git diff, git log --oneline -10Según el proyecto, las secuencias de comandos de diagnóstico especializadas pueden ser útiles:
| Herramienta | Propósito |
|---|---|
import_diagnose.py | Analizar problemas de importación |
method_analyzer.py | Comprobar firmas de métodos |
env_checker.py | Validar variables de entorno/rutas |
Nota: Crea herramientas de diagnóstico específicas del proyecto o utiliza las existentes. Lo que importa es el enfoque sistemático, no la herramienta específica.
# 1. Depuración con print (rápida pero efectiva)
print(f"DEBUG: variable={variable!r}, type={type(variable)}")
# 2. Puntos de interrupción (interactivo)
breakpoint() # Python 3.7+
# 3. Traza de pila extendida
import traceback
traceback.print_exc()
# 4. Registro en lugar de print
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"State: {state!r}")
Objetivo: Reproducir el error con el código mínimo.
# test_bug.py — Prueba de reproducción mínima
"""
Bug: [Descripción corta]
Expected: [Lo que debería suceder]
Actual: [Lo que sucede en su lugar]
"""
# Configuración mínima
# ... solo lo esencial
# Desencadenante del error
# ... código exacto que desencadena el error
# Resultado esperado
# assert result == expected, f"Got {result}"
git bisect start, git bisect bad, git bisect good <commit># MAL: Tratar el síntoma
try:
result = broken_function()
except: # Ignorar todo
result = default_value
# BIEN: Corregir la causa raíz
def broken_function():
if input_data is None: # Causa real: falta comprobación de None
return default_value
return process(input_data)
| Categoría | Corrección típica |
|---|---|
| None/Null | Cláusula de guarda: if x is None: return default |
| Error de índice | Comprobación de límites: if i < len(lst) |
| Error de tipo | Conversión explícita: str(x), int(x) |
| Error de importación | Corregir ruta, instalar paquete |
| Codificación | Especificar UTF-8 explícitamente: encoding='utf-8' |
| Condición de carrera | Bloqueo/Mutex, o cambiar el orden |
| Error de estado | Comprobar inicialización, añadir restablecimiento |
# Pruebas unitarias
python -m pytest tests/ -v
# Solo pruebas afectadas
python -m pytest tests/test_module.py -v -k "test_name"
# Verificación de tipos
python -m mypy file.py
# Linter
python -m flake8 file.py
## Bug Report: [Título corto]
**Date:** YYYY-MM-DD
**Severity:** critical / high / medium / low
**Component:** [Módulo/Archivo]
### Symptom
[Lo que ve el usuario / mensaje de error]
### Root Cause
[Causa raíz técnica]
### Fix
[Qué se cambió + por qué]
### Affected Files
- `file1.py` — [Cambio]
- `file2.py` — [Cambio]
### Prevention
[¿Cómo se puede prevenir este tipo de error en el futuro?]
fix: [Descripción corta de la corrección]
Cause: [Causa raíz en una frase]
Fix: [Qué se cambió]
Test: [Cómo se verificó]
Esta sección es relevante para proyectos de GUI de escritorio con PyQt6/PySide6.
| Trampa | Problema | Solución |
|---|---|---|
| Desconexión Signal-Slot | Señal conectada pero el manejador no se ejecuta | print en manejador, comprobar firma |
| Seguridad de hilos (Thread Safety) | Actualización de GUI desde hilo de trabajo | QMetaObject.invokeMethod o usar señal |
| Cascada de diseño (Layout) | Widget invisible/desplazado | widget.show(), comprobar jerarquía de layout |
| Bloqueo del bucle de eventos | La GUI se congela | Mover operaciones largas a QThread |
| Recolección de basura | El widget desaparece repentinamente | Mantener referencia como self.widget |
# Imprimir jerarquía de widgets
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)
# Depuración de señales
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)
¿ERROR ENCONTRADO?
|
v
[Fase 1: Verificaciones rápidas] ── ¿Evidente? -> CORREGIR
|
v
[Fase 2: Diagnóstico] ──────────── ¿Causa clara? -> Fase 4
|
v
[Fase 3: Prueba aislada] ──────── ¿Reproducible? -> Fase 4
| |
| ¿No reproducible?
| |
| Añadir registros,
| esperar recurrencia
v
[Fase 4: Corrección] ───────────── Mínima + comprendida
|
v
[Fase 5: Verificación] ────────── ¿Pruebas en verde? -> Fase 6
| |
| ¿Pruebas en rojo? -> Volver a Fase 4
v
[Fase 6: Documentación] ───────── Informe de error + commit
Si estás atascado tras 20 minutos:
git stash, empieza completamente de nuevo아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
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つのコアプロセスを備えたヘキサフレックス・モデル。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.