【Go学习】Golang源码编译和gdb调试环境搭建
【Go学习】Golang源码编译和gdb调试环境搭建GO可以说是近几年最热门的新兴语言之一了,一般人看到分布式和大数据就会想到GO。本文主要是来编译一下go的源码,然后搭建gdb的调试环境。 源代码是Google官方的实现的1.10.2版本,不适用于其他版本和gccgo等其他实现,运行环境是CentOS Linux release 7.5.1804.
编译golang源代码go的源代码是用go写的,编译也需要一个可运行的go. 注意两个压缩包解压出来文件夹名称都是go,所以不要在同一个目录下进行解压。go环境的安装可以查看我之前的一个文章—-Centos7 VS code golang 开发环境搭建,这里就不再赘述。 我的go环境安装解压路径(就是上面的go二进制文件的解压路径):
/home/james/opt/go
上面的go源码的解压路径:
/home/james/workspace/go_src
为了方便我把解压之后的文件夹重命名为go_src。
编译go之前需要设置环境变量: export GOROOT_BOOTSTRAP=~/opt/go
export GO_GCFLAGS="-N -l"
这里的 都准备好以后就可以进入go的源代码文件夹( 调试golang源代码下面我们使用gdb来进行调试,我们以以下源码(hello.go)为例: package main
import "fmt"
func main() {
var c int = 0
a,b := 1,2
c = a + b
fmt.Printf("c : %dn",c);
fmt.Printf("Hello Wroldn")
}
编译源代码使用以下命令,这里的 /home/james/workspace/go_src/bin/go build -gcflags "-l" hello.go
编译后使用gdb运行: gdb ./hello go里面的函数符号名称的命名规则是包名称.函数名称,例如主函数的符号名称是main.main,运行时中的newobject的符号名称是runtime.newobject. 总结目前只是简单的搭建了gdb的调试环境,后续更多研究之后,再补充。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |