Ver y acceder a los hilos en GDB

Ver y acceder a los hilos en GDB
Otro nombre para un depurador sería una utilidad de depuración. Al detectar los problemas del código en diferentes fases de un sistema operativo o una creación de aplicaciones, se considera un programa de computadora que puede mejorar el proceso de construcción de un software. Ciertos depugadores pueden examinar una prueba de ejecución para determinar qué secciones de código fueron omitidos. El GNU Depugger es una de las muchas herramientas de depuración que está disponible para los programadores de C y es la mejor herramienta de depuración. Ofrece algunas herramientas que permiten al usuario ver y evaluar un programa mientras se ejecuta. Otra excelente funcionalidad de depuración es admitir muchos lenguajes de programación que incluyen C, C ++, ADA, Fortron y Pascal. Las siguientes funciones están disponibles a través de GDB al depurar las aplicaciones de múltiples subprocesos:
  • Puede enviar automáticamente notificaciones para hilos recién creados.
  • Proporciona la capacidad de usar el comando Thread-no para cambiar entre varios hilos.
  • El comando "Información de hilos" se puede utilizar para averiguar si hay hilos activos.
  • Usando el comando "Aplicar [hilo] [todos] args", podemos enviar el mismo comando a varios subprocesos (o una inclinación de hilos).
  • Para averiguar qué sucede cuando su código de programa se bloquea durante la ejecución, sondea dentro de sus aplicaciones C.
  • Solo los archivos binarios o ejecutables que se crean durante el proceso de compilación son compatibles con GDB Depugger.

Simplemente escriba GDB en la ventana Terminal para acceder al GDB de su sistema operativo en Ubuntu o cualquier otro sistema operativo basado en Linux o UNIX. La captura de pantalla del comando GDB se muestra en la siguiente ilustración. Muestra los detalles de los derechos de autor del GDB. El aviso abierto de GDB indica la información sobre cuándo está preparado para aceptar comandos. En algunas configuraciones de GDB en las que el sistema operativo habilita los subprocesos, estas características aún no son accesibles. Estas instrucciones no tienen impacto en GDB que no permita el enhebrado. Por ejemplo, un sistema que carece de un soporte de subprocesos ignora el resultado de la consulta de "hilos de información" e ignora constantemente la instrucción de hilo.

Solo tiene que escribir el comando "dejar" en el terminal GDB para salir y finalizar su sesión actual de GDB. Puede ver las instrucciones de renunciar en el depurador GDB como se muestra en lo siguiente:

El depurador de GDB se le ocurrió muchos comandos de depuradores. Aquí hay algunos comandos de muestra enumerados que podemos intentar usar el GDB Depugger:

  1. ejecutar o r -> completa la ejecución del programa de principio a fin.
  2. ruptura o b -> Se usa para colocar un punto de interrupción en una determinada línea o oración.
  3. deshabilitar -> deshabilita un punto de interrupción que se marcó anteriormente.
  4. habilitar -> habilita un punto de interrupción deshabilitado.
  5. Siguiente o N -> La siguiente línea de código se ejecuta, pero evite entrar directamente en funciones.
  6. Paso -> Debe continuar con la siguiente instrucción y comenzar a completar la función.
  7. Lista o L -> Muestra el código completo del archivo C.
  8. Imprimir o P -> Se usa para imprimir el valor que se guardó anteriormente.
  9. Salir o Q -> sale de la pantalla GDB Depugger.
  10. Clear -> Se usa para eliminar todos los puntos de interrupción marcados.
  11. Continuar -> Se utiliza para continuar con la ejecución normal del programa.

Ejemplo:
Aquí hay una pequeña pieza de código que usa varios hilos, los crea con el método pthread_create y pasa los métodos de los hilos. El programa de muestra tiene una función main () que crea dos hilos en la siguiente ilustración. Ahora hay tres hilos en ejecución, incluido el hilo matriz/original main (). La función main () usa la función pthread_create () para crear los hilos y llamarlos uno tras otro.

El bucle mientras se verifica en el siguiente código para ver si el valor de la variable Count1 es inferior a 500. Si es así, la instrucción de impresión se ejecuta para mostrar una cadena "Hilo 1 se está ejecutando" junto con la variable de recuento. El hilo se une inmediatamente después de usar el comando de función pthread_ unir () en este código.

Use los siguientes comandos enumerados para compilar el código utilizando el compilador GCC y ver la actividad del hilo con el depurador del PIB. La siguiente imagen es una captura de pantalla que muestra que el código anterior se compila correctamente:

GCC -G multithreads.C -O multithreads -lpThread

Mientras usa Ubuntu 20.04 Sistema, escriba el siguiente comando en la pantalla del terminal para ver y examinar el hilo.

$ GDB ./Múltiples hilos

Ahora, estamos en modo de depuración GDB, gracias a la ventana de la terminal. Para establecer los puntos de interrupción en general, use el hilo dos y el hilo de tres rutinas de cada hilo recién formado. Para insertar un punto de interrupción, utilizamos el siguiente código enumerado. Es un comando simple; Solo escribe el descanso. Después de eso, escriba el nombre de los métodos de subprocesos para insertar los puntos de interrupción. Este método muestra el número de línea donde se agregaron los puntos de interrupción después de ingresar.

Para ejecutar el programa, use la palabra clave "Ejecutar" o simple "R" como un comando en la pantalla Terminal. Los hilos de información de comando proporcionan una descripción general de los hilos del programa y cierta información sobre su condición actual, ya que debe tomar nota de. Solo se ha iniciado un hilo en este caso hasta ahora.

La ejecución debe continuar usando el siguiente comando:

Comienzan dos hilos más en este lugar. El hilo que se enfoca actualmente se denota por una estrella. Además, se alcanza el punto de ruptura para los hilos recién formados en sus métodos de inicialización: hilo dos () y hilo tres (), específicamente. Use el comando para mover el foco a otro hilo antes de comenzar una depuración de hilo real. En la línea 17 de su función de hilo dos, el hilo 2 () se detiene.

Según la salida de los "hilos de información", el hilo dos imprime brevemente el contador de conteo2 y luego sale del hilo 2 en la línea 17. Del mismo modo, podemos operar el hilo "Thread_Three" usando una forma bastante similar que utilizamos para el Thread_Two.

Conclusión

Para resumir, finalmente podemos usar el GDB Depugger en nuestro Ubuntu 20.04 Sistema Linux. Para esto, explicamos su uso en el párrafo introductorio y enumeramos algunas de las características principales que se nos proporcionan y lo convierten en un depurador único.