omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试根据堆栈信息了。通过去掉SFP,可以提高程序运行速度,达到优化程序的目的。如果要打开栈指针,使用-fno-omit-frame-pointer。 另外一个类似选项-fomit-leaf-frame-pointer...
GCC编译器提供了-fomit-frame-pointer和-fno-omt-frame-pointer两个相对的编译选项。 GCC手册[1]里对-fomit-frame-pointer的说明: Omit the frame pointer in functions that don’t need one. This avoids the instructions to save, set up and restore the frame pointer; on many targets it also makes a...
请注意,-fno-omit-frame-pointer 并不保证在所有函数中都使用帧指针。 一些目标总是在叶函数中省略帧指针。 默认情况下在 -O1 及更高版本启用。 -foptimize-sibling-calls 优化同级和尾递归调用。 在-O2、-O3、-Os 级别启用。 -fno-inline 不要注意 inline 关键字。 通常,此选项用于防止编译器扩展任何内联函数。
所谓帧指针,指的是指向一个函数的栈帧的底部的指针(栈顶指针是没办法省的)。比如x86平台就使用ebp作为帧指针。省略掉帧指针的好处是可以多出一个可用的寄存器,坏处是不利于栈回溯。值得注意的是,有些平台的过程调用规范指定必须使用帧指针,此时该选项无效;同时,与该选项对应的-fno-omit-frame-pointer也不保证帧指...
比如x86平台就使用ebp作为帧指针。省略掉帧指针的好处是可以多出一个可用的寄存器,坏处是不利于栈回溯。值得注意的是,有些平台的过程调用规范指定必须使用帧指针,此时该选项无效;同时,与该选项对应的-fno-omit-frame-pointer也不保证帧指针一定会被使用。
(3)-fno-strict-aliasing:关闭严格别名规则。 (4)-fno-omit-frame-pointer:不省略函数栈帧指针。 (5)-fno-common:禁止共享数据段。 (6)-fno-builtin:禁用内建函数。 (7)-fno-stack-protector:禁用栈保护。 4. 链接选项 (1)-shared:生成共享库。 (2)-static:生成静态库。 (3)-nostdlib:不使用标准库...
omit- frame-pointer:可能的情况下不产生栈帧; -O2:以下是-O2在-O1基础上增加的优化选项: -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fexpensive-optimizations -fgcse ...
omit- frame-pointer:可能的情况下不产生栈帧; -O2:以下是-O2在-O1基础上增加的优化选项: -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fexpensive-optimizations -fgcse ...
gcc -fsanitize=address -fno-omit-frame-pointer <your_source_files> -o <output_file> ``` 其中,`-fsanitize=address`选项用于启用asan,`-fno-omit-frame-pointer`选项用于保留函数调用堆栈信息。 3.编译和链接你的代码。使用上述编译选项,编译和链接你的源文件,生成可执行文件。 4.运行你的程序。现在你的...
value="-fno-omit-frame-pointer|-momit-leaf-frame-pointer" /> <flag type="simple" value="-fno-guess-branch-probability" /> <flag type="simple" value="-fno-cprop-registers" /> <flag type="simple" value="-fno-if-conversion" /> ...