CORE DUMP生成调试
2024-09-06 15:05:36
之前我调试嵌入式linux程序,一般是借助ucontext库,在发生段错误时,直接将错误函数打印出来。有同事建议我使用core dump,于是我今天在嵌入式板卡尝试了core文件的生成,但是也是几经波折,在网上查了很多资料,才成功生成core文件,所以总结如下:
如果程序段错误了,core文件没有生成,请做如下的尝试:
1. 检查ulimit,输入命令ulimit-c,看是否是0;建议修改成:ulimit -c unlimited
2. 检查kernel选项,CONFIG_ELF_CORE必须要打开。这个选项应该在menu config的general里面;记不清了,可以用grep搜索一下你的config文件,看当前值是什么。
3. 修改/proc/sys/kernel/core_uses_pid;/proc/sys/kernel/core_pattern等文件;这时遇到权限问题,加sudo也不行。可以用下面的方式来解决问题:
sudo bash -c "echo "" >/proc/sys/kernel/core_uses_pid "
sudo bash -c "echo "/opt/app_driver/core-%e-%p-%t" >/proc/sys/kernel/core_pattern"
sudo bash -c "echo "" >/proc/sys/fs/suid_dumpable"
不要直接sudo 去echo,而是在bash之前加sudo。
原因网上有资料说是:
procfs中的条目由ad hoc代码管理。在/proc/sys下设置文件权限和所有权的代码(proc_sys_setattr)拒绝使用EPERM更改权限和所有权。
因此无法更改这些文件的权限或所有权,完全停止。这样的改变没有实现,因此root无效。
当您尝试以非root用户身份编写时,会收到权限错误。即使使用sudo echo "/home/user/foo/core.%e.%p" > /proc/sys/kernel/core_pattern,
您尝试以非root用户身份编写:sudo以root身份运行echo,但重定向发生在执行sudo的shell中,该shell没有提升权限。使用sudo bash -c '… >…',
重定向在bash实例中执行,该实例由sudo启动并以root身份运行,因此写入成功。
也可以用下面的方式来修改,实际上我就是这么成功修改的:
sudo sysctl -w kernel.core_pattern=/opt/app_driver/core-%e-%p
如此再运行程序,出现段错误,就能够在/opt/app_driver/ 目录下生成core文件
生成段错误之后,就可以用gdb查看段错误信息了。
1.sudo gdb ./demoout core-xxx-855
2.输入bt,打印backtrace
3.x/128xw 0xb58cd4e8 来打印内存
最新文章
- Smallest Common Multiple
- 关于ADO.NET连接ORACLE,使用ODAC连接中的一些问题
- Android中Listview点击item不变颜色以及设置listselector 无效
- 搭建S3C6410开发板的测试环境
- maven项目和普通项目转换
- [.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
- CoreDataManager-OC版-兼容iOS10以前的版本
- Android Glide数据更新及内存缓存、硬盘缓存清理
- 得分(Score,ACM/ICPC Seoul 2005,UVa 1585)
- table表格
- 【Todo】所有Locked的题目的分析解答
- 微软IOC容器Unity简单代码示例3-基于约定的自动注册机制
- linux —— 学习笔记(环境变量的设置)
- Activity堆栈管理
- CSS之2D转换模块
- SPOJ 839 OPTM - Optimal Marks (最小割)(权值扩大,灵活应用除和取模)
- UML学习笔记(五)--顺序图
- 深入浅出 - vue变化侦测原理
- 【笔记】CSS选择器整理(IE低版本支持性测试)
- Spark笔记(一):错误总结
热门文章
- [RN] React Native 使用 Redux 比较详细和深刻的教程
- 11/9 <;Stack>; 155 232 225
- 带有连接池的Http客户端工具类HttpClientUtil
- 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址
- win10安装docker并结合Idea2018.1部署springboot项目
- 团队作业第五次—项目冲刺-Day7
- 主流的单元测试工具之-JAVA新特性-Annotation
- gojs常用API-画布操作
- Linux下Maven私服Nexus3.x环境构建操作记录
- 微信小程序常用样式汇总