今天写了个生成coredump的c++程序,发现单独执行程序时能正常生成coredump文件(ulimit -c设置为unlimited)。
但是在用systemd配置服务启动时发现不会生成coredump文件,systemd的service配置文件里已经添加了LimitCORE=infinity参数。
原因及解决办法:
查看coredump配置:
# cat /proc/sys/kernel/core_pattern
core
发现为默认设置。systemd不生成coredump的原因是因为pattern里没设置路径,加上路径即可,如/tmp/core-%e-%p,即可解决问题