Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
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 nuevoNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
The English summary is being prepared. Showing the original description.
Aktives Lernen, Erarbeitung von Fachinhalten und strukturierte Erstellung von Synthesen.
The English summary is being prepared. Showing the original description.
Prüfungsvorbereitung, Selbsttests, Probeklausuren und systematische Fehleranalyse.
The English summary is being prepared. Showing the original description.
Acceptance & Commitment Therapy (ACT) nach Steven Hayes: Hexaflex-Modell mit den sechs Kernprozessen psychischer Flexibilität.
The English summary is being prepared. Showing the original description.
Terapia de Aceptación y Compromiso (ACT) según Steven Hayes: modelo Hexaflex con los seis procesos nucleares de la flexibilidad psicológica.
The English summary is being prepared. Showing the original description.
スティーブン・ヘイズによるアクセプタンス&コミットメント・セラピー(ACT):心理的柔軟性の6つのコアプロセスを備えたヘキサフレックス・モデル。
The English summary is being prepared. Showing the original description.