go中在使用cgo的时候调试c代码
以下都是基于ubuntu22做的测试
手动
1.设置dump的存储目录
echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern
2.设置好coredump的写出条件
ulimit -c unlimited
3.让go已生成dump文件的写入
GOTRACEBACK=crash /opt/srv-nodisk/srv_nodisk -f=/opt/srv-nodisk/config.yaml
4.手动执行异常造成退出
方式有很多,可以接收一个信号或者http请求服务
5.查看dump是否生成
ls -alth /tmp/
6.使用gdb调试
gdb srv_nodisk /tmp/core_srv_nodisk
使用linux的systemctl抓取
1.先配置环境
echo 'kernel.core_pattern=/tmp/core.%e.%p.%t' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
2.配置serivce,添加
[Service]
LimitCORE=infinity
Environment=GOTRACEBACK=crash

浙公网安备 33010602011771号