一,准备
1,启动容器,一定要加 --privileged --ulimit core=-1 这个参数,不然无法生成coredump文件
docker run -itd --privileged --ulimit core=-1 镜像 /bin/sleep 3600
步骤二:设置core dump文件位置
vi /etc/sysctl.conf
修改(添加)如下两个变量
kernel.core_pattern =/var/core/core_%e_%p
kernel.core_uses_pid= 0
这里是改为生成目录在/var/core/,%e代表程序名称,%p是进程ID
如果想直接生成在可执行文件相同目录,前面不要加任何目录,直接
kernel.core_pattern =core_%e_%p
步骤三:让修改生效
sysctl -p/etc/sysctl.conf
二, 运行程序,出发coredump
自己运行程序,出发异常
三,拷贝出coredump文件,使用gdb排查
gdb /usr/local/bin/python core_python_618
排查到libcrypto.so.1.1引起的错误。经测试是python的requests库,请求https资源的时候出错,临时办法是加verify=False。根本解决是重装openssl