docker容器中运行 C++ 程序,有时崩溃,但没日志,也没提示。之前掌握了 coredump 调试,本文在容器中尝试。

操作

先查看core大小:

$ ulimit -a | grep core
core file size          (blocks, -c) 0

设置:

$ulimit -c unlimited

再查看:

$ ulimit -a | grep core
core file size          (blocks, -c) unlimited

设置路径

$ sudo echo 'core.%t.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

运行镜像:

docker run -v /home:/home  -it latelee/myserver bash

进入对应的程序目录:

# cd /home/latelee/docker/test/myserver/

运行有段错误的测试程序:

# ./myserver
Segmentation fault (core dumped)

查看是否产生:

# ls
Dockerfile  core.1535079291.myserver.11  entrypoint.sh  config.ini  myserver

生成的coredump文件为core.1535079291.myserver.11

core设置永久生效

编辑/etc/security/limits.conf文件,修改core相关的配置项,如下:

*               soft    core            unlimited
root            hard    core            unlimited

编辑/etc/sysctl.conf文件,在文件最后添加:

kernel.core_pattern = core.%t.%e.%p

注:以上2个文件均需root权限打开。

小结

0、程序必须使用-g编译,即程序是带有调试信息的,否则,即使有coredump,也看不出问题所在。
1、先在宿主机上执行ulimit -c unlimited,并且设置生成coredump路径。
2、再在docker容器里执行程序。

经验

1、网上有说法提到在docker run时带--ulimit core=-1 --security-opt seccomp=unconfined参数,经验证,带与不带都可以生成coredump文件。由于笔者一般使用docker-compose来编排容器,这个还不知道怎么写到docker-compose.yml文件,所以暂不使用。
2、关于设置coredump文件路径,建议在/tmp或单独挂载的目录,上文仅是演示,没有实际指导意义。

我的docker随笔24:docker产生coredump文件相关推荐

  1. 我的docker随笔:开篇

    layout: post title: keywords: category : docker容器 tags : [docker] 李迟按: 自换新工作来,几乎没有再更新博客了.从去年下半年开始,陆续 ...

  2. docker 随笔记录

    1.docker 固定网络ip地址,启动 Docker的时候,用 --network 参数,可以指定网络类型 eg:docker run -itd --name test1 --network bri ...

  3. 我的docker随笔35:jenkins服务部署

    本文涉及一种在容器中部署 jenkins 服务的方法,后续将其与 gitlab 配合以实现 CICD 功能.其目的是为了在实际工作中使用代码托管及自动化操作. 一.引言 因工作需要,需部署 jenki ...

  4. 我的docker随笔22:多域名同主机部署

    需求: 只有一台云主机,但有多个不同域名网站,甚至还有二级域名.不能通过端口访问,即只有域名(二级域名).同时需要启用 https (到期自动更新证书). 网站内容为静态文件(当前暂定),docker ...

  5. 我的docker随笔17:使用docker-compose启动MySQL、Redis和Mongo

    一.背景 有网友咨询用docker-compose启动几个存储服务,这些服务包括了MySQL.Redis.Mongo.恰好笔记没做过这一方面,趁机会学习一下. 二.要求 需要启动的docker如下: ...

  6. 我的docker随笔16:构建一个特定的nodejs镜像

    一.背景 某网友需要对区块链交易的项目进行测试.测试脚本需要在nodejs环境中运行,脚本有server.js.package.json,主要依赖包为web3(当然还是其它的).为方便测试,较好的解决 ...

  7. 我的docker随笔13:docker源码编译进阶篇

    本文与前面文章相同,但多了一些分析的步骤. 一.环境搭建 docker的编译,需要在宿主机预先安装docker软件.因为编译docker的源码时,会构建一个docker镜像并运行,在这个容器里面进行b ...

  8. 我的docker随笔12:docker源码编译

    因工作需要从源码编译docker,本文对此进行介绍. 一.环境搭建 docker的编译,需要在宿主机预先安装docker软件.因为编译docker的源码时,会构建一个docker镜像并运行,在这个容器 ...

  9. 我的docker随笔10:docker客户端使用其它主机的docker服务器

    我们使用的docker,都是在本机之内使用的,即docker服务端与客户端都有同一个机器,但是,有时候,需要在本机连接远程服务器的docker,本文就此情形展开研究. 基础知识:docker的运行 我 ...

最新文章

  1. 微软 服务器和工具产品,微软服务器和工具部总裁鲍伯·穆格里亚辞职
  2. 怎么看到方法内引用方法的注释_开门就看到餐厅,玄关怎么设计?试试这3个方法,专为小户型设计...
  3. 关于Cocos2d-x中让主角运动的方法
  4. arcgis选出点规定范围的面
  5. 过去式加ed的发音_【思语小课堂】时态二三事:规则动词过去式的发音规则
  6. oracle语句insert into select如何加后续插入条件
  7. 涂威威:第四范式经验与思考分享
  8. latex中怎么设置每一行文字都对齐_LaTeX技巧870:Latex如何在设置行距后让字体垂直居中?...
  9. 推荐下载使用:COMODO Internet Security V5.0.157302.1066 多国语言版(含:简体中文)
  10. css浮动会有什么影响,CSS,浮动及其影响
  11. 这里是一个简单的CRM客户关系管理系统的开发教程,你值得拥有哟!
  12. linux终端打开excel,linux 打开excel命令 java
  13. linux命令清理磁盘空间,Linux如何使用命令行清理磁盘来增加空间
  14. 小甲鱼python课后题共多少讲_小甲鱼python视频第七讲(课后习题)
  15. 摄像机和镜头的基础知识
  16. 华中科技大学网络教材
  17. 教师python培训心得体会
  18. 热招 | 我们是 Towhee 产研团队
  19. 使用 easyExcel 生成多个 excel 并打包成zip压缩包
  20. 【Golang】Go 语言 XML 的序列与反序列化实践

热门文章

  1. 小红书重拳治理虚假种草 再起诉3家通告平台、MCN机构
  2. 告别30元!喜茶承诺今年绝不涨价:不再推29元以上产品
  3. 从“元宇宙”看国内外产业发展差距
  4. 挂了三次科目二的我,竟被一台智能车征服 | 威马W6停车挑战
  5. 包一艘船给年轻人玩剧本杀,飞猪这波创新你怎么看?
  6. 高德地图上线高考出行专项服务
  7. 新修订未成年人保护法6月1日正式实施
  8. 爆料者称苹果仍在继续研发iPhone屏下Touch ID
  9. 胡润百富:华为成为中国最值钱消费电子企业 小米排名第二
  10. 腾讯云游戏新进展:WeGame云游戏功能已落地全国9省市