默认情况下,gcc
会将符号表添加到可执行文件中,因此gdb
将获得可读的堆栈跟踪。
-ggdb1
手册页中的选项文档gcc
说:
级别 1 产生的信息最少,足以在您不打算调试的程序部分中进行回溯。这包括函数和外部变量的描述,但没有关于局部变量的信息,也没有行号。
gcc
...在我看来,这与在没有任何调试相关参数的情况下调用相同。但是显然发出了额外的符号(.debug_frame
, .debug_str
, .debug_loc
)。
-ggdb1
那么到底有什么区别,与简单地不剥离可执行文件相比,编译有什么好处?