[Sistema Linux] Parte 7: El uso del depurador de Linux gdb

1. Introducción a gdb

GDB es una poderosa herramienta de depuración de programas basada en la línea de comandos bajo el sistema operativo UNIX/LINUX lanzado por la organización de código abierto GNU. Para un programador c/c++ que trabaje bajo Linux, gdb es una herramienta esencial;

Dos, instalación gdb

sudo yum install -y gdb

Tres, uso gdb

3.1, versiones de lanzamiento y depuración

En el proceso de desarrollo del programa, hay dos versiones, una es la versión de lanzamiento y la otra es la versión de depuración. Todos sabemos que si queremos depurar un programa, debemos tener una versión de depuración del programa antes de poder depurarlo.

Compruebe la versión del programa en Linux:

readelf -S test

inserte la descripción de la imagen aquí
Aquí podemos encontrar que no hay información sobre la depuración. De hecho, en Linux, gcc/g++la versión predeterminada generada por el compilador es la versión de lanzamiento, si queremos ingresar la versión de depuración, debemos traer -gla opción

gcc mytest.c -o mytest -g

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Resumir:

  • Hay dos formas de liberar el programa, el modo de depuración y el modo de liberación
  • El programa ejecutable predeterminado generado por el compilador gcc/g++ en Linux es el modo de liberación
  • Para usar la depuración de gdb, debe agregar la opción -g

3.2, comandos básicos gdb

1. Inicie gdb

gdb + archivo de programa ejecutable, de la siguiente manera:

gdb mytest_g 
gdb -q mytest_g //表示不打印gdb版本信息,界面较为干净;

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

2. Comando de depuración

Compare con el comando de depuración en vs:
en gdb:

nombre Orden explicar
iniciar operación run(r) Equivalente a iniciar la depuración F5, se detendrá en el punto de interrupción después de ejecutar el código
oración por oración step(s) Equivalente F11, hay funciones que entrarán en el interior de la función
paso a paso next(n) Es equivalente F10a no ingresar a la función y ejecutar la instrucción completa;

Después de ingresar una vez un comando como proceso por proceso y declaración por declaración, se ejecutará nuevamente si presiona Entrar directamente.

vs2019:
inserte la descripción de la imagen aquí
ejecute la demostración:

  1. depuración directa
    inserte la descripción de la imagen aquí

  2. paso a paso
    inserte la descripción de la imagen aquí

  3. oración por oración
    inserte la descripción de la imagen aquí

3. Mostrar código (lista)

nombre Orden explicar
Se puede especificar el número de línea list(l) + [N] Muestre 10 líneas de código desde la línea N y continúe imprimiendo desde la última posición
Se puede especificar el nombre de la función list(l) + Name Muestra el código desde la izquierda y la derecha del comienzo de la función.

inserte la descripción de la imagen aquí

4. Comando de punto de interrupción (punto de interrupción)

nombre Orden explicar
un punto de ruptura de línea b + N poner un punto de ruptura en una línea
punto de ruptura de función b + FuncName punto de interrupción al comienzo de la función
ver punto de interrupción info + b Mostrar una lista de información de puntos de interrupción
eliminar punto de interrupción d + N Elimine el punto de interrupción cuyo número de secuencia es N y omita el número de secuencia para eliminar todos los puntos de interrupción
habilitar punto de interrupción enable + N Habilite el punto de interrupción con el número de secuencia N, omitir el número de secuencia significa habilitar todos los puntos de interrupción
deshabilitar punto de interrupción disable + N Deshabilite el punto de interrupción cuyo número de serie es N y omita el número de serie para deshabilitar todos los puntos de interrupción

inserte la descripción de la imagen aquí

5. Comando variable (variable)

nombre Orden explicar
monitorear variables display + ValName A menudo se muestra en la parte inferior de la pantalla en forma de lista, similar a la supervisión en vs.
desvelar undisplay + N Eliminar la visualización constante del número de variable N en la lista de observación
ver variables p + Name Imprime el valor de la variable, no siempre se muestra
modificar variables set + Name establecer el valor de la variable especificada

inserte la descripción de la imagen aquí

6. Comandos especiales de depuración

nombre Orden explicar
fin de la función actual finish finish finalizará directamente la llamada de la función actual y se detendrá en la posición de retorno de la función
sigue corriendo continue(c) continuar Continuar para ejecutar hasta el siguiente punto de interrupción, equivalente a F5
ejecutar a la línea especificada until + N Corre a la línea N dentro de la función actual

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

7. Comandos de la pila de llamadas

nombre Orden explicar
pila de llamadas breaktrace/bt Ver el estado de la llamada de los marcos de pila en todos los niveles del programa

inserte la descripción de la imagen aquí

8. Mostrar variables temporales en la función actual: info locales

nombre Orden explicar
Mostrar variables temporales en la función actual info locals Mostrar variables temporales en la función actual

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_58124165/article/details/127625929
Recomendado
Clasificación