.NET: guía esencial para depurar en VSCode en 7 pasos

Depurar .NET en VSCode es una tarea bastante directa cuando el proyecto está bien configurado, pero cambia mucho según uses aplicaciones de consola, ASP.NET Core o servicios de larga duración. Si te preguntas ¿Cómo depurar .NET en VSCode?, la respuesta corta es: necesitas la extensión adecuada, una configuración de lanzamiento correcta y entender cómo se adjunta el depurador al proceso. Con eso, puedes inspeccionar puntos de interrupción, variables, pila de llamadas y excepciones sin salir del editor.
Qué necesitas antes de empezar a depurar
Antes de hablar de breakpoints o de launch.json, conviene comprobar la base. VSCode por sí solo no incluye un depurador completo para .NET; normalmente se apoya en la extensión de C# y en el runtime instalado en la máquina, así que el entorno debe estar alineado con la versión del proyecto y con la forma en que se ejecuta.
También importa el tipo de aplicación. No se depura igual una app de consola que una API web, porque el punto de entrada, el ciclo de vida y la forma de lanzar el proceso son distintos. Por eso, cuando alguien pregunta ¿Cómo depurar .NET en VSCode?, la respuesta correcta depende del proyecto y de si quieres iniciar la ejecución desde el editor o adjuntarte a un proceso ya arrancado.
En términos prácticos, lo más útil es verificar tres cosas: que el proyecto compila, que el editor detecta el workspace como una solución válida y que el archivo de configuración de depuración apunta al ejecutable o al archivo DLL correcto. Si uno de esos elementos falla, el depurador puede abrirse pero no detenerse donde esperas.
.NET y VSCode: configuración mínima de trabajo
La combinación habitual requiere una carpeta de proyecto abierta, una extensión compatible con C#, y una configuración de depuración generada para ese workspace. En muchos casos, VSCode ofrece plantillas que crean launch.json y, si hace falta, tasks.json para compilar antes de ejecutar.
Si el proyecto usa SDK-style, la detección suele ser más sencilla porque la estructura está estandarizada. Aun así, revisa que el archivo .csproj esté en la raíz adecuada y que el depurador no esté apuntando a una salida antigua dentro de bin/Debug o a una configuración de compilación distinta.
Cómo depurar .NET en VSCode paso a paso
La forma más fiable de empezar es crear una configuración de lanzamiento desde el panel de depuración y seleccionar el perfil que encaje con tu aplicación. Eso define si VSCode ejecuta el programa, adjunta el depurador o lanza el navegador en el caso de una API web.
Después, coloca puntos de interrupción en una ruta de ejecución que sepas que se va a invocar. Si no se detiene, el problema suele estar en una de estas capas: la compilación no coincide con el código fuente, el proceso no es el esperado o la aplicación está ejecutándose en otra carpeta de salida.
Un ejemplo práctico: si tienes una consola que lee parámetros y calcula un resultado, coloca el breakpoint justo después de leer args. Así podrás comprobar si la ejecución entra realmente en el método, si el valor esperado llega al proceso y si el depurador está trabajando sobre la build correcta.
Qué revisar cuando el breakpoint no se detiene
Cuando un breakpoint aparece desactivado o “hueco”, normalmente significa que no hay correspondencia entre el código fuente y los símbolos de depuración. En ese caso, limpia la salida de compilación, recompila y confirma que el archivo PDB se genera junto al ensamblado.
También conviene comprobar la ruta de ejecución de la configuración. Si la app se lanza desde un directorio distinto, el depurador puede estar conectándose al binario equivocado o a una versión anterior del proyecto, algo muy común al trabajar con varias configuraciones.
- Verifica que el proyecto compila sin errores antes de iniciar la depuración.
- Confirma que la extensión de C# está activa en el workspace correcto.
- Revisa que launch.json apunte al programa o DLL adecuados.
- Comprueba que la configuración de compilación coincide con la ejecución real.
- Si no se detiene, limpia y recompila para regenerar símbolos y binarios.
Depuración avanzada según el tipo de aplicación
En aplicaciones web, el flujo suele ser distinto porque el proceso se inicia como servidor y el navegador actúa como cliente. Ahí es importante distinguir entre el backend, las rutas HTTP y la respuesta que se está observando, ya que el breakpoint puede dispararse solo cuando la petición llega realmente al controlador o endpoint.
En servicios, workers o procesos de larga duración, muchas veces interesa adjuntar el depurador a un proceso ya arrancado. Esto es útil si el problema aparece solo en un contexto concreto o si el proceso lo inicia otro servicio, pero exige saber exactamente qué PID corresponde a la instancia que quieres inspeccionar.
Cuando trabajes con asíncronía, tareas en paralelo o eventos, el seguimiento se complica un poco más. En esos casos, ayuda observar la pila de llamadas, las variables locales y el flujo de excepciones para distinguir si el código no entra en el método, si sale antes de tiempo o si hay un error silencioso que interrumpe la ejecución.
Buenas prácticas para depurar con menos fricción
Si quieres que .NET sea fácil de depurar en VSCode, la clave está en reducir el ruido del entorno. Usa configuraciones de ejecución separadas para desarrollo y pruebas, evita mantener archivos generados antiguos y trata de depurar con la solución más pequeña posible cuando el fallo sea complejo.
También ayuda entender qué información da el depurador y cuál no. Los puntos de interrupción condicionales, las ventanas de variables y la inspección de excepciones son muy útiles, pero no sustituyen a una buena trazabilidad en el código ni a una compilación limpia.
En la práctica, ¿Cómo depurar .NET en VSCode? se responde mejor con un método ordenado: primero ejecución correcta, luego símbolos correctos y después inspección del flujo. Si sigues ese orden, reduces mucho el tiempo perdido buscando errores de configuración que no son realmente problemas del código.
Conclusión de nattia.dev sobre ¿Cómo depurar .NET en VSCode?
Depurar en VSCode funciona bien cuando el proyecto está bien configurado y el proceso que quieres observar coincide con el binario compilado. Lo más importante es revisar la extensión, la configuración de lanzamiento, los símbolos de depuración y el tipo de aplicación antes de interpretar un breakpoint que no se detiene. Si ordenas el diagnóstico en ese orden, la depuración deja de ser una prueba a ciegas y se convierte en un flujo reproducible para trabajar con .NET.
