gccgo原生支持gdb。
编译和连接go程序时使用gc工具链,将生成DWARFv4调试信息。链接器标志-w将会忽略调试信息。
gc生成代码包括内联函数调用和寄存器变量,有些优化操作导致gdb调试变得困难,使用go build-gcflags=all="-N -l"
编译选项取消优化。
core dump. 触发dump当程序崩溃时。设置环境变量GOTRACEBACK=crash。
gdb的一般操作:
list
list line
list file.go:line
break line
break file.go:line
disas
bt
frame n //展示栈结构
//展示本地变量、参数和返回值的类型,名称,栈帧等内容
info locals
info args
p variable
whatis variable
//go扩展
p var //打印
p $len(var) $cap()
$dtype(var) //
iface var
info goroutine
goroutine n cmd
help goroutine
案例
go test -c --->生成可执行文件regexp.test
编辑/etc/gdbinit文件,添加
add-auto-load-safe-path