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

 

posted @ 2025-11-15 17:27  孤独的DNA  阅读(0)  评论(0)    收藏  举报