1
在windows上,VC編譯器將在函數調用結束時使用_chkesp隱式函數生成調試版本代碼,並在堆棧上分配一些0xCCCCCCCC緩衝區來檢查和防止堆棧損壞。linux gcc/clang生成調試代碼來檢查棧平衡嗎?
gcc/clang是否可以通過某些命令行選項提供額外的堆棧檢查/預防功能?是否需要額外的堆棧空間或堆棧檢查?
謝謝。
在windows上,VC編譯器將在函數調用結束時使用_chkesp隱式函數生成調試版本代碼,並在堆棧上分配一些0xCCCCCCCC緩衝區來檢查和防止堆棧損壞。linux gcc/clang生成調試代碼來檢查棧平衡嗎?
gcc/clang是否可以通過某些命令行選項提供額外的堆棧檢查/預防功能?是否需要額外的堆棧空間或堆棧檢查?
謝謝。
GCC支持-fstack-protector
和-fstack-protector-all
options。請注意,兩者都針對安全強化而非調試。相反,考慮使用GCC/CLANG address sanitizer(ASAN)選項(minimal example)或Valgrind(minimal example)的 。