我想了解每个标志对代码的影响,以理解它们的开销。我查阅了 man g++
关于 '-g'
标志,只发现了 "生成额外的代码来写入配置文件...."
,但没有指明具体位置。
有没有详细的手册可以帮助我理解 -g/-p
的作用呢?
-p
选项可以生成额外的代码来编写配置文件,这将添加额外的代码。此额外代码至少包括在函数开头和结尾处的一个寄存器加载和一个函数调用,但它取决于架构。这可能会影响其他编译优化,例如寄存器可用性、内联以及实际运行代码时可能会影响高速缓存命中率/缺失率,除了执行这些额外指令的直接影响外。
-g
选项本身不会添加额外的代码,只会产生调试符号,这些符号成为可执行文件的一部分,以便调试器在使用调试器时找到函数、变量等。"
-p
在可执行文件中添加额外信息,以便像prof
这样的分析器可以跟踪软件运行情况并告诉您它花费大部分时间的位置(循环/函数等)以及程序的效率如何。 :-)
info gcc
也应该有所帮助。 - devnull