golang日常开发系列之三--常用命令
文章目录
golang日常开发系列之三–常用命令
go语言作为一门相对较新的语言,相比c++有着更丰富的工具链。语言本身支持测试、模块管理、profile等功能。接下来总结不同场景下的常用命令
golang模块管理
在go发展早期,曾经有好几种不同的模块管理工具,直到go 1.13之后,go modules正式成为官方"钦定"的模块管理工具。
模块初始化
cd <module path> # 进入module path
go mod init <模块名> # 初始化模块,这一步会生成go.mod文件
go mod tidy # 更新go.mod(去掉无用module, 新增必要module)
golang测试
cd <module_path> go test ./... # 运行所有packages下的单元测试
go test . # 运行当前package下的单元测试
go test -v . # 运行当前package下的单元测试(添加verbose信息)
go test -run=<regrep> . # 运行指定的单测,可通过正则表达式过滤
go test -bench -run=None # 运行基准测试
添加依赖
go get -u <依赖库>
go mod tidy
替换依赖
# 修改go.mod文件,替换其中的import path(常用于测试)
replace github.com/hashicorp/memberlist => github.com/pilosa/memberlist v0.1.4-0.20190415211605-f6512523c021
go build go build -o
main.go # 编译代码并指定输出二进制文件 go build -gcflags “-N -l” main.go # 关闭内联优化 go tool go tool pprof ./bin/ck_sinker sinker.profile # 从profile文件生成调用图 go-torch ./bin/ck_sinker sinker.profile # 从profile文件生成火焰图
go tool pprof http://202.168.119.22:8128/debug/pprof/profile #从url生成profile
go tool pprof -http=0.0.0.0:8129 /home/liyang/pprof/pprof.ck_sinker_new.samples.cpu.001.pb.gz # 从url生成各种图 参考这里 https://blog.golang.org/pprof
- dlv
dlv exec
# 调试二进制文件 dlv test . # 调试单测文件 dlv attach # 调试正在运行的进程 dlv core # 查看core文件
################ golang远程调试 ################
dlv attach pidof vertamedia-clickhouse-plugin_linux_amd64
–headless –api-version=2 –log –listen=:8181 # 开启dlv server
dlv attach pidof clickhouse_manager_ly
–headless –api-version=2 –log –listen=:8181 # 开启dlv server
dlv connect localhost:8181 # dlv client连接dlv server
文章作者 后端侠
上次更新 2021-09-21