[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
允许在 Docker 中生成 core 文件
Wu Zhangjin 创作于 2019/12/23
By Falcon of TinyLab.org Dec 10, 2019
背景简介
《360° 剖析 Linux ELF》 课程使用 Linux Lab 来做实验环境,刚开始有学员报告说,当程序出现段错误时,即使用 ulimit 做了配置,也无法正常生成 core 文件。
后面分析并解决了这一问题,本文记录一下解决方法。
允许本地程序崩溃时生成 core 文件
当程序崩溃时,在本地可以用 ulimit -c unlimited
让应用正常生成 core 文件,方便调试。
允许在 Docker 容器中生成 core 文件
在 docker 中,当程序崩溃时,即使放开 core 文件的大小限制,也生成不了 core 文件。
经查,需要做两个改动:
- 在 docker 启动的时候,配置一下 ulimit,不限制 coredump 大小
- 然后配置一下
core_pattern
,确保 core 生成在当前目录,跟本地默认一致。
具体可以这么做:
- 在使用 docker run 时加这个参数:
--ulimit core=-1
另外,在启动容器后配置 core_pattern:
sudo sh -c 'echo core > /proc/sys/kernel/core_pattern'
这个 core_pattern 还可以这样配:
sudo sh -c 'echo "/tmp/cores/core.%e.%p" > /proc/sys/kernel/core_pattern'
以上用于配置 core 文件的名称和存放路径。
如果要能在本地访问 core 文件,还可以把本地存放 core 的路径通过 docker -v
挂载过去,例如:
$ mkdir /path/to/cores
$ docker -v /path/to/cores:/tmp/cores
小结
core 文件是很重要的调试手段,所以确保 Docker 容器也能正常生成 core 文件是非常重要。解决完该问题以后,让 Linux Lab 工作得更完美了。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |