美文网首页
坑人的pc指针0x000000

坑人的pc指针0x000000

作者: Joe_WQ | 来源:发表于2023-06-06 10:25 被阅读0次

背景

在Ubuntu 18.04上,gcc版本为7.x,程序能够正常运行,切到CentOS 8.3后,gcc版本为8.4,遇到pc指针空了的问题,搜索问题产生的原因,说是有两个可能性:函数调用时,缓冲区溢出,将栈里面的值改成了0,导致return的时候jump到了0;手动写了一个指向0的函数指针,然后调用。

debug

由于程序比较大,直接挂gdb很头大,所以用valgrind跑了下,很智能,直接告诉了我是pc指针为0的时候的调用堆栈,但是我一看,代码没有写return,编译的时候报了-Wreturn-type,但是我没有打开-Wall

难道是return没写导致?顺手补上后,重新运行,好使了,一切正常。查了下gcc的文档,里面有句话:

For C++, a function without return type always produces a diagnostic message, even when ‘-Wno-return-type’ is specified.

好吧,看来这个warning后面得当成error来修.

相关文章

  • C语言笔记11

    1、把字符串的首地址赋予指向字符类型的指针变量。例如: char *pc; pc="C Language"; 2、...

  • 声明指针

    int *pi;char *pc;long *pl;(*)表明该变量为指针,int *pi表明 pi是一个指针,而...

  • 2021-05-28

    0x 颜色对应代码 "black"=>array( 0x000000),黑色 "maroon"=>array( ...

  • 单链表反转

    链表反转的是将节点的指针指向前一个节点,并不是将节点反向的排序; 思路:设计三个指针:Pc当前指针、PN下一个指针...

  • STM32F10X启动流程

    总体流程 1.初始化堆栈指针 SP=_initial_sp,初始化 PC指针=Reset_Handler2.初始化...

  • 9.可以做填坑人嗎?

    看了一偏文章,說到身邊都是挖坑人和填坑人。每個人都可能是團隊裡面的挖坑人及填坑人。如何才能從挖坑人變成填坑人呢?填...

  • Android 逆向中会用到的ARM

    PC 是指令指针 R15LR是用于保存函数调用的返回地址 R14SP是堆栈指针 R13 LDR 将内存中的数载入到...

  • 手机端&PC端按钮和入口交互异同辨析(二)

    看过了PC端鼠标和界面元素的主要交互方式,下面让我们来总结一下PC端鼠标交互的最显著的一些特性: 1. 鼠标指针优...

  • 程序计数器(Program Counter Register)

    每个线程都有一个程序计数器(PC计数器),是线程私有的,这个PC计数器就是一个指针,指向下一条命令的地址,也就是指...

  • iOS开发-OC 中给 nil 发送消息会崩溃吗?为什么?

    Objective-C 是以 C 语言为基础的,PC 上,在 C 语言中对空指针进行操作,程序会由于越界访问而出现...

网友评论

      本文标题:坑人的pc指针0x000000

      本文链接:https://www.haomeiwen.com/subject/bbcgedtx.html