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).