对于golang这类静态型语言调试工具是必不可少的,无论是在平时的开发仍是对语言底层原理的熟悉上面都是很重要的工具。gdb做为unix及unix-like系统上面强大的调试工具一样能够调试golang应用。golang
经过下面的讲解你能够一步一步的看到golang代码是如何执行的,变量如何赋值的,内存是何时分配的等等一系列底层原理。bash
go开发环境函数
一段简短的golang代码工具
package main
import "fmt"
func main(){
c:=make(map[string]interface{})
fmt.Println(c)
}复制代码
go build -gcflags "-N -l" test.go //生成可执行代码,编译,关闭内联优化优化
好了,至此准备工做已经ok,环境,工具,运行程序都有了,下面开始利用gdb调试go可执行文件。ui
gdb -tui test #在运行时同时显示代码 特别方便spa
>> b main.main //在main函数加断点.net
>>run //运行进程unix
>>s //s是step的缩写,s和n的区别 看下面指针
、、、、、、、、、、
s: 执行一行源程序代码,若是此行代码中有函数调用,则进入该函数;
经过上面的能够清晰的看出来,随着输入s能够看出代码详细的执行过程,好比map的执行过程,内存分配过程等等,若是只是想看写的代码一行一行的执行结果能够输入n。
经过上面的命令已经能够很好的查看golang代码运行过程,下面是一些具体的变量信息,方便更加具体了解值。
whatis i // 查看对象类型
c // 继续执行,触发 breakpoint() 断点。
info args // 从参数信息中,咱们能够看到命名返回参数的值。
x/3xw &r // 查看 r 内存数据。(指针 8 + 长度 4)
q // 退出 GDB。
强烈推荐blog:
https://blog.csdn.net/liigo/article/details/582231?utm_source=copy 这篇文章能够好