当我添加选项-fstack-check和-fstack-protector时,我的程序崩溃了。 __stack_chk_fail在回溯跟踪中被调用。

那么我怎么知道问题出在哪里呢? -fstack-check真正检查什么?
有关gcc的信息似乎太大,无法找到答案。

最佳答案

经过检查后的汇编程序。
我认为-fstack-check将向堆栈指针的偏移量中添加写入0的代码,因此要测试程序是否访问了违规地址,程序是否会崩溃。
例如mov $ 0x0,-0x928(%esp)

关于gcc - gcc选项-fstack-check是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2369886/

10-12 16:04