[Linux] Explicación detallada del uso de herramientas de desarrollo basadas en entorno

[Linux] Uso de herramientas de desarrollo basadas en el entorno

0. Prefacio

Para desarrollar en el sistema operativo Linux, debe aprender a utilizar las herramientas de desarrollo basadas en el entorno del sistema operativo Linux.

1. Administrador de paquetes de Linux mmm

Introducción a mmm

La herramienta yum es una tienda de software bajo el sistema operativo Linux (centos).

imagen-20230716195858903

  • yum se configura directamente en el sistema operativo Linux.
  • yum puede encontrar automáticamente el software correspondiente desde el servidor remoto y descargarlo localmente.
  • Como sistema de código abierto, el sistema operativo Linux tiene su propia comunidad, en la que programadores de todo el mundo mantienen y mejoran el código del sistema operativo Linux. Hay muchas empresas e individuos que utilizan el sistema operativo Linux para desarrollarse, por lo que su desarrollo depende del sistema operativo Linux, donarán dinero y servidores a la comunidad Linux para facilitar el trabajo de la comunidad del sistema operativo Linux, por lo que Linux también tiene la capacidad de configurar servidores para proporcionar Utilice yum para descargar software para usuarios del sistema operativo Linux.

uso de mmm

Ver software para descargar:

yum list | grep 软件名
  • Hay muchos software que se pueden instalar con yum. El uso directo del comando yum list mostrará una gran cantidad de información de software, así que use pipes y comandos grep para filtrar el software que está buscando.

Consulta la información del software SL (la siguiente imagen muestra parte de la información consultada):

imagen-20230716202336383

  • La primera columna de información es el nombre del software.
  • La segunda columna de información es el número de versión. (el es centos)
  • La tercera columna de información es la fuente del software.

Descargue e instale el software:

sudo yum -y install 软件名
  • sudo utiliza un usuario normal y luego ejecuta comandos como superusuario. Solo los superusuarios pueden instalar software.
  • Sudo debe configurarse antes de que los usuarios normales puedan usarlo.
  • La opción -y es para evitar confirmar la instalación durante el proceso de desinstalación.
  • Una vez instalado el software, todos los usuarios del sistema pueden utilizarlo.

Instale el software sl usando el superusuario:

imagen-20230716204114911

Desinstalar software:

sudo yum -y remove 软件名
  • sudo utiliza un usuario normal y luego ejecuta el comando como superusuario. Solo el superusuario puede desinstalar el software.
  • Sudo debe configurarse antes de que los usuarios normales puedan usarlo.
  • La opción -y es para evitar la confirmación de desinstalación durante el proceso de desinstalación.

Intente eliminar el software sl:

imagen-20230716202907720

Como usted es un usuario normal, la eliminación falló y debe desinstalarlo como superusuario.

Desinstale el software usando el superusuario:

imagen-20230716203437590

Dado que no se utiliza la opción -y, debe ingresar y para confirmar la desinstalación del software.

imagen-20230716203408073

Desinstalado exitosamente.

fuente mmm

Como tienda de software, yum debe conocer la dirección de descarga del software. Estas direcciones de descarga generalmente se almacenan en archivos de configuración, y estos archivos de configuración se convierten en fuentes de yum.

  • La fuente de yum se almacena en la ruta /etc/yum.repos.d/.
  • Los enlaces dentro de la fuente de yum se pueden modificar para actualizar o modificar la fuente de yum.
  • La fuente yum de un servidor en la nube equipado con un sistema operativo Linux está configurada y, por lo general, no es necesario actualizarla.

Vaya al directorio donde se encuentra la fuente de yum para ver:

imagen-20230716205837273

Ver fuente yum:

imagen-20230716210116670

imagen-20230716210134794

Actualización desde la fuente yum:

  1. Haga una copia de seguridad de la antigua fuente yum (use el comando mv para realizar la copia de seguridad).
  2. wget obtiene el nuevo archivo de configuración fuente de yum (se puede obtener mediante la búsqueda en la red).
  3. mv pasa a llamarse por el nombre de la antigua fuente yum.
  4. yum limpiar todo && yum makecache。

Acerca del software

  • La estabilidad del software es más importante que la diversidad funcional.
  • Aunque la nueva versión del software tiene muchas funciones, habrá muchos problemas que nadie ha descubierto, al ser problemas nuevos generalmente son difíciles de solucionar en poco tiempo.
  • Aunque la versión anterior del software tiene menos funciones y ciertos problemas, debido al uso prolongado, los problemas existentes generalmente tienen las soluciones correspondientes.
  • El software se divide en software oficial y software extendido.
  • El software de extensión es generalmente una versión relativamente nueva o un software relativamente novedoso.
  • El software oficial generalmente incluye software de extensión que se considera confiable después de un uso prolongado.
  • Si no se puede encontrar el software que se va a instalar, es posible que esté en la fuente de software extendida. Puede usar sudo yum install -y software name -release para encontrar la fuente de yum correspondiente y luego instalarla.

2. Editor de Linux-vim

introducción a vim

vim es un editor multimodo integrado en el sistema operativo Linux.

  • vim es un editor que solo se puede utilizar para editar texto.
  • Vim tiene 5 modos básicos: modo de comando, modo de inserción, modo de resultado final, modo de reemplazo y modo de visualización.
  • Puede verificar si vim existe ingresando directamente el comando vim en Linux.

Ingrese vim en Linux:

imagen-20230716212910687

Ingrese shift+: y luego ingrese q para salir de vim.

modo básico vim

imagen-20230802152332454

modo comando

El modo en el que se encuentra cuando abre vim es el modo de comando y la entrada no se puede realizar en el modo de comando.

  • No importa a qué modo desee cambiar, debe cambiar desde el modo de comando.
  • No importa en qué modo presione esc (puede presionarlo varias veces), puede volver al modo de comando.

Use vim para abrir un archivo vacío sin realizar ninguna operación, está en modo comando:

imagen-20230716213605188

Modo de inserción

La edición de texto se puede realizar en modo insertar.

  • Ingrese (i/a/o) en modo comando para ingresar al modo de inserción.

imagen-20230728183931856

Modo de fila inferior

El modo de resultado final se utiliza para realizar operaciones como guardar, buscar o reemplazar contenido específico en el archivo.

  • Ingrese al modo de inserción escribiendo en modo comando shift+:.
  • En el modo de resultado final, ingrese q para salir del archivo directamente sin guardar los cambios.
  • Al ingresar w en el modo de línea inferior se guardarán los cambios sin salir del archivo.
  • Al ingresar wq en el modo de línea inferior se guardarán los cambios y se saldrá del archivo.
  • Agregar! en el modo final forzará a guardar las modificaciones/salir del archivo.

imagen-20230728184517581

patrón de reemplazo

En el modo de reemplazo, el carácter donde se encuentra el cursor será reemplazado por el carácter ingresado en el teclado.

  • Ingrese al modo de inserción escribiendo en modo comando shift+r.

imagen-20230728200306238

modo de vista

El modo Ver está orientado a la edición de bloques, es decir, seleccionar un área determinada y editar texto de forma continua, rápida y eficiente.

  • Ingrese al modo de visualización escribiendo en modo comando ctrl+v.

Anotación por lotes en modo de visualización:

  1. Ingrese al modo de visualización

imagen-202308021458135762. Seleccione la línea de código a comentar moviendo el cursor:

imagen-20230802145924166

  1. Ingrese I (mayúscula) y //:

imagen-20230802150059995

  1. Presione esc para completar la anotación del lote:

imagen-20230802150131882

Descomentar lotes en modo de visualización:

  1. Ingrese al modo de visualización

imagen-20230802150258530

  1. Mueva el cursor para seleccionar la anotación que desea eliminar:

imagen-20230802150340214

  1. Presione d para descomentar:

imagen-20230802150408566

Resumen de comandos en el modo de fila inferior

  • Recuperar y eliminar números de línea: set nu / set nonu
  • Buscar contenido específico: /要搜索的指定内容 – Ver la siguiente coincidencia, presionar n, saltar a la coincidencia anterior, presionar shift+n
  • Ejecute comandos de Linux sin salir de vim: !执行的命令
  • Reemplace el campo especificado con el campo especificado: %s/替换前的字段/替换后的字段/g
  • Abra otros archivos al mismo tiempo: vs 要打开的文件 – Mantenga presionada la tecla Ctrl y presione w dos veces rápidamente para cambiar el cursor a otros archivos.

Resumen de comandos en modo comando

  • Copie varias líneas de código donde está el cursor: (n)yy – Si no ingresa un número antes de usar el comando yy para copiar el código, significa copiar la línea actual.

  • Pegue las líneas de código previamente copiadas en la línea al lado de la línea donde está el cursor: (n)p - Si usa el comando p para pegar el código sin ingresar un número antes, significa pegarlo una vez en la línea al lado de la línea donde está el cursor. cursor es.

  • Deshacer la operación anterior: u – Las modificaciones guardadas al ingresar w en el modo de fila inferior aún se pueden deshacer.

  • Deshacer el último deshacer: ctrl+r – Los cambios guardados al ingresar w en el modo de fila inferior aún se pueden deshacer.

  • Corta varias líneas de código donde se encuentra la línea actual: (n)dd – Las líneas de código cortadas (n)pse pueden pegar usando comandos. Cortar sin pegar equivale a una operación de eliminación.

  • Saltar a la última línea de texto: shift+g / G

  • Saltar a la primera línea de texto: gg

  • Saltar a una línea de texto específica: n shift+g / n G

  • Saltar al principio de la línea de texto actual: shift+$

  • Saltar al final de la línea de texto actual: shift+^

  • Saltar hacia adelante una vez dividido por palabras: b

  • Saltar hacia atrás una vez dividido por palabras: w

  • Cambio rápido de mayúsculas y minúsculas: shift+~ – Después de presionar una vez, el carácter donde se encuentra el cursor cambiará entre mayúsculas y minúsculas, y el cursor se moverá automáticamente a la siguiente posición.

  • Reemplace varios caracteres, incluida la posición del cursor, con los caracteres especificados: (n)r 要替换的指定字符

  • Elimina varios caracteres, incluido el cursor y el cursor a la derecha: (n)x

  • Elimina varios caracteres incluido el cursor y el cursor a la izquierda: (n)X

  • Movimiento de la posición del cursor: h (izquierda) j (abajo) k (arriba) l (derecha)

configuración sencilla de vim

  • Bajo el directorio /etc/, hay un archivo llamado vimrc, este es un archivo de configuración público en el sistema y es válido para todos los usuarios.

  • En el directorio de inicio de cada usuario /home/xxx, puede crear un archivo de configuración privado llamado ".vimrc". Este es el archivo de configuración privado del usuario y solo es válido para ese usuario.

Por ejemplo, después de que los usuarios normales crean un archivo ".vimrc" en su directorio de inicio, ingresan el comando set nu en el archivo y lo guardan, el número de línea se mostrará automáticamente la próxima vez que abran vim.

La configuración de vim es relativamente complicada y algunas configuraciones de vim requieren el uso de complementos, se recomienda no configurarlas una por una usted mismo. El método más simple es ejecutar directamente el siguiente comando (ejecute este comando con el usuario con el que desea que la configuración de vim surta efecto. No se recomienda ejecutarlo directamente desde la raíz): curl -sLf
https://gitee.com/ HGtz2222 /VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

Luego ingrese la contraseña de root cuando se le solicite:

Luego espere la configuración de instalación y finalmente ejecute manualmente la fuente ~/.bashrc.

imagen-20230728204036234

Una vez completada la configuración, estarán disponibles funciones como finalización automática, visualización del número de línea y sangría automática.

3. Compilador de Linux gcc/g++

gcc/g++ son compiladores que se utilizan para compilar el lenguaje C y C++ respectivamente. Los métodos de uso (instrucciones) de gcc y g++ son los mismos.

Recopilación completa del programa.

gcc [-o 要生成的文件名] 要编译的文件

Nota: gcc 文件名 Puede completar la compilación del archivo y generar un programa ejecutable llamado a.out en el directorio actual. Agregue -o para especificar el nombre de archivo del programa generado.

imagen-20230729154321844

Compilación distribuida de programas.

El proceso completo de compilación del programa:

  1. preprocesamiento
  2. compilar
  3. Compilacion
  4. Enlace

Archivos de preprocesamiento

gcc -E 要处理的文件名 [-o 要生成的文件名]

Nota: Se recomienda nombrar el archivo generado con el sufijo .i.

Preprocese el archivo test.c para generar el archivo test.i:

imagen-20230729154739105

test.i es preprocesado por test.c, por lo que el archivo de encabezado de test.c se expandirá para aumentar el número de líneas de código y se eliminarán el reemplazo de macros, la compilación condicional y los comentarios, por lo que en el archivo test.i No se pueden ver definiciones de macros, compilación condicional ni comentarios. En este momento, el contenido del archivo todavía está en lenguaje C.

compilar el archivo

gcc -S 要处理的文件名 [-o 要生成的文件名]

Nota: Se recomienda nombrar el archivo generado con un sufijo .s. Puede operar en el archivo de resultados del preprocesamiento o en el archivo fuente.

Compile el archivo test.i obtenido mediante preprocesamiento para obtener el archivo test.s:

imagen-20230729155519168

test.s se compila a partir de test.i. Durante la compilación, el código del lenguaje C se convierte al lenguaje ensamblador.

ensamblar archivos

gcc -c 要处理的文件名 [-o 要生成的文件名]

Nota: Se recomienda nombrar el archivo generado con el sufijo .o. Puede operar en el archivo de resultados del preprocesamiento, el archivo de resultados compilado y el archivo fuente.

Ensamble el archivo test.s obtenido por compilación para obtener el archivo test.o:

imagen-20230729160202816

test.o se compila a partir de test.s. Durante el ensamblaje, el archivo compilado se convertirá en código binario no ejecutable.

Vincular archivos

No hay opciones de comando especiales para vincular archivos, solo se utilizan instrucciones para la compilación completa del programa. El sistema Linux tiene una biblioteca de lenguaje C incorporada y el compilador completará automáticamente el proceso de vinculación.

Verifique las bibliotecas utilizadas por el programa ejecutable para conectarse

ldd 可执行程序文件名

Utilice ldd para ver las bibliotecas conectadas al programa ejecutable:

imagen-20230729160943100

Bibliotecas dinámicas y estáticas.

Las bibliotecas vinculadas por el compilador se dividen en bibliotecas estáticas y bibliotecas dinámicas .

Biblioteca estática: al vincular una biblioteca estática, el código correspondiente en la biblioteca estática se copiará al programa ejecutable, por lo que el programa vinculado a la biblioteca estática ocupa un espacio mayor, sin embargo, si la biblioteca estática desaparece y no afecta Durante la ejecución del programa, la biblioteca estática generalmente tiene .a como sufijo.

Biblioteca dinámica: al vincular una biblioteca dinámica, la dirección del código correspondiente en la biblioteca dinámica se copiará al programa ejecutable. Por lo tanto, el programa vinculado dinámicamente ocupa menos memoria. Sin embargo, si la biblioteca estática desaparece, el programa no poder ejecutarse normalmente La biblioteca dinámica Generalmente, el sufijo es .so.

Biblioteca estática:

Ventajas: no depende de bibliotecas, se puede ejecutar de forma independiente y el programa tiene una alta portabilidad.

Desventajas: ocupa mucho espacio.

Biblioteca dinámica:

Ventajas: ocupa menos espacio y varios programas pueden utilizar el código de la biblioteca dinámica compartida juntos.

Desventajas: depende de las bibliotecas, no se puede ejecutar de forma independiente y la portabilidad del programa es baja.

Verifique el estado del enlace del programa a través del comando de archivo:

imagen-20230729165622754

Puede ver que el programa ejecutable mytest utiliza enlaces dinámicos y bibliotecas compartidas.

gcc [-o 要生成的文件名] 要编译的文件 -static

Nota: Si la biblioteca estática del lenguaje C no está instalada, puede ejecutarla yum install -y glibc-staticpara instalarla o también puede ejecutar yum install -y libstdc++-staticla biblioteca estática de C++ para instalarla.

Al compilar con gcc, agregue la opción de comando -static para obtener un programa vinculado estáticamente:

imagen-20230729165909556

Puede ver que mytest-static utiliza enlaces estáticos y el tamaño del archivo es mayor que el programa ejecutable mytest vinculado dinámicamente.

4. Herramienta de compilación automatizada de proyectos Linux: Makefile

Los archivos Makefile son herramientas que pueden implementar funciones de compilación automatizadas.

Nota: El Makefile debe crearse en el directorio del archivo fuente que se va a compilar.

Composición del archivo Make

Makefile es una herramienta de compilación automatizada compuesta de dependencias y métodos de dependencia.

Dependencias

La dependencia es una descripción de la relación entre un archivo de destino y un archivo de origen.

Método de dependencia

El método de dependencia se utiliza para indicar el método de ejecución para obtener el archivo de destino a través del archivo de origen.

Cree un archivo fuente test.c y un archivo Makefile ( makefile ) en el directorio :

imagen-20230729182028699

En Makefile, establezca las siguientes dependencias y métodos de dependencia para el archivo test.c:

imagen-20230729183004157

Después de escribir el Makefile, ingrese el comando make para ejecutar el Makefile:

imagen-20230729182534882

Después de ejecutar el comando make, las dependencias se verán automáticamente en el Makefile para la compilación automática. Dado que mytest depende de test.o, test.o depende de test.s, test.s depende de test.i y test.i depende en las dependencias test..c, por lo que los métodos de dependencia ejecutados están en el orden inverso a las dependencias de Makefile.

Palabra clave .PHONY

Makefile utiliza la palabra clave .PHONY para identificar el archivo de pseudo destino, de modo que siempre se pueda completar el método dependiente correspondiente a la relación de dependencia.

Ejecute el comando make varias veces en un Makefile:

imagen-20230729184414851

Por lo general, cuando el comando make se ejecuta varias veces, solo la primera ejecución será exitosa. Cuando se ejecute posteriormente, se informará un mensaje de error indicando que el archivo ya es el último. En este momento, solo necesita usar la palabra clave .PHONY para identifique la dependencia que se completará. El método de dependencia correspondiente a la relación siempre se completa. Modifique el Makefile al siguiente contenido:

imagen-20230729184648767

make se puede ejecutar varias veces seguidas sin restricciones:

imagen-20230729184743721

Normalmente la palabra clave .PHONY se utiliza para limpiar archivos de destino:

imagen-20230729184943944

Ejecute el comando make clean y especifique el método de dependencia correspondiente al método de dependencia para ejecutar clean:

imagen-20230729185459003

ilustrar:

  • El archivo fuente de una dependencia puede estar vacío.
  • Al ejecutar el comando make, solo se completará el método de dependencia correspondiente a la primera dependencia escaneada de arriba a abajo en el Makefile. (Si los archivos fuente de la primera dependencia provienen de otras dependencias, se ejecutarán juntos)
  • Al ejecutar el comando make, puede especificar los métodos dependientes que se ejecutarán.

La razón por la que el reconocimiento de comandos no se puede ejecutar varias veces

El comando make identifica que no se puede ejecutar varias veces comparando la hora de la última modificación del archivo fuente con la hora en que se generó el programa ejecutable, de la siguiente manera:

imagen-20230729191517204

  • La hora de la última modificación del archivo fuente es anterior a la hora en que se generó el programa ejecutable; el comando make no se ejecutará repetidamente
  • El archivo fuente se modificó por última vez después del momento en que se generó el programa ejecutable; el comando make se puede ejecutar

Verifique la hora de creación y modificación del archivo mediante el comando stat:

Tocar un archivo existente puede modificar la hora de modificación del archivo:

imagen-20230729194619872

todas las palabras clave

all es una palabra clave comúnmente utilizada para definir un objetivo llamado "todos". Todos los objetivos se utilizan generalmente como destino predeterminado, es decir, al ejecutar el comando make, si no se especifica ningún objetivo, todos los objetivos se ejecutarán de forma predeterminada.

Para explicar mejor la función de la palabra clave all, prepare los siguientes archivos fuente test1.c y test2.c con el siguiente contenido:

imagen-20230802151058346

Cree un archivo MAKE con el siguiente contenido:

all:mytest1 mytest2
mytest1:test1.c
	gcc -o mytest1 test1.c
mytest2:test2.c
	gcc -o mytest2 test2.c

.PHONY:clean
clean:
	rm -f mytest1 mytest2

Ingrese el comando hacer:

imagen-20230802151312229

Dado que las dependencias de todos los objetivos requieren mytest1 y mytest2, el comando make busca automáticamente las dependencias y los métodos dependientes de mytest1 y mytest2 para su ejecución, completando la compilación automatizada única de múltiples archivos.

Ingrese make clean para limpiar múltiples programas a la vez:

imagen-20230802151516235

5. Depurador de Linux-gdb

gdb es el depurador en el sistema Linux.

  • El programa depurado por gdb solo puede ser la versión de depuración.
  • El programa binario producido por gcc/g++ está en modo de lanzamiento de forma predeterminada. Para usar gdb para la depuración, debe agregar la opción -g al generar el programa binario desde el código fuente.

Para facilitar la depuración, prepare el siguiente código:

#include <stdio.h>

int AddToTop(int top)
{
    
    
  printf("enter the func\n");
  int sum = 0;
  for (int i=0; i <= top; i++)
  {
    
    
    sum += i;
  }
  printf("quit the func\n");
  return sum;
}

int main()
{
    
    
  int top = 100;
  printf("the sum is %d\n", AddToTop(top));
  return 0;
}

Prepare el archivo makefile con el siguiente contenido:

mytest:test.c
	gcc -o mytest test.c -g -std=c99
.PHONY:clean
clean:
	rm -f mytest

ilustrar:

  • Dado que el código utiliza variables definidas dentro de un bucle, es necesario indicar el uso del estándar C99 durante la compilación para evitar fallos en la compilación.
  • Utilice la opción -g para convertir el programa binario resultante en una versión de depuración.

Después de preparar el código y los archivos MAKE, compílelos para formar un programa ejecutable. Para asegurarse de que el programa ejecutable tenga información de depuración, utilice readelf - S mytest | grep debugcheck:

imagen-20230802121818005

Utilice gdb para comenzar a depurar el programa:

imagen-20230802121955983

Comando Ver código: l(lista) + número: muestra el código comenzando desde la línea correspondiente.

Mostrar código a partir de la primera línea:

imagen-20230802122552997

Dado que gdb registrará el último comando, ingrese y presione Enter para continuar mostrando el siguiente código:

imagen-20230802122627028

Comando de punto de interrupción: b(punto de interrupción) + número/archivo fuente: nombre de la función: coloque un punto de interrupción en la línea de código correspondiente.

Coloque un punto de interrupción en la línea 18 del código:

imagen-20230802122830696

Ver instrucciones de punto de interrupción existentes: información b (punto de interrupción).

imagen-20230802122957922

Alguna información:

  • Num: número de punto de interrupción.
  • Qué: indica el archivo fuente y la ubicación del punto de interrupción.

Instrucciones de ejecución del programa: r(ejecutar): si hay un punto de interrupción, se ejecutará hasta el punto de interrupción y se detendrá. Si no hay un punto de interrupción, se ejecutará hasta el final del programa.

Ejecute el programa hasta el punto de interrupción:

Verifique la información del punto de interrupción nuevamente. La información del punto de interrupción registra que el punto de interrupción se alcanzó una vez:

imagen-20230802123551646

Comando Eliminar punto de interrupción: d(eliminar) + número de punto de interrupción: elimina el punto de interrupción correspondiente al número de punto de interrupción.

Elimine el punto de interrupción con el punto de interrupción número 1:

imagen-20230802123840597

Desactivar comando de punto de interrupción: deshabilitar el número de punto de interrupción.

Desactive el punto de interrupción número 2:

imagen-20230802124410058

Nota: La columna de información Enb indica que el punto de interrupción está cerrado e y indica que el punto de interrupción está abierto.

Comando Habilitar punto de interrupción: habilitar el número de punto de interrupción.

Punto de interrupción inicial número 2:

imagen-20230802124551179

Ejecute las instrucciones del código paso a paso: n (siguiente).

Después de ejecutar, ejecute el programa, ingrese siguiente para ejecutar el código paso a paso:

imagen-20230802135656755

Ejecutar instrucciones de código declaración por declaración: s(paso).

Después de ejecutar ejecutar el programa, ingrese s para ejecutar el código declaración por declaración:

imagen-20230802135754713

Puede ver la estructura de llamada de función a través del comando bt:

imagen-20230802140115556

Comando de variable de monitor: p/mostrar nombre de variable – p significa mostrar una vez, mostrar significa visualización permanente, no mostrar+número cancela la visualización permanente.

Monitorear el valor de una variable:

imagen-20230802140502040

Cancelar la visualización permanente numerada 1:

imagen-20230802140838468

Instrucciones de salto de código: hasta + número: en el cuerpo de la función, salta el código a la línea correspondiente.

Salte a la línea 10 en la función AddToTop:

imagen-20230802141517544

Complete las instrucciones de ejecución de la función actual: finalizar: complete directamente la ejecución de la función actual.

Complete la ejecución de la función AddToTop directamente y obtenga el valor de retorno:

imagen-20230802141731958

Vaya a la siguiente instrucción de ubicación del punto de interrupción: c (continuar).

imagen-20230802142551214

Salir del comando gdb: salir.

Supongo que te gusta

Origin blog.csdn.net/csdn_myhome/article/details/132063646
Recomendado
Clasificación