当前位置:网站首页>GDB调试CoreDump文件
GDB调试CoreDump文件
2022-08-03 13:34:00 【Once_day】
GDB调试CoreDump文件
Author:onceday date:2022年8月1日
1.引言
当进程收到某些信号时,默认的信号处理函数在终止进程之前会对进程的内存映像进行存储,形成当前时刻的“快照”,这个“快照”就是Core dumped。
会记录下内存信息,寄存器信息,内存管理信息,其他处理器和操作系统的状态和信息。
Linux默认是关闭了core dump功能,需要手动打开。
使用以下指令查询core dump 状态:
ulimit -c #返回0,代表关闭了core dump功能
可以使用以下命令在当前终端环境生效core dump:
ulimit -c unlimited
这开启了core dump功能,而且还没有限制文件大小,可以将unlimited改成合适的大小,单位为blocks(KB)。
永久开启core dump功能,可修改配置文件/etc/security/limits.conf
# /etc/security/limits.conf
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
#
#<domain> <type> <item> <value>
#* soft core 0
该文件也可以修改其他的内容。
2. 修改生成位置
修改存储的位置:
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport ......
默认将数据通过一个管道传输到python脚本输出,因此不会输出core dump文件。
更改该命令必须通过以下命令执行:
sudo bash -c "echo core > /proc/sys/kernel/core_pattern"
通过编辑器或其他途径都有失败的可能,如果无法生成转储文件,务必使用该方法生成,该文件。
如果不给定目录,那么默认为当前程序运行目录。
其可具有以下参数:
%%,单个%号字符
%p,所dump进程的进程ID
%u,所dump的实际用户ID
%g,所dump进程的实际组ID
%s,导致本次coredump的信号
%t,coredump的时间戳
%e,程序文件名
也可以通过修改/etc/systcl.conf文件,添加coredump对应目录及格式,此处user为用户名对应目录。
/home/user/coredump/core.%e.%p.%s.%E
然后输入以下命令使其生效:
sudo sysctl -p /etc/sysctl.conf
可以使用以下命令进行测试:
kill -s SIGSEGV $$ #杀死当前的shell进程
3.无法生成core dump文件的一些解决方法
可能是没有解开系统限制:
ulimit -a #查看系统限制
ulimit -c unlimited #解除系统限制
下面四个权限和空间不足的例子:
程序设置了用户id(调用了setuid),当当前用户并非该程序文件的所有者。
程序设置了组id(即调用segid),当当前用户并非该程序文件的组所有者。
用户没有当前目录或指定core文件产生目录的写权限。
core文件太大,磁盘空间不足。
4.使用gdb进行调试
直接输入命令:
gdb 可执行程序 核心转储文件
然后再使用bt和where查看堆栈错误信息。
具体的gdb使用请查看专门文档!
5.参考文档列表
边栏推荐
猜你喜欢

工具模板 | 用APOEM方法消除对用户行为的偏见

leetcode16 Sum of the closest three numbers (sort + double pointer)

scala安装包

函数在结构体中的应用练习
![[A summary of the sorting and use of activation functions in deep learning]](/img/c2/abec82f4f1e8ce3c70b6d98b24e7eb.png)
[A summary of the sorting and use of activation functions in deep learning]

硬件业务收入下滑,为了赚钱,苹果暧昧对待流氓软件和增加广告了

HCIP-第十二天-MPLS+VNP

MySQL知识总结 (十二) 数据库相关概念

PyTorch构建分类网络模型(Mnist数据集,全连接神经网络)

Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
随机推荐
Golang 字典 map
[Deep Learning] Overview of Efficient and Lightweight Semantic Segmentation
一文详解什么是软件部署
回流和重绘
The embassy in Iceland reminds Chinese citizens in Iceland to strengthen safety protection
TiFlash 计算层概览
Golang sync.WaitGroup
Forrester:行业云帮助中国企业更快适应未来的发展
Golang 互斥锁
15 years of software architect experience summary: In the ML field, 5 pits that beginners have stepped on
leetcode/字符串中的所有变位词(s1字符串的某个排列是s2的子串)的左索引
MySQL数据表操作实战
鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干
安全狗《云原生安全威胁分析报告》首次提出双检测模型
中国手机品牌争论谁是国内第一,而它已成为中国手机在海外的代表
Golang 接口 interface
[Practical skills] APP video tutorial for updating APP in CANFD, I2C, SPI and serial port mode of single-chip bootloader (2022-08-01)
HCIP 第十六天笔记(SVI、生成树协议)
[web penetration] detailed explanation of CSRF vulnerability
函数在结构体中的应用练习