gcc选项-fstack-check是如何工作的?

stc*_*atz 8 stack gcc

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

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

stc*_*atz 6

检查装配程序后.我认为-fstack-check,会将代码写入0写入堆栈指针的偏移量,所以为了测试程序是否访问了违规地址,程序如果发生了就崩溃了.例如mov $ 0x0,-0x928(%esp)