当前位置:网站首页>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.参考文档列表
边栏推荐
- PyTorch builds a classification network model (Mnist dataset, fully connected neural network)
- 滑动窗口的最大值
- 设计思维 | 详看设计工作坊Workshop的11个关键技巧
- 不卷不pua,早9晚6,这个招聘深得我心
- Nanoprobes FluoroNanogold 偶联物的特色和应用
- Golang strings
- An animation optimization of shape tween and optimization of traditional tweening
- 【web渗透】CSRF漏洞详细讲解
- 函数在结构体中的应用练习
- js单线程及事件循环、宏任务和微任务
猜你喜欢
DAY19(DAY20、DAY21拓展):SQL 注入
【web渗透】CSRF漏洞详细讲解
[OpenCV] Book view correction + advertising screen switching Perspective transformation image processing
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
[Deep Learning] Overview of Efficient and Lightweight Semantic Segmentation
细胞图像数据的主动学习
力扣刷题 每日两题(一)
Jmeter use
安全狗《云原生安全威胁分析报告》首次提出双检测模型
【深度学习中的激活函数的整理与使用总结】
随机推荐
Zhang Le: The Golden Triangle of R&D Efficiency and Practice in the Field of Demand and Agile Collaboration|Live Review
驻冰岛使馆提醒旅冰中国公民务必加强安全防护
d写二进制
致一位湖南女孩
An introduction to basic tools for selecting line tools (package church)
背后的力量 | 提升医疗服务“速度“和“温度” 华云数据助力上海国际医学中心加速智慧医院建设
中国手机品牌争论谁是国内第一,而它已成为中国手机在海外的代表
豪威集团发布新款5000万像素图像传感器OV50E
The Chinese Embassy in Nigeria issued an emergency safety warning for the area near Zuma Rock in Abuja
如何让history历史记录前带时间戳
厨卫电器行业数字化集采管理系统:优化产业供应结构,实现采购业务流程集中管控
An introduction to 3D tools
驻尼日利亚使馆发布阿布贾祖玛岩附近地区紧急安全预警
Left index of all anagrams in leetcode/string (some permutation of s1 string is a substring of s2)
Golang 互斥锁
PyTorch builds a classification network model (Mnist dataset, fully connected neural network)
Golang GMP principle
鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干
An animation based button animation combined with basic code
How to make the history record time-stamped before