linux下gdb如何处理coredump错误
2022/2/18 7:11:38
本文主要是介绍linux下gdb如何处理coredump错误,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
linux下gdb如何处理coredump错误
在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误
会导致程序运行时异常退出或者终止,这种错误没有明显错误提示信息,该如何定位错误呢?
在linux下,这种错误会生成的一个叫做core的文件,这个core文件会记录程序在运行时的内存,寄存器状态,内存指针和函数堆栈信息等等。对这个文件进行分析可以定位到程序异常的时候对应的堆栈调用信息。
但某些情况下,程序异常结束并不会生成这个core文件,我们需要对linux环境做出一些设置。
1. 检查core file size 是否被限制为0
输入指令:
ulimit -a
若core file size 后面是0,我们需要修改为无限制
输入:
ulimit -c unlimited
修改后为:
2.禁用apport服务
如果第一条操作仍无法生成core文件,那么我们需要继续执行以下操作:
- 设置core 文件的格式
打开 /etc/sysctl.conf , 在底部加上如下2行, 设置生成的core文件格式
sudo vim /etc/sysctl.conf
%e-execute name, %p-process %s-siganl that cause coredump kernel.core_pattern=core-%e-%p-%s
- 禁用apport 服务, 有这个服务运行还是不能生成core 文件
sudo systemctl disable apport.service
- 重启电脑或者虚拟机
使用GDB进行调试
gdb [可执行文件名] [core文件名]
执行gdb调试指令,backtrace(bt)打印当前的函数调用栈的所有信息进行错误定位。
这篇关于linux下gdb如何处理coredump错误的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南