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。










