linux gcc/clang 是否生成调试代码来检查堆栈平衡?
Does linux gcc/clang generate debug code to check stack balance?
在windows上,VC编译器将在函数调用结束时生成带有_chkesp隐式函数的调试版本代码,并在堆栈上分配一些0xCCCCCCCC缓冲区以检查和防止堆栈损坏。
gcc/clang 是否具有通过某些命令行选项提供额外堆栈 check/prevention 的相同能力?附加堆栈 space 还是堆栈检查?
谢谢!
GCC 支持 -fstack-protector
和 -fstack-protector-all
options。请注意,两者都是为了加强安全性而不是调试。相反,请考虑使用
GCC/CLANG address sanitizer (ASAN) options (minimal example) or Valgrind (minimal example).
在windows上,VC编译器将在函数调用结束时生成带有_chkesp隐式函数的调试版本代码,并在堆栈上分配一些0xCCCCCCCC缓冲区以检查和防止堆栈损坏。
gcc/clang 是否具有通过某些命令行选项提供额外堆栈 check/prevention 的相同能力?附加堆栈 space 还是堆栈检查?
谢谢!
GCC 支持 -fstack-protector
和 -fstack-protector-all
options。请注意,两者都是为了加强安全性而不是调试。相反,请考虑使用
GCC/CLANG address sanitizer (ASAN) options (minimal example) or Valgrind (minimal example).