Ejecución en depuración

    La ejecución para depuración difiere considerablemente de la ejecución normal. Para poder depurar un programa, este debe ser cargado indirectamente a travez de una herramienta denominada "depurador" (en este caso gdb). Esta herramienta carga el ejecutable en memoria y analiza la información de depuración contenida en el mismo. Permite luego definir puntos de interrupción para posteriormente comenzar la depuración. Cuando la ejecución se detiene, el depurador permite, mediante la interpretación de la información de depuración extraida anteriormente del ejecutable, asociar el estado del programa con su código fuente, pudiendo extraer el contenido de variables, observar la pila de llamadas a funciones en terminos de los nombres de funciones definidos en los fuentes, identificar bloques de código, etc.
    En ZinjaI, para depurar un programa, se debe ejecutar el mismo utilizando la opción Iniciar del menú Depuración. Esta opción carga el depurador, indicandole que se va a depurar el proyecto/programa actual, activa todos los puntos de interrupción, y comienza la ejecución. Es por esto que el usuario debe definir los puntos de interrupción antes de comenzar la depuración.

    Cuando el programa se está ejecutando en modo depuración, puede detenerse por diferentes motivos:

    Cuando el programa se ha detenido, se indica con una flecha en el margen del código fuente, cual sería la próxima linea a ejecutar si se reanudase la ejecución. En este punto, se pueden utilizar distintas herramientas (como las inspecciones o el trazado inverso) para analizar su estado, definir nuevos puntos de interrupcion o watchpoints, o continuar la ejecución de alguna de las siguientes maneras:     Es importante notar que la ejecución paso a paso (mediante Step In y Step Out) se controla a nivel de número de linea. Si una línea de código fuente consta de dos o más instrucciones, es imposible detenerse en medio de las mismas. Es útil considerar esto a la hora de escribir o acomodar un código para depuración.

    Finalmente, cabe resaltar que si el ejecutable ha sido optimizado en compilación, el compilador puede haber reordenado algunas instrucciones, suprimido otras, eliminado variables no utilizadas, ect; por lo que el comportamiento del programa en el depurador puede parecer extraño. Es recomendable desactivar todas las optimizaciones para depurar un programa. En los proyectos de ZinjaI, el nivel de optimización del ejecutable se define en la pestaña Enlazado del cuadro de Configuración de proyecto.