ego008 avatar

使用 GDB 调试 go 程序

🕟 by ego008

GDB 是 FSF (自由软件基金会)发布的一个强大的类UNIX系统下的程序调试工具。 为了使用 GDB 调试 go 程序,需要使用 -gcflags ”-N -l” 选项编译程序,这些选项阻止编译器使用内联函数和变量。

1
2
go build -gcflags "-N -l" -o myapp main.go 
gdb myapp

GDB 常用命令:

显示代码的文件和行号,设置断点和反汇编:

1
2
3
4
5
6
(gdb) list
(gdb) list line
(gdb) list file.go:line
(gdb) break line
(gdb) break file.go:line
(gdb) disas

显示回溯和展开堆栈帧:

1
2
(gdb) bt
(gdb) frame n

显示局部变量,参数和返回值的堆栈框架的名称,类型和位置:

1
2
3
4
(gdb) info locals
(gdb) info args
(gdb) p variable
(gdb) whatis variable

显示全局变量的名称,类型和位置:

1
(gdb) info variables regexp

更多参考: Google 官方指南 https://golang.org/doc/gdb Using the gdb debugger with Go https://blog.codeship.com/using-gdb-debugger-with-go/ The tips of using gdb to debug Golang program http://nanxiao.me/en/the-tips-of-using-gdb-to-debug-golang-program/

Introduction to Go Debugging with GDB https://lincolnloop.com/blog/introduction-go-debugging-gdb/ 中文版 https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/11.2.md

大牛写的 GDB 入门 gdb Debugging Full Example (Tutorial): ncurses http://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html 中文版 http://blog.jobbole.com/107759/

💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.17.1 Processed in 1ms