ulimit -c unlimited
Cd /proc/92477 cat limits
prlimit --pid xxx core=xxx可以改单个进程的rlimit
gdb ./skynet core文件
对go文件的core获取
注意golang中要设置GOTRACEBACK
core后获取到的文件,golang可以使用delve工具进行排查。
/usr/local/bin/dlv core ./admasterweb ./core_admasterweb
在golang的log中对并发map读取这种错误,是不会有记录的。同时golang是对这种fatal error直接挂掉的,不会panic,也无法通过defer recoverty进行恢复。这里常见做法是配置挂掉时获取到core文件,分享core文件。
其实,更简单的方式是通过 重定向系统错误到文件来处理。 nohup xx -conf xx.yaml>/dev/null 2>error.txt & 这样执行错误的fatal error就可以从error.txt中看到错误堆栈了