Linux C语言 函数return 0 后 程序coredump, 问题分析

守护进程中,线程core dump了, 段错误, 找了一个上午, 终于解决了, 以下是解决过程:

  1. 由于该服务程序是守护进程, 所以gdb调试run了以后, 父进程退出, 无法跟踪.
    上网查了下, 一共有3种方法, 这里采用attach的方法:
    <1>.查看所需调试的子进程号, pid
    <2>.(gdb)attach pid
  2. 附加到该子进程后:
    <1>.info threads:当前运行线程, 可以使用thread [num] 切换线程;
    <2>.接下来就可以打断点调试了.
    <3>.set scheduler-locking off|on, on 可以保证断点只让当前线程命中, 默认是off(所有线程都可命中断点)
  3. 发现问题:
    通过调试发现, core dump 发生在函数FUNC调用返回的时候, 即:return 0的时候报了段错误, 第一次见很奇怪
    上网查资料显示原因:
    这里写图片描述

经过排查发现, 调用算法库接口时, 传入参数被修改了, 并且修改越界, 导致栈结构被破坏.从而引发了上述问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值