liusheng / liusheng.github.io

Liusheng's blog
http://liusheng.github.io
5 stars 1 forks source link

Golang 代码调试方式笔记 #5

Open liusheng opened 5 years ago

liusheng commented 5 years ago

通过godoc命令可以快速查看一个go项目的文档

godoc --http :6060

然后浏览器打开http://localhost:6060/pkg

go list命令可以用来了列出go环境的packages,例如:

go list github.com/gophercloud/gophercloud/acceptance/...

上面命令可以列出gophercloud的acceptance目录下面的所有包。

一个在线运行,以及go代码分享有用的网站:

https://play.golang.org/

使用dlv test命令来调试gophercloud的 acceptance test:

dlv test 'github.com/gophercloud/gophercloud/acceptance/openstack/orchestration/v1' --build-flags "-v -tags 'fixtures acceptance'"  --log --output v1.test

也可以加上-- -test.run TestAAA的方式来只调试某一个用例

也可以通过下面的命令来先编译出一个包的test二进制文件:

go test -v -tags "fixtures acceptance" 'github.com/gophercloud/gophercloud/acceptance/openstack/orchestration/v1' -c

调试telefonica provider的方法:

TF_ACC=1 dlv test 'github.com/huawei-clouds/terraform-provider-telefonicaopencloud/telefonicaopencloud/' -- -test.run TestAccComputeV2FloatingIP_importBasic -test.v=1

使用下面的命令设置断点:

(dlv) b stackevents_test.go:30

c会执行到断点处停下

使用p命令用于显示变量的值:

(dlv) p err

使用delve调试的时候,建议先进行设置,可以退通过下面的命令来查看以及设置配置项:

(dlv) config -list
aliases            map[]
substitute-path    []
max-string-len     20000
max-array-values   <not defined>
show-location-expr false

设置字符串长度上限以及数组长度上限:

(dlv) config max-string-len 10000
(dlv) config max-array-values 1000
(dlv) config -save

上面的设置可以避免在打印变量的时候,变量的内容显示不全的问题。

huawei-telefonica-provider调试命令:

TF_ACC=1 dlv test 'github.com/huawei-clouds/terraform-provider-telefonicaopencloud/telefonicaopencloud/' -- -test.run TestAccComputeV2Instance_basic -test.v=1

在使用dlv调试的时候,很多时候字符串十一uint8数组的形式存放的,不利于查看内容,可以使用p string(strVar)的方式来查看内容。

go test 一次指定多个用例执行:

OS_DEBUG=1 TF_LOG=debug TF_ACC=1 go test ./huaweicloud/ -v -timeout 180m -run 'TestAccDataSourceAWSS3BucketObject_allParams|TestAccVpcPeeringConnectionV2DataSource_basic|TestAccVpcRouteIdsV2DataSource_basic'