omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试根据堆栈信息了。通过去掉SFP,可以提高程序运行速度,达到优化程序的目的。如果要打开栈指针,使用-fno-omit-frame-pointer。 另外一个类似选项-fomit-leaf-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 an extra register available. On some targets this flag has no effect because the ...
默认值为-ffp-contract=fast。 -fomit-frame-pointer 在不需要的函数中省略帧指针。 这样就避免了保存、设置和恢复帧指针的指令; 在许多目标上,它还提供了一个额外的寄存器。 在某些目标上,此标志无效,因为标准调用序列始终使用帧指针,因此不能省略。 请注意,-fno-omit-frame-pointer 并不保证在所有函数中都使用...
guess-branch-probability:分支预测;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-optim...
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 ...
比如x86平台就使用ebp作为帧指针。省略掉帧指针的好处是可以多出一个可用的寄存器,坏处是不利于栈回溯。值得注意的是,有些平台的过程调用规范指定必须使用帧指针,此时该选项无效;同时,与该选项对应的-fno-omit-frame-pointer也不保证帧指针一定会被使用。
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.运行你的程序。现在你的...
比如x86平台就使用ebp作为帧指针。省略掉帧指针的好处是可以多出一个可用的寄存器,坏处是不利于栈回溯。值得注意的是,有些平台的过程调用规范指定必须使用帧指针,此时该选项无效;同时,与该选项对应的-fno-omit-frame-pointer也不保证帧指针一定会被使用。