如何使用dlv调试golang coredump

阅读 24

05-14 12:00

 

dlv 是 Delve 的命令行界面,Delve 是一个专门为 Go 语言设计的调试器,它支持调试运行中的 Go 程序,也支持分析 core dump 文件。以下是使用 dlv 调试 Go 程序生成的 core dump 的基本步骤:

1.编译 Go 程序: 编译你的 Go 程序

go build -gcflags="all=-N -l" -o myapp ./myapp

  

注:

(1)-gcflags="all=-N -l" 禁用了编译器优化和内联

(2)-ldflags="-w"会禁用调试信息,不要包含该参数

2.运行程序以生成 core dump: 在程序崩溃之前,确保你的操作系统配置为允许生成 core dump。这通常可以通过 ulimit 命令来实现:

ulimit -c unlimited
export GOTRACEBACK=crash

  

运行你的程序并使其崩溃,从而生成 core dump。

3.使用 Delve 调试 core dump: 使用 dlv core 命令来启动 Delve 并加载你的程序和 core dump 文件:

dlv core ./myapp /path/to/coredump

  

这里 ./myapp 是编译后的可执行文件,/path/to/coredump 是生成的 core dump 文件的路径。

4.分析程序状态: 一旦 Delve 启动并加载了 core dump,你可以使用 Delve 提供的各种命令来分析程序状态。常见的调试命令包括:

  • bt 或 backtrace:显示当前 goroutine 的调用堆栈。
  • frame <n>:选择堆栈上的第 n 个帧。
  • list:显示当前断点处的源代码。
  • locals:显示当前函数的局部变量。
  • print <expr>:评估并打印表达式。
  • goroutines:列出所有 goroutines。

5.退出 Delve: 当你完成调试并分析了 core dump 后,你可以通过输入 exit 或者按下 Ctrl+D 来退出 Delve。

精彩评论(0)

0 0 举报