[Embedded] herramientas de desarrollo de Linux y GDB depuración remota

gDB

GDB, el depurador GNU, llamado gdb (DDD), el programa es una herramienta interactiva, el trabajo en modo de caracteres.

tareas de depuración de GDB se puede lograr de la siguiente

  • establecer puntos de interrupción;
  • Supervisión de la magnitud de las variables del programa;
  • la ejecución de un solo paso del programa;
  • Modificar el valor de una variable.

instalación de gDB

Abiertos privilegios de usuario root: sudo -s, terminal de Linux con el fin de introducir el siguiente código.

apt-get update
apt-get install gdb
Do you want to continue? [Y/n] y

Prueba de uso:
escribir hola.c sencilla

#include<stdio.h>
int main(){
    printf("Hello World!\n");
}

Antes de poder utilizar el depurador GDB, debe utilizar la -gopción de compilar el archivo de origen.

  • las variables CFLAGS pueden definirse como el Makefile: CFLAGS = -g;
  • O cuando se utiliza compilador gcc además de la opción -g gcc -g -o hello hello.c.

Funcionamiento normal utilizar el siguiente comando depurador GDB:

gdb [文件名]

Por ejemplo, usando gdb depuración hola, en primer lugar gcc -g -o hello hello.c, a continuación,gdb hello
Aquí Insertar imagen Descripción

depurador GDB comando

help NAME: Muestra la información de ayuda para el comando especificado.
file FILE: Cargar el archivo ejecutable especificado para la depuración.
kill: Terminar el programa que se está depurando.
list: Segmento de código fuente de visualización.
break NUM: Establecer un punto de interrupción en una línea determinada.
run: La ejecución del programa actual que se está depurando.
continue: Continuar con el programa que se está depurando.
step: Realización de una línea de avance de código fuente, en las condiciones funciones encontradas en funciones de ejecución internas.
stepi: Ejecutar una instrucción de máquina.
next: La ejecución de un solo paso de una frase, no entrar en el cuerpo de la función.
nexti: La ejecución de un solo paso de una instrucción, si la instrucción es una llamada a la función, y luego se detiene hasta que la función se llama cuando el final de la ejecución del programa.
set 变量 = 表达式O set 变量 := 表达式: establecer el valor de las variables.
display EXPRCada vez que el programa muestra el valor de la expresión se detiene, el programa definido por la composición expresión variable.
print 变量或表达式: El valor de la variable de impresión o expresión.

info break: Muestra la lista de punto de interrupción actual, incluyendo el número de veces para alcanzar el punto de interrupción y así sucesivamente.
info files: Muestra de depuración detallado archivo de información.
info func: Muestra todos los nombres de las funciones.
info local: Cuando la información en pantalla en las variables locales.
info prog: Muestra el estado de ejecución de programa de ser depurado.
info var: Muestra todos los nombres de variables globales y estáticas.

delete 断点号: Borrar puntos de interrupción o expresiones de visualización automática.
disable 断点号列表(断点号之间用空格间隔开): Que el fallo de punto de interrupción especificado.
enable 断点号列表Y disableal contrario de restauración fracaso puntos de interrupción.
ignore 断点号 忽略次数: No haga caso de los puntos de interrupción.
quit: Dejar de GDB.

GDB depuración pasos

El primer paso: con el -gcompilador opción arm-linux -g -o hello hello.c
Paso dos: gdb programa gdb hello
Paso 3: Compruebe la fuente list
Paso cuatro: Establecer un punto de interrupción en la función principal break main
Quinto paso: Ejecutar run
Sexto paso: Depuración step/next/break/cont/print/display
Séptimo paso: dejar de fumarquit
Aquí Insertar imagen Descripción

Incrustado depuración remota

Aquí Insertar imagen Descripción

En la placa de desarrollo corriendo gdbserver

Aquí Insertar imagen Descripción

Ejecutado en el lado del PC

ddd -debugger ./arm-linux-gdb greeting
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

Otras herramientas de desarrollo Liunx

desensamblador CRUZ brazo-linux-objdump

arm-linux-objdump -D -S hello > out.s: Salida desmontado archivo a out.s
Aquí Insertar imagen Descripción

Ver Elf herramienta de archivo de brazo-linux-readelf

arm -linux-readelf -a hello: Hola Ver archivo ejecutable.
Aquí Insertar imagen Descripción
arm-linux-readelf -d hello: Permite ver los archivos ejecutables necesarios bibliotecas compartidas
Aquí Insertar imagen Descripción

kits de desarrollo gráfico: Code :: Blocks

Aquí Insertar imagen Descripción

deberes

(1) suponiendo un sensor de temperatura en el algoritmo archivo TempSensor.c toma burbuja sort para ordenar una temperatura de 10, correspondiente al nombre de la función de BubbleFun()suma, y después la eliminación de los valores más altos y más bajos, la temperatura de los ocho valores restantes se promediaron se desea que la temperatura medida a la información de depuración de compilación para agregar, es necesario añadir (opción de compilación cuando -g ), en el proceso de depuración, es necesario detener e iniciar el programa que se ejecuta en la BubbleFun()entrada a una función, flujo de escritura de instrucciones secuencia BGF depurador .

gcc -g -o TempSensor TempSensor.c
gdb TempSensor
list
break BubbleFun
run

(2) Code :: Blocks es un ( kit de desarrollo gráfico ), subyacente ( requerido apoyo) del brazo-linux-gcc el kit de desarrollo.

Publicados 170 artículos originales · ganado elogios 47 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43734095/article/details/105092992
Recomendado
Clasificación