Hable sobre cómo usar la herramienta de depuración Gdb (gestión de proyectos Makfile)

Una, herramienta de depuración de gdb

gcc -g main.c -o principales
comandos de uso común:

  • Función de taquigrafía de comando
  • ayuda h Lista de clases de comando por módulo
  • clase de ayuda Encuentra comandos específicos de cierto tipo
  • lista l ver código, puede ir seguido por el número de línea y el nombre de la función
  • list-l Ver código en línea
  • salir q Salir de gdb
  • ejecutar r ejecutar el programa a toda velocidad
  • iniciar un solo paso, ejecutar el programa, detenerse en la primera línea para ejecutar la declaración
  • siguiente n ejecución paso a paso
  • paso s ejecutar sentencia por sentencia, cuando se encuentra una función, transferir a la función para su ejecución
  • backtrace b Ver el marco de pila de llamadas de función y la relación jerárquica
  • info I Ver el valor de las variables locales dentro de la función
  • marco f función de interruptor marco de pila
  • finalizar termina la función actual y regresa al punto de llamada de la función
  • establecer establecer el valor de la variable
  • Ejecute la línea de comando arvg [1] argv [2] pasando parámetros durante la depuración
  • imprimir p imprimir variables y direcciones
  • break b establece el punto de interrupción, según el número de línea y el nombre de la función
  • eliminar d eliminar puntos de interrupción d puntos de interrupción NUM
  • mostrar el conjunto de variables de observación
  • undisplay Cancelar la variable de observación
  • seguir ejecutando el código restante a toda velocidad
  • habilitar puntos de interrupción habilitar puntos de interrupción
  • deshabilitar puntos de interrupción deshabilitar puntos de interrupción
  • x Ver memoria x / 20xw muestra 20 unidades, hexadecimal, 4 bytes por unidad
  • watch Imprime y muestra cuando se envía y modifica la variable del punto de observación establecido
  • veo el punto de observación de la pantalla
  • archivo de núcleo ulimit -c 1024 archivo de núcleo abierto, gdb a.out core durante la depuración
  • set var Establece el valor de la variable en depuración, como n = 10 set var n = 100

Dos, modo de depuración gdb

  • modo de depuración gdb
  • correr a toda velocidad
  • iniciar la depuración de un solo paso
  • establecer el modo de seguimiento de la bifurcación niño / padre #Makefile gestión de proyectos seguimiento del proceso hijo y proceso padre

Tres, gestión de proyectos Makfile

  • Gestión de compilación de código de proyecto
  • Ahorre tiempo de compilación del proyecto
  • Beneficio de por vida una vez escrito

Archivo de ejemplo de operación: add.c sub.c mul.c dive.c main.c

Principios básicos
Tres elementos: metas, condiciones y órdenes.

Cuarto, el principio de funcionamiento de Makefile

  1. Analizar la relación entre cada objetivo y la dependencia.
  2. Ejecute comandos de abajo hacia arriba según las dependencias
  3. Determine la actualización en función de la hora de modificación que sea más reciente que el objetivo

Si el objetivo no depende de ninguna condición, ejecute el comando correspondiente para mostrar la actualización.
limpiar

  • Propósito: Borrar los archivos intermedios o y los archivos de destino finales producidos por la compilación
  • make clean Si hay un archivo limpio con el mismo nombre en el directorio actual, no se ejecutará el comando correspondiente a clean
  • Declaración de destino falsa: .PHONY: clean
  • Símbolos especiales en el comando de limpieza

"-" Este comando es incorrecto, make continuará ejecutando comandos posteriores. Por ejemplo: "-rm main.o"
"@" no muestra el comando en sí, solo el resultado. Tales como: "@echo" limpio hecho ""

otro

-make默认执行第一个出现的目标,可通过make dst指定要执行的目标
-distclean目标
-install目标
-make -C指定目录 进入指定目录,调用里面的Makefile

Cinco, simplemente usa MakeFile

python @ ubuntu: ~ / linuxC / calc $ cat Makefile
target: comando dependiente (condición)
fase uno

#app:add.c sub.c dive.c mul.c main.c
#gcc add.c sub.c dive.c mul.c main.c -o app

Etapa dos

#app:add.o sub.o dive.o mul.o main.o
#gcc add.o sub.o dive.o mul.o main.o -o app
#add.o:add.c
#gcc -c add.c
#sub.o:sub.c
#gcc -c sub.c
#dive.o:dive.c
#gcc -c dive.c
#mul.o:mul.c
#gcc -c mul.c
#main.o:main.c
#gcc -c main.c

Etapa tres

#$@表示目标,$^表示所有依赖,$<表示依赖中的第一个
#obj=add.o sub.o mul.o dive.o main.o
#src = $(wildcard *.c)
#obj = $(patsubst %.c,%.o,$(src))
#target = app
#$(target):$(obj)
#gcc $^ -o $@
#%.o:%.c
#gcc -c $< -o $@

Etapa cuatro

CPPFLAGS= -Iinclude
CFLAGS= -g -Wall
LDFLAGS=
CC=gcc
#CC=arm-linux-gcc
src = $(wildcard *.c)
obj = $(patsubst %.c,%.o,$(src))
target = app
$(target):$(obj)
$(CC) $^ $(LDFLAGS) -o $@
%.o:%.c
    $(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@
.PHONY:clean
#彻底清除生生过程文件
clean:
    -rm -f *.o
    -rm -f app
#彻底清除生生过程文件和生成配置文件
distclean: rm /usr/bin/app
install:cp app /usr/bin
test:
    @echo $(src)
    @echo $(obj)

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_50662680/article/details/110232731
Recomendado
Clasificación