是否可以在调试期间在 VSCode 中预览 github.com/shopspring/decimal 值?

Is it possible to preview github.com/shopspring/decimal values in VSCode during debugging?

提问人:Alex 提问时间:5/11/2023 最后编辑:Zeke LuAlex 更新时间:5/16/2023 访问量:138

问:

这是调试期间 vscode 中 Go 中 normal / 变量的预览。int64float64

enter image description here

这就是使用 Decimal 库中的变量时的样子。enter image description here

如果这是可能的,那么调试就会容易得多。现在,如果没有日志,就不可能成为值,如果没有日志,则需要重新生成并重新启动项目。

关于如何实现它的任何想法 - 也许是一个插件或某种表达方式? 或者也许有人知道如何为此编写插件/扩展?

基本上是要查看我们需要调用的值。变量。String() 函数,但在粘胶调试期间无法调用函数。或者我只是不知道怎么做。

多年来,我一直在使用这个称为 Decimal (https://github.com/shopspring/decimal) 的任意精度包,这很痛苦,我终于想让它工作。

是的,在这个例子中,你可以点击展开 3 次,然后取值 2345454 并取 exp:-3,然后在你的脑海中放一个点,得到 2345.453,但这并不理想,我认为它并不总是有效无论如何,尤其是对于低于零的值。

Go decimal vscode-debugger 深入研究

评论

1赞 icza 5/11/2023
您可以尝试添加一个监视表达式,调用其方法:。不过,它并不总是对我有用(它适用于标准库中的类型,例如 )。String()call fff.String()big.Int

答:

1赞 Zeke Lu 5/11/2023 #1

展开@icza的评论。

call fff.String()在我的电脑上不起作用。它的错误是:github.com/shopspring/decimal

(dlv) call t.String()
> main.main() ./main.go:20 (PC: 0x49ecbf)
Command failed: write out of bounds

我的系统是.而且我认为它不适用于所有 64 位系统。linux/amd64

当前版本 (1.20.2) 中存在一个错误。我刚刚提交了错误报告并发送了修复程序dlv

更新

修复程序已合并。您可以更新以获取此修复程序:dlv

$ go install github.com/go-delve/delve/cmd/dlv@master

以下是此修复的结果:

vs-code debug view

评论

1赞 Alex 5/14/2023
这真是太神奇了。我已经忍受了多年。我不得不说这有点怪异,但我一直在到处使用 Decimal,即使我可以只使用 float64。因此,无法预览它的生活是非常痛苦的。你不仅指出了一个问题,而且报告了它并解决了它。明!我衷心祝愿你在工作和生活中一切顺利。