如何检查 go lang 中的 panic nil 异常

问题描述 投票:0回答:0

远程服务器给出 panic nil 异常。这是堆栈跟踪

panic: runtime error: invalid memory address or nil pointer dereference                                                                                                                    │ │ [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xfb1fc4]                                                                                                                     │                                                                                                                                                                                          │ goroutine 486 [running]:                                                                                                                                                                   │ │ dockerhub.(*DockerHub).Authorize**(0x0, 0xc000964f00, 0x23, 0xc00151fc90, 0xd) **      

这是函数

  func (r *mydockerhub) Authorize(registry string) error {   return r.call.Authorize(registry) // This the place line number showing panic }

在我的本地,当我尝试使用 panic(errors.New("customized error")) 它给了我

panic({0x8facb40, 0xc0000137a0}) /usr/local/go/src/runtime/panic.go:890 +0x267 dockerhub.(*mydockerhub).Authorize**(0xc002ad6050, {0xc0029b06a8, 0x14})**

  1. Actual Authorize 只有字符串参数,为什么显示不同的参数数量?
  2. 使用堆栈跟踪我们可以找到为什么会出现这种恐慌吗?

我点击了这个堆栈跟踪调试链接https://www.ardanlabs.com/blog/2015/01/stack-traces-in-go.html据我了解mydockerhub是一个参数,如果是字符串,则为两个其他参数。所以无论我在本地尝试过什么,都会向我显示 Authorize*(0xc002ad6050, {0xc0029b06a8, 0x14})** 这是正确的。 但是在远程服务器中它显示了 6 个参数。这让我很惊讶。为什么它向我显示 6 个十六进制参数。

go error-handling
© www.soinside.com 2019 - 2024. All rights reserved.