Golang core dump功能设置

1.查看coredump功能状态

#ulimit -a

图片

从图中可以看出core file size = 0, core dump 功能是关闭的。必须为core file size 设置合理的值

2.开启core dump 功能

# ulimit -c unlimited=

设置core file size = unlimited,core dump file 的文件的大小无限制。也可以根据自己的需要把core file 设置为特定的大小如:

#ulimit -c 1024

需要注意的是core file size 的单位是block, block = 512字节。因通过ulimit 设置core file size 只对当前的终端起作用,当你关闭终端或者重启系统设置会失效。为了避免每次都设置的麻烦,可以在~/.profile 最后添加:

# echo "ulimit -c unlimited" >> ~/.profile

3.设置core dump 文件的位置

core dump file 的默认生成的位置是程序当前运行的目录,为了便于查找必须指定一个统一的保存位置。在/etc/sysctl.conf文件中添加

  *kernel.core_pattern=/var/core/core%t%p_%e*

  %t: 生成的文件的时间戳

  %p:发生断言的进程的id

  %e:发生断言的的代码文件

然后执行:

# sysctl -p  /etc/sysctl.conf

Golang core dump功能设置

1.设置Go环境变量

# export GOTRACEBACK=crash

Golang的程序生成core dump file 文件还需要借助一个环境变量:GOTRACEBACK。GOTRACEBACK变量控制着程序出现断言时输出怎样的信息,具体设置如下:

        环境变量                描述

 GOTRACEBACK=none        只输出panic异常信息

 GOTRACEBACK=single      只输出被认为引发panic异常的那个goroutine的相关信息

 GOTRACEBACK=all         输出所有goroutines的相关信息,除去与go runtime相关的stack frames 

 GOTRACEBACK=system      输出所有goroutines的相关信息,包括与go runtime相关的stack frames,从而得知哪些goroutine是go runtime启动运行的

 GOTRACEBACK=crash       与system的唯一区别是crash会生成coredump文件

需要注意的是和ulmit 命令一样,在关闭终端和重启系统后,设置的GOTRACEBACK变量会消失,所以要将’export GOTRACEBACK=crash’ 加入到 .profile文件中

# echo "export GOTRACEBACK=crash " >> ~/.profile
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值