亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go stack trace:在某些函數調用參數或返回值之后的問號(?)是什么意思?

go stack trace:在某些函數調用參數或返回值之后的問號(?)是什么意思?

波斯汪 2022-12-19 10:33:48
我正在嘗試調試泄漏的 goroutines(使用 Gomega 的gleak)。當單元測試結束時,一些 goroutines“頑固地”堅持不終止,gleak轉儲罪魁禍首及其堆棧跟蹤。這些堆棧跟蹤中的一些調用在其參數或返回值中甚至包含幾個問號,例如:foo.(*Fooler).Foo(0x40003efa40, {0xeeb638?, 0x40005bc580}, {0x400013a000?, 0x6, 0xd9c3a4?}) at foo.go對應的接收函數簽名如下:func (f *Fooler) Foo(context.Context, []string)我檢查了幾篇關于“解釋 golang 堆棧跟蹤”的帖子/文章/問題,尤其是如何解釋 Go stacktrace,但沒有在 Go 堆棧跟蹤中發現任何問號。我發現解釋的示例從未提及任何有問題的(?)調用參數或返回值。那么堆棧跟蹤中出現問號的原因是什么?這可能與寄存器中傳遞的參數有關,并且無法正確恢復堆棧跟蹤嗎?
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

來自https://go.dev/doc/go1.18#runtime

Go 1.17 總體上改進了堆棧跟蹤中參數的格式,但可能會為寄存器中傳遞的參數打印不準確的值。Go 1.18 通過在每個可能不準確的值后打印一個問號 (?) 改進了這一點。


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號