Is it possible to change the value of a variable while debugging?

Depuración Eficaz de Código C en Visual Studio Code

hace 2 años

Valoración: 4.54 (2917 votos)

La depuración es una fase crucial en el desarrollo de software, especialmente en lenguajes compilados como C, donde los errores pueden ser difíciles de rastrear. Visual Studio Code (VS Code), con su potente conjunto de herramientas y extensiones, se presenta como un entorno de desarrollo integrado (IDE) excepcional para facilitar esta tarea. Este artículo te guiará a través del proceso de depuración de código C en VS Code, desde la configuración inicial hasta el dominio de las funcionalidades avanzadas, permitiéndote optimizar tu flujo de trabajo y resolver problemas de manera eficiente.

Is it possible to change the value of a variable while debugging an AC application MCQ?
Yes, Visual Studio allows the developer to modify the value of a variable during debugging in a c# application. Set a breakpoint, hover the mouse above the variable so that a tooltip appears with the name of the variable and the variable's current value.
Índice de Contenido

Preparativos para la Depuración de C en VS Code

Antes de sumergirnos en el proceso de depuración, es fundamental asegurar que tu entorno esté correctamente configurado. Esto implica la instalación de las herramientas necesarias y la preparación de tu proyecto en VS Code.

Instalación de Extensiones Esenciales

VS Code se basa en un sistema de extensiones para ampliar sus funcionalidades. Para la depuración de C, la extensión fundamental es la de C/C++, desarrollada por Microsoft. Esta extensión proporciona soporte lingüístico enriquecido para C y C++, incluyendo IntelliSense (autocompletado inteligente), formateo de código, refactorización y, crucialmente, depuración. Para instalarla, dirígete a la vista de Extensiones (icono de cubos en la barra lateral izquierda) y busca "C/C++". Haz clic en "Instalar" para añadirla a tu VS Code.

Configuración del Depurador con `launch.json`

Para iniciar una sesión de depuración en VS Code, es necesario definir una configuración de lanzamiento. Esta configuración se almacena en un archivo llamado launch.json, ubicado generalmente en la carpeta .vscode de tu proyecto. Si no existe, VS Code te ayudará a crearlo al iniciar la depuración por primera vez.

El archivo launch.json describe cómo VS Code debe iniciar el depurador para tu programa C. Para un proyecto simple en C, una configuración básica podría lucir así:

{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/tu_programa", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } 

Desglosemos algunos de los campos clave:

  • "name": Un nombre descriptivo para esta configuración de depuración.
  • "type": El tipo de depurador a utilizar. "cppdbg" es común para C y C++ usando depuradores como gdb o lldb.
  • "request": Indica que se va a iniciar una nueva instancia del programa ("launch") en contraposición a adjuntarse a un proceso en ejecución ("attach").
  • "program": La ruta al ejecutable de tu programa C. "${workspaceFolder}/tu_programa" es un ejemplo, debes reemplazar "tu_programa" con el nombre real de tu ejecutable. Asegúrate de que el programa esté compilado antes de depurar.
  • "args": Argumentos de línea de comandos que se pasarán a tu programa al iniciarse la depuración.
  • "cwd": El directorio de trabajo para el programa. "${workspaceFolder}" establece el directorio raíz de tu proyecto como directorio de trabajo.
  • "MIMode": El depurador subyacente a utilizar. "gdb" es el GNU Debugger, una opción popular y robusta.

Asegúrate de ajustar el campo "program" para que apunte correctamente a tu ejecutable. Generalmente, después de compilar tu código C, tendrás un archivo ejecutable (por ejemplo, mi_programa o mi_programa.exe dependiendo de tu sistema operativo). La ruta en "program" debe ser relativa a la carpeta raíz de tu proyecto o una ruta absoluta.

Estableciendo Puntos de Interrupción (Breakpoints)

Los puntos de interrupción son marcadores esenciales en la depuración. Indican al depurador dónde pausar la ejecución del programa para que puedas inspeccionar su estado. Para establecer un punto de interrupción en VS Code, simplemente haz clic en el margen izquierdo, junto al número de línea donde deseas pausar la ejecución. Aparecerá un círculo rojo, indicando un punto de interrupción activo.

Puedes desactivar temporalmente un punto de interrupción haciendo clic nuevamente sobre él (se volverá gris). Para eliminarlo, puedes arrastrarlo fuera del margen o hacer clic derecho sobre él y seleccionar "Eliminar punto de interrupción".

Iniciando una Sesión de Depuración

Una vez que tienes tu configuración launch.json lista y has establecido tus puntos de interrupción, estás listo para iniciar la sesión de depuración. Hay varias formas de hacerlo:

  • Tecla F5: La forma más rápida y común. Presiona la tecla F5 para iniciar la depuración con la configuración activa seleccionada en el panel "Ejecutar y Depurar".
  • Panel "Ejecutar y Depurar": Haz clic en el icono de "Ejecutar y Depurar" en la barra lateral izquierda (icono de un triángulo con un insecto). Luego, haz clic en el botón verde "Ejecutar y Depurar" (o el icono de reproducción).
  • Menú "Ejecutar": Ve al menú superior "Ejecutar" y selecciona "Iniciar depuración".

Al iniciar la sesión, VS Code cambiará al modo de depuración. Notarás los siguientes elementos en la interfaz:

  • Barra de herramientas de depuración: Aparecerá en la parte superior de la ventana, con controles para continuar, pausar, paso a paso, reiniciar y detener la depuración.
  • Panel "Consola de depuración": Se abrirá en la parte inferior, mostrando la salida del depurador, mensajes de registro y permitiéndote interactuar con el depurador mediante comandos.
  • Panel "Ejecutar y Depurar" (barra lateral): Se enfocará en las secciones "Variables", "Puntos de interrupción", "Pila de llamadas" y "Puntos de observación", permitiéndote inspeccionar el estado del programa.
  • Barra de estado: Cambiará de color (generalmente naranja) para indicar que estás en una sesión de depuración.

Acciones de Depuración Esenciales

La barra de herramientas de depuración te proporciona los controles fundamentales para navegar y controlar la ejecución de tu programa durante la depuración. Aquí tienes una tabla con las acciones más importantes:

AcciónIconoTecladoDescripción
Continuar / Pausar / F5Continuar: Reanuda la ejecución del programa hasta el siguiente punto de interrupción. Pausar: Interrumpe la ejecución en la línea actual.
Paso por encima (Step Over)F10Ejecuta la siguiente línea de código, sin entrar en las llamadas a funciones.
Paso a paso por instrucciones (Step Into)F11Entra en la siguiente llamada a función para depurar dentro de ella.
Paso a paso para salir (Step Out)Shift+F11Sale de la función actual, continuando la ejecución hasta que la función retorne.
ReiniciarCtrl+Shift+F5Termina la sesión de depuración actual y la reinicia con la misma configuración.
DetenerShift+F5Finaliza la sesión de depuración actual y detiene la ejecución del programa.

Estas acciones te permiten controlar el flujo de ejecución de tu programa paso a paso, línea por línea o instrucción por instrucción, facilitando la identificación de la lógica errónea o el comportamiento inesperado.

Dominando los Puntos de Interrupción Avanzados

VS Code ofrece varios tipos de puntos de interrupción más allá de los básicos, lo que te permite refinar aún más tu proceso de depuración:

Puntos de Interrupción Condicionales

Los puntos de interrupción condicionales se activan solo cuando se cumple una condición específica. Esto es extremadamente útil para detener la ejecución solo en iteraciones particulares de un bucle o cuando una variable alcanza un valor determinado.

Para crear un punto de interrupción condicional, haz clic derecho en el margen junto al número de línea y selecciona "Agregar punto de interrupción condicional". Se abrirá un cuadro de texto donde puedes ingresar una expresión C. El depurador pausará la ejecución solo cuando la expresión se evalúe como verdadera.

Puntos de Interrupción de Recuento de Hits (Hit Count)

Los puntos de interrupción de recuento de hits pausan la ejecución solo después de que el punto de interrupción se haya alcanzado un número específico de veces. Esto es útil en bucles largos o cuando quieres inspeccionar el estado del programa después de varias iteraciones.

Para configurar un recuento de hits, edita un punto de interrupción existente (haz clic derecho y selecciona "Editar punto de interrupción" o haz clic en el icono de lápiz junto al punto de interrupción en el panel "Puntos de interrupción"). En el cuadro de diálogo, puedes ingresar un número para el recuento de hits.

Puntos de Registro (Logpoints)

Los puntos de registro son una variante de los puntos de interrupción que no pausan la ejecución, sino que registran un mensaje en la consola de depuración. Son ideales para agregar registro sin necesidad de modificar el código fuente con llamadas a printf o funciones similares. Los puntos de registro se representan con un icono de diamante.

Para agregar un punto de registro, haz clic derecho en el margen y selecciona "Agregar punto de registro". Ingresa el mensaje que deseas registrar. Puedes incluir expresiones entre llaves {} para que se evalúen y se incluyan en el mensaje.

Inspección de Datos Durante la Depuración

Durante una sesión de depuración, es crucial poder inspeccionar el estado de las variables y expresiones para entender el comportamiento del programa. VS Code ofrece varias formas de hacer esto:

Panel "Variables"

El panel "Variables" en la vista "Ejecutar y Depurar" muestra las variables que están en el ámbito del punto de ejecución actual. Puedes expandir las variables estructuradas (como structs o arrays) para ver sus miembros y valores. También puedes modificar el valor de una variable directamente desde este panel haciendo clic derecho sobre ella y seleccionando "Establecer valor".

Panel "Puntos de Observación" (Watch)

El panel "Puntos de Observación" te permite agregar expresiones o variables específicas para monitorearlas continuamente durante la sesión de depuración. Esto es útil para rastrear el valor de variables clave a medida que el programa avanza. Para agregar una expresión, haz clic en el botón "+" en la cabecera del panel y escribe la expresión C que deseas observar.

Consola de Depuración REPL

La Consola de Depuración REPL (Read-Eval-Print Loop) te permite evaluar expresiones C interactivamente durante la sesión de depuración. Puedes escribir expresiones C en la consola y el depurador las evaluará en el contexto actual. Esto es útil para probar hipótesis, verificar valores o ejecutar pequeñas porciones de código de forma interactiva. Para abrir la Consola de Depuración, haz clic en el icono "Consola de depuración" en la parte superior del panel "Ejecutar y Depurar" o usa el comando "Ver: Consola de depuración" (Ctrl+Shift+Y o Cmd+Shift+Y).

Extensiones de Depurador Adicionales

Si bien la extensión C/C++ de Microsoft es fundamental, existen otras extensiones en el Marketplace de VS Code que pueden ofrecer funcionalidades adicionales o soporte para depuradores específicos. Explora el Marketplace buscando "debugger C" o términos similares para encontrar extensiones que se adapten a tus necesidades particulares.

Preguntas Frecuentes (FAQs)

  1. ¿Qué depuradores son compatibles con VS Code para C?

    Generalmente, VS Code utiliza depuradores como gdb (GNU Debugger) o lldb (LLVM Debugger) a través de la extensión C/C++. Estos depuradores son robustos y ampliamente utilizados en el desarrollo de C.

  2. ¿Cómo puedo depurar un programa C que requiere entrada del usuario?

    Puedes configurar la entrada del usuario en el archivo launch.json. Por ejemplo, puedes usar el campo "externalConsole": true para ejecutar el programa en una consola externa donde puedes proporcionar la entrada. Alternativamente, para casos más complejos, podrías redirigir la entrada desde un archivo usando la configuración de la tarea de compilación y depuración.

  3. ¿Qué hago si la depuración no se inicia o no funciona correctamente?

    Verifica que hayas instalado la extensión C/C++. Asegúrate de que el archivo launch.json esté correctamente configurado, especialmente la ruta al ejecutable en el campo "program". Comprueba que tu código C se compile correctamente antes de intentar depurarlo. Reiniciar VS Code a veces puede solucionar problemas temporales. Revisa la salida en la consola de depuración para obtener mensajes de error del depurador.

  4. ¿Puedo depurar código C remoto con VS Code?

    La depuración remota de C en VS Code es posible, pero generalmente requiere configuraciones más avanzadas y puede depender de la extensión de depuración que estés utilizando. Consulta la documentación de la extensión C/C++ o de extensiones específicas de depuración remota para C para obtener detalles sobre cómo configurar la depuración remota en tu entorno.

La depuración en Visual Studio Code para C es un proceso poderoso y eficiente una vez que te familiarizas con sus herramientas y configuraciones. Dominar los puntos de interrupción, la inspección de variables y las acciones de depuración te permitirá resolver errores de manera más rápida y mejorar significativamente tu productividad como desarrollador de C. Explora las diversas funcionalidades que VS Code ofrece y personaliza tu flujo de trabajo de depuración para adaptarlo a tus necesidades específicas, convirtiendo la depuración en una parte integral y efectiva de tu proceso de desarrollo.

Subir