Utilizar la vista Depurar

Con la vista Depurar, puede gestionar la depuración de un programa. Visualiza la pila de las hebras suspendidas de cada destino que se depura. En la vista Depurar se visualizan los destinos de depuración (asociados con hebras y marcos de pila) para cada programa o aplicación que se depura.

Acerca de esta tarea

Un destino de depuración típico de la vista Depurar se describe según este diagrama:

Vista Depurar

En la vista Depurar, los lanzamientos utilizados para iniciar la sesión de depuración del programa se visualizan a nivel del nodo superior (puntero A. del diagrama). Debajo del lanzamiento, se visualiza un nodo que representa el motor de depuración (puntero B. del diagrama). A continuación, se visualiza cada una de las hebras del programa (puntero C. del diagrama). Cuando se detiene la ejecución del programa, por omisión, el nodo de la hebra que se detiene se expande automáticamente para mostrar sus marcos de pila (puntero D. del diagrama). Si expande manualmente otras hebras, estas hebras se expandirán automáticamente la próxima vez que se suspenda el programa. Finalmente, se visualiza un nodo que representa el proceso y el programa que se depuran (puntero E. del diagrama).

Nota:
  • Para aplicaciones de una sola hebra (aquellas que se han creado sin libpthreads.a), el ID de hebra que se visualiza en la vista Depurar es siempre un ID de hebra de kernel. Se trata generalmente de un número grande.
  • Para aplicaciones multihebra (aquellas que se han creado con libpthreads.a), el ID de hebra que se visualiza en la vista Depurar es el ID pthread. Generalmente, son números pequeños. Una hebra con un ID de hebra muy grande indica una hebra de kernel que no está asociada actualmente con un pthread. Esto ocurre generalmente si la aplicación ha recibido una señal asíncrona, como por ejemplo SIGSTOP. Estas hebras desaparecerán cuando la señal se haya manejado.
  • Si elige seguir el proceso hijo después de una llamada a fork() en un proceso multihebra, el depurador sólo depurará la única hebra de kernel existente en el proceso hijo. El ID de esta hebra será el de una hebra de kernel.

Cuando se suspende la ejecución del programa, el código fuente del marco de pila seleccionado se abre en el editor, resaltando la línea de fuente que el programa está a punto de ejecutar. Si hay muchas hebras en el programa, la pila de la hebra que ha provocado la detención puede desplazarse al final del marco de depuración.

La vista Depurar también puede utilizarse para establecer el daemon del depurador. Para obtener información acerca de esta tarea, consulte el tema relativo a la escucha de motores de depuración.

Ejecutar, terminar y desconectar

Acerca de esta tarea

En la vista Depurar, puede realizar estas acciones básicas de depuración:

  • para ejecutar la aplicación, pulse el botón Reanudar (Icono Reanudar) o pulse F8.
  • Para terminar la sesión de depuración, pulse Terminar (Icono Terminar), pulse Mayús+F8 o pulse con el botón derecho del ratón el destino de depuración (o una de sus hebras o pilas) que desea terminar y elija una de las acciones de terminación.
  • Para desconectarse del programa y dejarlo en ejecución, pulse Desconectar (Icono Desconectar). Puede que esta acción no esté disponible, dependiendo de cómo se haya iniciado el programa que está depurando.

Detener la ejecución

Acerca de esta tarea

Si la aplicación que está depurando está en ejecución, puede detenerla (o detener hebras individuales en ella) mediante la acción Suspender (Icono Suspender)(Control+F8). Si el proceso está seleccionado cuando se utiliza esta acción, se detendrán todas las hebras del proceso. Si su motor de depuración soporta la suspensión y reanudación de hebras, y si se selecciona una hebra, solamente dicha hebra se detendrá. Este soporte sólo está disponible si utiliza la Versión 11.1 o posterior del motor de depuración. La hebra o hebras de la aplicación se suspenderán hasta que emita una acción Reanudar. Cuando se emite una acción de suspensión, el motor de depuración envía una señal SIGSTOP al programa que se está depurando.

La detención es útil cuando tiene un proceso runaway que está en ejecución, pero que no encuentra un punto de interrupción. Puede volver a obtener el control de la aplicación deteniéndola. Al detener un programa, éste se detiene generalmente en una vista Desensamblado en el editor.

Recorrer paso a paso un programa

Acerca de esta tarea

Cuando se suspende una hebra, pueden utilizarse los controles de recorrido para recorrer paso a paso la ejecución del programa línea por línea. Al realizar una operación de recorrido, si se encuentra un punto de interrupción o un evento, la ejecución se suspende en él y la operación de recorrido finaliza. Puede utilizar los mandatos de recorrido (step) para recorrer las instrucciones o ubicaciones del programa de una en una.

Estás disponibles los siguientes mandatos de recorrido:

  • Recorrer principal (Icono Recorrer principal) (F6): si emite un mandato recorrer principal, el programa se detendrá en la próxima línea del código fuente.
  • Recorrer todo (Icono Recorrer todo) (F5): si emite un mandato recorrer todo, el programa se recorrerá hasta la próxima sentencia. Si la línea actual contiene una llamada a otra función, el depurador se detendrá en esa función.

    El comportamiento de este mandato resulta afectado por la acción Utilizar filtros de recorrido (Icono Utilizar filtros de recorrido/Recorrer-depurar)(Mayús+F5). Si el filtro está desactivado (pulsador no seleccionado), el depurador se detendrá en una función a la que se haya llamado aunque no contenga información de depuración, y debe visualizarse el desensamblado. Si el filtro está activado (pulsador seleccionado), el depurador sólo se detendrá en la función a la que se ha llamado si puede visualizar el código fuente. Si el código fuente no puede visualizarse, se comporta como si se hubiera emitido un mandato Recorrer principal. La variable de entorno del motor de depuración DER_DBG_ STEP_DEBUG afecta al comportamiento de la acción Utilizar filtros de recorrido. Para obtener información acerca de las variables de entorno del motor de depuración, consulte el tema relacionado.

    Nota: Para PL/I y COBOL, la acción recorrer todo habitualmente se comportará como si la acción de filtro de recorrer estuviera siempre activada. Al depurar programas escritos en estos lenguajes, el depurador intentará detenerse en el código fuente.
  • Recorrer hasta retorno (Icono Recorrer hasta retorno) (F7): si emite un mandato recorrer hasta retorno, el programa se ejecuta hasta el punto del programa llamante inmediatamente posterior a la llamada a la función actual. Generalmente, se detendrá en la ubicación subsiguiente a la instrucción de llamada. Si el programa llamante contiene información de depuración, esta ubicación puede encontrarse en medio de una línea del código fuente.
  • Recorrer todo animado: al emitir esta acción, el depurador emite una acción recorrer todo repetidamente. Puede controlar el retardo entre cada paso seleccionando de nuevo la acción Recorrer todo animado.

Comentarios