首页 > 其他 > 详细

栈溢出

时间:2020-04-16 20:22:10      阅读:58      评论:0      收藏:0      [点我收藏+]

本文简单的mark一下栈溢出以及其可能导致的core错位,栈溢出的时候, gdb的报错是不准确的。

正文

今天在写程序的时候,发现了一个栈溢出的问题,程序本身如下:


void fn2(string str){

}

void fn1(){
       const char* str = NULL;
2 =>   fn2(str);

}

void fn(){

1 =>    string temp("aaa");
        fn1();
}

无论是vsvocde的报错还是gdb的core,错误没有报错在 2=>处,而是报在了1=>处, 而1肯定是没有问题的,后来一路打log下去才发现是哪里真的报错
通过gdb去查看反汇编的报错堆栈的时候,明显可以看到,其报错堆栈的最后指向的运行代码是__stack_chk_fail, 这应该是gdb本身的bug

=>  0x00007faf30ed990b <+1755>:  callq  0x7faf30ed3750 <__stack_chk_fail@plt>

https://www.jianshu.com/p/47d484b9227e

栈溢出

原文:https://www.cnblogs.com/ishen/p/12715143.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!