Golang 程序 crash 的时候自动 core dump

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

介绍golang程序崩溃时生成core dump文件的方法,详细介绍GOTRACEBACK环境变量的可选值,以及在Linux上使用ulimit限制core dump大小的方法。还提到在Ubuntu上关闭或配置apport以写入用户core dump文件,以及解包apport打包的debug文件和core dump文件的存放位置。

🎯

关键要点

  • 介绍了在golang程序崩溃时生成core dump文件的方法。
  • 通过设置GOTRACEBACK环境变量来控制崩溃时的堆栈跟踪信息。
  • GOTRACEBACK的可选值包括none、single、all、system和crash。
  • 在Linux上使用ulimit命令限制core dump的大小,建议设置为50G。
  • core dump文件的存放位置可以通过/proc/sys/kernel/core_pattern查看。
  • Ubuntu使用apport作为core dump管理服务,默认情况下用户程序不会生成core dump。
  • 可以通过修改core_pattern文件或配置apport来解决core dump问题。
  • apport的配置文件位于~/.config/apport/settings,需设置unpackaged=true以记录未打包程序的core dump。
  • 使用apport-unpack命令可以解包apport生成的debug文件。
  • 如果在工作目录下没有生成core dump,可以检查/var/lib/systemd/coredump/目录。
➡️

继续阅读