linux之core文件调试
linux之core文件调试
前言
有时候程序会异常退出而不带任何日志,此时就可以使用 core 文件进行分析,它会记录程序运行的内存,寄存器,堆栈指针等信息
什么是core文件
通常在 Linux 下遇到程序异常退出或者中止,我们都会使用 core 文件进行分析,其中包含了程序运行时的内存,寄存器,堆栈指针等信息,格式为 ELF ,可以理解成程序工作当前状态转储成一个文件,通过工具分析这个文件,我们可以定位到程序异常退出或者终止时相应的堆栈调用等信息,为解决问题提供帮助。
core文件配置
查看系统配置生成core文件大小
ulimit -a 或 ulimit -c

若显示为0,表示没有开启core文件的产生,即程崩溃时,系统不会产生core文件
配置系统关闭生成core文件大小
ulimit -c unlimited
上面对 core 文件的操作仅对当前生效,若需要永久生效,则要将相应操作写入 /etc/profile
修改完成后执行source/etc/profile可以让配置立即生效
配置core文件的文件名称和路径
设置pid作为文件扩展名
echo "1" > /proc/sys/kernel/core_uses_pid
控制core文件保存位置和文件名格式
echo "./core-%e-%p" > /proc/sys/kernel/core_pattern
%p - insert pid into filename # 添加 pid
%u - insert current uid into filename # 添加当前 uid
%g - insert current gid into filename # 添加当前 gid
%s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号
%t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename # 添加主机名
%e - insert coredumping executable name into filename # 添加命令名
/proc/sys/kernel/core_uses_pid 这个文件的值若为1,则无论是否配置 %p ,最后生成的 core 文件都会添加 pid
永久生效需要在系统配置文件/etc/sysctl.conf中设置
kernel.core_uses_pid = 1
kernel.core_pattern = ./core-%e-%p
然后执行sysctl -p立即生效
gdb调试方法
直接gdb ./a.out core(core表示生成的具体core文件)或先进入gdb控制台再core调试
gdb ./a.out
...
(gdb) core-file core // (core-file为命令,core表示具体core文件)
...
(gdb) bt
...
如需要在 PC 上调试嵌入式设备产生的 core 文件,则需要选取相应平台的 gdb 工具,并在进入 gdb 后设置符号文件的位置
xxx-xxx-gdb ./a.out
...
(gdb) solib-search-path xxx.so:xxx.so
...
(gdb) core-file core
...
(gdb) bt
...
linux之core文件调试的更多相关文章
- linux下core文件调试方法
http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映 ...
- linux下core文件调试方法(转载)
转自于:http://blog.csdn.net/fcryuuhou/article/details/8507775 在程序遇到段错误不寻常退出时,一般是访问内存出错.但是不会给出程序哪里出现的问题, ...
- Linux下core文件调试
1,ulimit -a查看默认参数 2,ulimit -c 1024 设置core文件大小,如果超过1024个blocks,则不会产生core文件 注:tune2fs -l /dev/sda8 输出分 ...
- Linux生成core文件、core文件路径设置
在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT ...
- [转载]linux下core文件设置与查看
转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ...
- linux 下core文件生成、路径、格式设置及调试
core文件生成及调试1 代码 #include<stdio.h> int main() { int *p = NULL; *p = 0; return 0; } 2 在当前shell执行 ...
- 开发板上使用core文件调试
转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和cor ...
- Linux下core文件产生的一些注意问题
前面转载了一篇文章关于core文件的产生和调试使用的设置,但在使用有一些需要注意的问题,如 在什么情况 才会正确地产生core文件. 列出一些常见问题: 一,如何使用core文件 1. 使用core文 ...
- Linux系统—— core 文件
Linux core 文件介绍 1. core文件的简单介绍 在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. ...
- linux下core文件设置(转)
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...
随机推荐
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(13)
1.问题描述: 推送通知里的skills标签有什么用?不填写似乎不影响推送,以及推送的点击跳转操作 解决方案: 鸿蒙系统的推送通知中的skills标签主要用于指定接收推送的应用程序所支持的能力(Ski ...
- pg 批量更改拥有者
记录一下. 为什么会有这个问题的原因是因为执行用的是管理员用户,pg默认拥有者是执行sql的用户也就是管理员,这样会导致创建的用户会没有这个表的权限 查询出sql语句复制直接执行就行 SELECT ' ...
- 用 Tarjan 算法求解无向图的割点和割边
上期回顾:https://www.cnblogs.com/ofnoname/p/18823922 Tarjan 算法与无向图 连接性分析是图论的核心,而Tarjan算法为我们提供了穿透复杂网络结构的通 ...
- vue中封装一个弹窗
vue3 父元素 <template> <div class="app"> <some-modal v-model:visible="mod ...
- jenkins打包内存溢出
现象 JavaScript heap out of memory 问题分析 报错信息翻译过来就是 JavaScript堆内存不足 . 这里说的 JavaScript 指的是 Node. 我们知道 No ...
- NBJS 笔试记录
1. 然后要知道三极管是NPN还是PNP. 一般说NPN管, 工作在放大区的时候要求,集电极反偏,发射极正偏,这要求集电极电压>基极电压>发射极电压. 也就是一楼说的Vc>Vb> ...
- Prim 算法求最小生成树
数据参考 百度经验 博客园 楠楠IT 测试接口 牛客 连通工程 问题背景 求国家建设公路的最小开销 算法思想 首先建立 邻接矩阵 然后 设定最小消耗顶点(就是两个定点之间的权重最小)顶点集合 U 每次 ...
- Codigger 吉祥物家族:Boby 天团来袭
Boby 家族 正式登场--四位性格迥异但同样可爱的吉祥物,将化身你的编程小伙伴,让开发之旅充满乐趣! HappyBoby:你的快乐代码向导 性格:阳光开朗.元气满满 特长:在你成功时欢呼,在你迷茫时 ...
- POLIR-Laws-诉讼法: 判断注册公司是否有独立法人资格? + 集团客户/母公司/子公司/分公司 + 和分公司发生纠纷,如何一并起诉总公司?
POLIR-Laws-诉讼法: 和分公司发生纠纷,如何一并起诉总公司? 判断注册公司是否有独立的"法人资格"? 法人企业与非法人企业有什么区别 一.定义上的区别: 法人企业: 是指 ...
- Django实战:Python代码规范指南
一.PEP 8:Python 代码风格的基石 在团队协作和项目维护中,一致的代码风格至关重要.它不仅能提高代码的可读性,还能减少沟通成本,提升开发效率. PEP 8 是 Python 官方发布的代码风 ...