go 在运行使用dlv的程序时,出现错误:"internal compiler error: NewBulk too big",

avwztpqn  于 22天前  发布在  Go
关注(0)|答案(3)|浏览(13)

你正在使用的Go版本是什么( go version )?

$ go version
go version go1.19.2 darwin/amd64

这个问题在最新版本中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/sufiyan/Library/Caches/go-build"
GOENV="/Users/sufiyan/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS="-mod=vendor"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/sufiyan/Workspace/Go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/sufiyan/Workspace/Go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.19.2"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/sufiyan/Workspace/Go/src/github.com/cdktf-poc/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/cm/lqydsrqj7b3cl_01bqz8048c0000gn/T/go-build1841126309=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

dlv debug main.go
最小程序:
https://github.com/sufiyan-techp/cdktf-poc
dlv debug main.go
PS: go build/run工作成功。

你期望看到什么?

程序以调试模式成功启动。

你看到了什么?

github.com/hashicorp/cdktf-provider-aws-go/aws/v9/ec2
<autogenerated>:1: internal compiler error: NewBulk too big: nbit=45718 count=439306 nword=1429 size=627768274

Please file a bug report including a short program that triggers the error.
https://go.dev/issue/new
exit status 2
9w11ddsr

9w11ddsr1#

当我尝试加载 https://github.com/sufiyan-techp/cdktf-poc/tree/main/vendor/github.com/hashicorp/cdktf-provider-aws-go/aws/v9 时,我收到警告 "Sorry, we had to truncate this directory to 1,000 files. 1,158 entries were omitted from the list."。同样地,在 ec2 子目录中也是如此,甚至更糟糕的是 ec2/ec2.go 文件,它有 2MB+,而 github 无法显示它。

所以,这个程序中有一些非常大的东西。我对我们得到这个错误并不感到特别惊讶,这基本上意味着函数中的变量数量 * 安全点的数量大于 2^32。可能 -N -l (dlv 传递给编译器的编译器标志)有一些东西会推到极限,我们可能会对其进行调整。但我对是否有什么明显的东西持怀疑态度。

一个解决方法是调试一个优化过的二进制文件,至少它似乎可以成功构建。

rjzwgtxy

rjzwgtxy2#

感谢randall77的及时回复。我正在研究构建一个优化的二进制文件,如果你有其他见解,请告诉我。

o2g1uqev

o2g1uqev3#

如何使用dive调试优化后的二进制文件?在使用Datadog提供的cdktf Go绑定时,我遇到了相同的问题,这一行似乎是问题所在:github.com/cdktf/cdktf-provider-datadog-go/datadog/v5/dashboard。这使得使用Go变得困难。

相关问题