Cómo depurar Python en VS Code

Actualizado el: 11/07/2026
Tempo de leitura: 6 minutos
Debug de aplicações Python no Visual Studio Code

Cuando un programa en Python se ejecuta pero produce un resultado incorrecto, añadir más llamadas a print() puede convertirse rápidamente en una solución difícil de mantener. Un depurador permite pausar el programa, inspeccionar valores, ejecutar una línea cada vez y comprender exactamente cómo el código llegó a un determinado estado.

En esta guía aprenderás a depurar Python en VS Code con breakpoints, controles paso a paso, variables, panel Watch, pila de llamadas, puntos condicionales, logpoints y configuraciones de launch.json. También revisaremos problemas frecuentes relacionados con el intérprete y los entornos virtuales.

Qué necesitas

Instala Visual Studio Code, Python y la extensión oficial de Python de Microsoft. La extensión Python Debugger proporciona el adaptador utilizado en las sesiones actuales.

La documentación oficial de depuración de Python en VS Code explica las configuraciones y controles disponibles.

Abrir una carpeta de proyecto

Abre la carpeta completa que contiene tus archivos, no solamente un archivo suelto. Una carpeta de trabajo permite guardar configuraciones, detectar entornos virtuales y crear .vscode/launch.json.

Crea carrito.py:

def calcular_total(precios, descuento=0):
    subtotal = sum(precios)
    valor_descuento = subtotal * descuento
    return subtotal - valor_descuento


articulos = [19.90, 5.50, 12.00]
total = calcular_total(articulos, descuento=10)
print(f"Total: {total:.2f}")

El código tiene un error lógico: la función espera un descuento decimal como 0.10, pero recibe 10. La sintaxis es válida, así que Python ejecuta el archivo y muestra un total negativo.

Seleccionar el intérprete correcto

Haz clic en el indicador de Python de la barra inferior o ejecuta Python: Select Interpreter desde la paleta de comandos. Elige el entorno donde estén instaladas las dependencias del proyecto.

Un intérprete incorrecto puede causar paquetes ausentes, una versión inesperada de Python o variables de entorno diferentes.

Crear el primer breakpoint

Haz clic en el margen izquierdo junto a esta línea:

valor_descuento = subtotal * descuento

Aparecerá un punto rojo. El depurador pausará antes de ejecutar esa línea. También puedes alternar un breakpoint con F9.

Iniciar la depuración

Abre el archivo, entra en Run and Debug y pulsa F5. En un script sencillo, selecciona la configuración para el archivo Python actual.

Cuando el programa se detiene, VS Code muestra Variables, Watch, Call Stack y Breakpoints. La línea activa aparece resaltada.

Inspeccionar variables

En el ejemplo, revisa:

  • precios: la lista de valores.
  • descuento: contiene 10.
  • subtotal: suma de los precios.

El valor de descuento revela la causa. Corrige la llamada:

total = calcular_total(articulos, descuento=0.10)

Controles principales

  • Continue (F5): continúa hasta el siguiente breakpoint.
  • Step Over (F10): ejecuta la línea sin entrar en funciones llamadas.
  • Step Into (F11): entra en la función de la línea actual.
  • Step Out (Shift + F11): termina la función actual.
  • Restart: reinicia la sesión.
  • Stop (Shift + F5): finaliza la depuración.

Step Over y Step Into

def aplicar_impuesto(importe, tasa):
    return importe * (1 + tasa)


def crear_factura(precios):
    subtotal = sum(precios)
    total = aplicar_impuesto(subtotal, 0.08)
    return total


print(crear_factura([10, 20, 30]))

Si estás en la llamada a aplicar_impuesto(), Step Over calcula el resultado y permanece en crear_factura(). Step Into abre la función para inspeccionar importe y tasa.

Panel Watch

Watch recalcula expresiones cada vez que la ejecución se pausa:

subtotal * descuento
len(precios)
subtotal - valor_descuento
all(precio >= 0 for precio in precios)

Evita expresiones con efectos secundarios porque podrían modificar el estado del programa.

Debug Console

Con el programa pausado, puedes evaluar expresiones:

subtotal
precios[0]
type(descuento)
subtotal * 0.10

La consola es útil para experimentar, pero los cambios desaparecen al reiniciar. La solución definitiva debe guardarse en el código.

Comprender la pila de llamadas

Call Stack muestra el camino seguido hasta la línea actual:

main
crear_informe
calcular_promedio
validar_valores

Al seleccionar un marco, VS Code muestra las variables locales de esa función. Es especialmente útil cuando el error aparece lejos del punto donde se originaron los datos.

Breakpoints condicionales

En un bucle grande, no conviene detenerse en cada iteración.

pedidos = [15, 42, -8, 27, 100]

for indice, importe in enumerate(pedidos):
    procesado = importe * 1.1
    print(indice, procesado)

Haz clic derecho sobre el breakpoint y añade una condición como:

importe < 0
indice == 3
procesado > 50

Hit counts y logpoints

Un hit count pausa después de que una línea se ejecute cierto número de veces. Un logpoint escribe un mensaje en la consola sin detener el programa.

Ejemplo de logpoint:

Procesando pedido {indice}: importe={importe}

Para registros permanentes, utiliza el módulo logging. Los logpoints son una ayuda temporal del editor.

Depurar excepciones

En la sección Breakpoints puedes activar la pausa cuando se genera una excepción.

def promedio(valores):
    return sum(valores) / len(valores)


print(promedio([]))

Al detenerse en ZeroDivisionError, verás que la lista está vacía y podrás seguir la pila para localizar su origen.

Crear launch.json

Los archivos sencillos no necesitan configuración. Utiliza launch.json cuando debas pasar argumentos, variables de entorno, un directorio de trabajo o un módulo concreto.

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Depurar archivo Python actual",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true
    }
  ]
}

Pasar argumentos

{
  "name": "Depurar informe",
  "type": "debugpy",
  "request": "launch",
  "program": "${workspaceFolder}/informe.py",
  "args": ["ventas.csv", "--formato", "json"],
  "console": "integratedTerminal"
}

No guardes contraseñas ni tokens dentro de esta configuración.

Depurar pruebas

La vista Testing permite descubrir pruebas de unittest y pytest. Coloca un breakpoint en la aplicación o en la prueba y utiliza la opción de depuración.

La guía de Pytest en Python explica cómo crear pruebas, comprobar excepciones y organizar archivos.

Problemas frecuentes

El breakpoint aparece gris

Guarda el archivo, confirma que es el archivo ejecutado y revisa el intérprete y la configuración seleccionada.

No se puede importar un paquete

Selecciona el entorno donde se instaló la biblioteca y compara su ruta con la terminal.

input() no funciona

Utiliza integratedTerminal para programas interactivos.

El depurador entra en bibliotecas

Mantén justMyCode activado para trabajar principalmente con tu propio código.

El programa se comporta distinto

Compara el directorio de trabajo, los argumentos, las variables de entorno y el intérprete con la ejecución habitual.

Rutina práctica de depuración

  1. Reproduce el problema con una entrada pequeña.
  2. Lee el error completo o describe el resultado incorrecto.
  3. Coloca un breakpoint antes del primer estado sospechoso.
  4. Inspecciona entradas y suposiciones.
  5. Avanza una decisión cada vez.
  6. Utiliza la pila de llamadas para localizar el origen.
  7. Corrige la causa, no solamente el síntoma.
  8. Añade una prueba que evite la regresión.

Conclusión

Para depurar Python en VS Code de forma eficaz, comienza con el intérprete correcto, pausa antes del posible fallo, revisa variables y sigue las decisiones con los controles paso a paso. Los breakpoints condicionales y logpoints ayudan en bucles grandes, mientras que launch.json hace reproducibles las ejecuciones complejas.

La mejor práctica combina depuración, mensajes de error claros, logging y pruebas automatizadas.

Lecturas relacionadas

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Leitura e escrita de arquivos TXT usando Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cómo leer y escribir archivos de texto en Python

    Aprende a leer, escribir, añadir y procesar archivos de texto en Python con UTF-8, with, pathlib y manejo seguro de

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Pessoa usando tablet com caneta digital para planejar tarefas em checklist, representando organização, planejamento e produtividade digital.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    sort() vs sorted() en Python: diferencias y ejemplos

    Aprende las diferencias entre sort() y sorted() en Python, con claves personalizadas, orden descendente, varios criterios y errores comunes.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso de expressões regulares regex para manipulação de texto em Python
    Python Avanzado
    Foto de perfil de Leandro Hirt da Academify

    Regex en Python: guía de expresiones regulares

    Aprende regex en Python con search, fullmatch, findall, grupos, cuantificadores, sustituciones, flags, patrones compilados y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Logo do Python com o texto 'Python argparse CLI' abaixo
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear una CLI en Python con argparse

    Crea una CLI en Python con argparse: argumentos, banderas, tipos, choices, subcomandos, validación, pruebas y empaquetado moderno.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Jogo da forca para iniciantes desenvolvido com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un juego del ahorcado en Python

    Crea un juego del ahorcado en Python con palabras aleatorias, validación, letras repetidas, vidas, dibujos ASCII, pistas y opción de

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Uso da função enumerate em loops Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    enumerate() en Python: bucles con índices

    Aprende enumerate() en Python para recorrer valores con índices, elegir el inicio, combinarlo con zip, procesar archivos y evitar contadores

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026