使用GDB调试core文件时的一些基本知识

一、错误代号       一般出现core会由以下几种类型的错误触发生成:       1.  SIGSEGV 段错误(信号11),说白了就是访问了非法内存地址,无论是超出进程范围的(地址越界)还是系统不存在的内存访问(指针指向空)       2.  SIGABRT 检测异常(信号6) 调用了abort()函数导致,最常见的是对释放的内存(free())再次进行释放,或者内存分配失败
摘要由CSDN通过智能技术生成
一、错误代号
       一般出现core会由以下几种类型的错误触发生成:
       1.  SIGSEGV 段错误(信号11),说白了就是访问了非法内存地址,无论是超出进程范围的(地址越界)还是系统不存在的内存访问(指针指向空)

       2.  SIGABRT 检测异常(信号6) 调用了abort()函数导致,最常见的是对释放的内存(free())再次进行释放,或者内存分配失败等原因的时候会触发

       3.  SIGBUS本意是指总线错误(信号7),一般出现在当你访问一段非法地址,并且这段地址物理上是不存在的。它类似于SIGSEGV,后者也是访问非法地址,但是这个地址是               虚拟地址空间的地址,SIGBUS正好相反,由于某些机器上,物理空间存在不连续的情况,访问到这些hole时,就会产生这个信号。硬件故障。

       4.  SIGILL 一般是硬件方面的问题,比如用%s格式直接输出string类型的(没有通过c_str()转换)一般会导致这个信号并退出进程(一般编译时就会提示cannot pass objects of               non-POD type …call will abort at runtime)。
二、环境查看
       查看堆栈信息:
              1. backstrace, 简写bt :打印当前的函数调用栈的所有信息
              2. frame[n],   简写f :切换到堆栈的第N层
              3. up/down,    在堆栈中向上或者向下移动
              4. info
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值