Al compilar el código fuente de C con gcc o Clang, siempre uso la -g
bandera para generar información de depuración para gdb.
gcc -g -o helloworld helloworld.c
Me di cuenta de que algunas personas recomiendan en su -g3
lugar. ¿Cuál es la diferencia entre las banderas -g
y -g3
? ¿También hay una diferencia entre -g
y -ggdb
?
Respuestas:
De los documentos :
fuente
tl; dr: Para responder a su pregunta específica,
-g3
"incluye información adicional como definiciones de macros ... Algunos depuradores admiten la expansión de macros cuando se utiliza-g3
", mientras-g
que no incluye esta información adicional.La respuesta más amplia es que gcc admite cuatro niveles de información de depuración, desde
-g0
(información de depuración desactivada) hasta-g3
(información de depuración máxima).Especificar
-g
es equivalente a-g2
. Curiosamente, los documentos de gcc dicen poco sobre qué información-g
/-g2
incluye o excluye:fuente