如何在Docker中产生CoreDump文件
参考:https://zhuanlan.zhihu.com/p/24311785
1、ulimit把CoreDump限制打开
# 此参数为0时系统不会自动生成core dump文件
ulimit -c unlimited
2、程序崩溃退出时用 abort()
来替换 exit()
当执行 abort() 的时候,程序直接退出,不执行清扫,并且会产生 Core Dump 文件(如果 ulimit 允许的话)。
3、在宿主机节点设置CoreDump文件的格式
# 系统产生的core dump文件的名字是根据 /proc/sys/kernel/core_pattern 决定的
echo '/tmp/core.%t.%e.%p xxx' | sudo tee /proc/sys/kernel/core_pattern
4、docker run 的时候要加上以下参数
--ulimit core=-1 --security-opt seccomp=unconfined
前者就是把 Core Dump 文件的大小设置为无限制,后者是为了开放 ptrace 系列高权限的系统调用,这样我们才可以在 Docker 里面使用 GDB。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nz_nuaa@163.com