Golang Go语言 gdb 调试产生的 core 文件

发布于 1周前 作者 ionicwang 来自 Go语言

我使用了 ulimit -c limited 和 env GOTRACEBACK=crash,使得 golang 程序在崩溃时会产生 core 文件。

这时我使用 gdb ./test core 命令载入可执行程序与 core 文件,输入 bt,得到结果如图:

有几个问题:

  1. core 文件为什么没有显示*.go 相关的文件,而全是.c 的呢
  2. 因为我故意写了一个段错误,并 core 文件并没有指向到

我使用 gdb ./test 直接调试可执行程序,gdb 中输入 run,得到结果如下:

gdb 可以直接指向我使用空指针的地方,我一个 server 总不能总是在 gdb 里面运行吧……


Golang Go语言 gdb 调试产生的 core 文件

更多关于Golang Go语言 gdb 调试产生的 core 文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

更多关于Golang Go语言 gdb 调试产生的 core 文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang开发中,使用GDB调试时产生的core文件是系统因程序崩溃而生成的一种内存转储文件,它包含了程序崩溃时的内存状态、寄存器状态、程序计数器等信息,对于开发者来说是非常宝贵的调试资源。

当你遇到Golang程序崩溃并生成core文件时,可以按照以下步骤进行调试:

  1. 确保GDB支持Go语言:你需要安装支持Go语言的GDB版本,通常这可以通过安装gdb-go包或者从Go的官方源码编译GDB得到。

  2. 加载core文件:使用GDB加载core文件,通常的命令格式是gdb ./your_program_binary core_file。替换your_program_binary为你的可执行文件路径,core_file为core文件路径。

  3. 分析崩溃原因:在GDB中,你可以使用bt(backtrace)命令查看崩溃时的函数调用栈,这将帮助你定位问题发生的具体位置。此外,你也可以检查各个变量的值,使用info localsinfo args等命令。

  4. 利用Go特有的GDB命令:Go语言的GDB支持提供了一些特有的命令,如goroutinethread apply all bt等,它们可以帮助你更好地理解并发程序的行为。

  5. 修复问题:根据分析的结果,对代码进行修复,然后重新编译运行,验证问题是否解决。

总之,core文件是调试崩溃程序的重要工具,熟练掌握GDB和core文件的使用方法,将大大提高你的调试效率。

回到顶部