您的位置:首页 > 运维架构 > Linux

linux GDB调试时的临时变量,临时指针

2016-03-02 18:30 295 查看
今天调试遇到了个很麻烦的事情,为了复现一个栈完全被踩成0x01010101010101010101的问题较劲了好几天

期间需要多次call 函数来模拟进程里的函数调用

但是坑爹的是,这个read_xxx(int, int, int*) 有个坑爹的指针

前2个入参好办,直接传个数进去就解决了,或者用set $i=0 来弄个临时变量也行

但是这个指针就麻烦了,没有上下调用栈,上哪弄个有效的指针给你啊

嗯, 全局变量,我也是这么干的

不过很不幸,全局变量通常都是蛮重要的,这么干的结果就是复现出来的问题是乱七八糟的,绝对的自己坑自己

尤其是这个指针还是个INOUT参数,指不定在哪步就被改了,坑的我一愣一愣的

后来终于找到了个比较好的解决办法

精华啊

这么牛逼的办法当然不是我想出来的,其实很简单,但当时就是没转过来,遗憾啊

read_xxx(0, 0,(int *)&g_err_str)

其实要的就是个有效的地址嘛,类型不对没关系啊,只要buffer够长什么都好说

找个全局的buffer,把地址强转下了传进去就好了,这种事情buffer来干是最好的了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: