Cómo instalar GDB en RHEL 8

Cómo instalar GDB en RHEL 8

Gdb o GNU Project Debugger es una gran herramienta cuando necesita depurar un programa. Puede establecer puntos de interrupción, observar el cambio de valor de una variable o incluso cambiar un valor para el programa mientras se detiene en un punto de su estado, luego continúe, solo para elegir algunas de las características de GDB.

En este tutorial instalaremos GDB en RHEL 8 y probaremos cómo funciona con una aplicación C simple.

En este tutorial aprenderás:

  • Cómo instalar GDB
  • Cómo compilar una aplicación C simple con símbolos de depuración
  • Cómo establecer puntos de interrupción en la aplicación en ejecución con GDB
  • Cómo imprimir valores reales de variables dadas dentro de la aplicación
Paseos a través de bucle para bucle con GDB.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Red Hat Enterprise Linux 8
Software GDB 8.2
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Cómo instalar GDB en Redhat Linux 8 Paso a paso Instrucciones



Para este tutorial, utilizaremos una aplicación C simple que establece algunas variables, imprima algún texto y cambiaremos los valores de sus variables más tarde. Se construye solo para mostrar algunas características de gdb, y no tiene uso del mundo real.

Si no está familiarizado con el lenguaje de programación C, puede consultar el desarrollo de C en Linux Introducción para comenzar. Por ahora, considere el siguiente código fuente, que pondremos en el vars.C Archivo de texto:

#include int main () int i = 1; int j = 10; printf ("conjunto de variables \ n)"; i ++; j = 20; printf ("Valores variables modificados \ n"); regresar 0; 
Copiar

Usaremos este programa simple para probar gdb. Puede notar en el código que las variables de valores i y j Take nunca se expusirá bajo la ejecución normal del programa, por lo que no sabremos cuáles son sus valores y cuándo. En este caso es un simple desperdicio de memoria, pero piense en un caso de uso donde i contendría algo importante, tal vez una contraseña codificada, un código de trucos u otro tesoro (o simplemente no puedo encontrar dónde salen mal los cálculos de su programa).

  1. gdb es parte del Herramientas de desarrollo Grupo de paquetes, por lo que si tiene herramientas de desarrollo instaladas, ya tiene GDB. Si no, puede instalarlo solo:
    # DNF Instalar GDB

    También necesitaremos debuginfo para GLIBC para nuestras pruebas:

    # DNF Debuginfo-Install GLIBC-2.28-18.El8.x86_64


  2. Obtuvimos la herramienta del depurador y obtuvimos el código fuente. Para que la depuración sea útil, necesitamos compilar nuestro programa con símbolos de depuración (agregamos el -gramo opción):
    $ gcc -g -o vars vars.C

    Si ejecutamos nuestro vars programa, emitirá las cadenas en el printf líneas, pero no mencionará i y j, como se esperaba.

    ps ./vars variables establecer valores variables modificados
  3. Necesitamos conocer los valores de i y j Cuando se establecieron por primera vez, y antes de que saliera el programa. Considere las líneas #7 y #10 (el printf líneas) en la fuente. Sería ideal si pudiéramos detener la ejecución en esas líneas, obtener los valores, luego dejar que el programa se suelte nuevamente, etc. Haremos exactamente esto para probar gdb. Lo iniciamos con el compilado vars ejecutable como argumento:
    $ GDB Vars GNU GDB (GDB) Red Hat Enterprise Linux 8.2-3.El8 Copyright (c) 2018 Free Software Foundation, Inc. Licencia GPLV3+: GNU GPL versión 3 o posterior Este es un software gratuito: puede cambiarlo y redistribuirlo. No hay garantía, en la medida permitida por la ley. Escriba "Mostrar copia" y "Mostrar garantía" para más detalles. Este GDB se configuró como "X86_64-Redhat-Linux-Gnu". Escriba "Mostrar configuración" para los detalles de configuración. Para las instrucciones de informes de errores, consulte: . Encuentre el manual de GDB y otros recursos de documentación en línea en: . Para obtener ayuda, escriba "ayuda". Escriba "Apropos Word" para buscar comandos relacionados con "Word" ... Lectura de símbolos de Vars ... Hecho. (GDB)

    gdb lee los símbolos del programa y nos da el aviso de actuar. El vars El programa no se inicia en este momento. Revisamos nuestras notas y establecemos un punto de ruptura en la línea #7:

    (GDB) romper 7 Punto de interrupción 1 a 0x40059c: archivo vars.C, línea 7.

    Y línea #10:

    (GDB) Romper 10 Punto de interrupción 2 a 0x4005b1: archivo vars.C, línea 10.

    Con los puntos de interrupción establecidos, iniciamos la ejecución:

    (GDB) correr Programa inicial:/TMP/Devel/Vars Breakpoint 1, Main () en VARS.C: 7 7 printf ("Conjunto de variables \ n");

    La ejecución se detiene en el primer punto de interrupción, y podemos imprimir los valores de las variables ocultas:

    (GDB) Imprimir i $ 1 = 1 (GDB) Impresión J $ 2 = 10

    Obtuvimos la primera parte de la información necesaria, continuamos la ejecución:

    (GDB) continuar Continuo. Las variables establecen el punto de interrupción 2, main () en VARS.c: 10 10 printf ("Valores variables modificados \ n");

    Podemos imprimir los valores de la misma manera en el siguiente punto de interrupción:

    (GDB) Imprimir I $ 3 = 2 (GDB) Imprimir J $ 4 = 20

    Tenemos todo lo que necesitábamos. No quedan más puntos de interrupción, por lo que la aplicación saldrá normalmente después de imprimir la última línea de texto.

    (GDB) Continuar continuando. Valores variables modificados [inferior 1 (proceso 2330) salido normalmente] (GDB) Q

    Obtuvimos los valores de las variables secretas y probamos que nuestro gdb es tan útil como debe ser.

Tutoriales de Linux relacionados:

  • Tutorial de depuración de GDB para principiantes
  • Cosas para instalar en Ubuntu 20.04
  • Cosas para instalar en Ubuntu 22.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Instale Arch Linux en VMware Workstation
  • Ubuntu 20.04 Guía
  • Cómo arrancar dual Kali Linux y Windows 10
  • Sistema colgado de Linux? Cómo escapar a la línea de comando y ..
  • Cómo usar ADB Android Debug Bridge para administrar su Android ..