Go 如何在delve mozilla rr(录制重播)重播会话期间显示decimal.decimal的浮点值
如何在delve会话中轻松查看十进制的浮点值。 特别是在mozilla rr录制的Go 如何在delve mozilla rr(录制重播)重播会话期间显示decimal.decimal的浮点值,go,delve,Go,Delve,如何在delve会话中轻松查看十进制的浮点值。 特别是在mozilla rr录制的dlv replay会话中 (dlv) args underlyingPx = github.com/shopspring/decimal.Decimal {value: ("*math/big.Int")(0xc00101cca0), exp: 3} (dlv) p underlyingPx github.com/shopspring/decimal.Decimal { value: *math/big
dlv replay
会话中
(dlv) args
underlyingPx = github.com/shopspring/decimal.Decimal {value: ("*math/big.Int")(0xc00101cca0), exp: 3}
(dlv) p underlyingPx
github.com/shopspring/decimal.Decimal {
value: *math/big.Int {
neg: false,
abs: math/big.nat len: 1, cap: 1, [8],},
exp: 3,}
谢谢根据,有一种方法可以接收此信息:
// Float64 returns the nearest float64 value for d and a bool indicating
// whether f represents d exactly.
// For more details, see the documentation for big.Rat.Float64
func (d Decimal) Float64() (f float64, exact bool) {
return d.Rat().Float64()
}
在提供的示例中,只需调用此方法即可:
(dlv) p underlyingPx.Float64()
我分叉了delve工具并改进了
p
命令:
演示:
(dlv)p im
github.com/shopspring/decimal.decimal{
值:*math/big.Int{
负数:错,,
abs:math/big.nat len:2,cap:7,[467022713665329561610618058790999],},
exp:-33,}
value:0.19586861307716508不幸的是,在dlv replay
失败输出的mozilla rr replay会话期间,我们无法调用方法:(dlv)p body.Amount.Float64()命令失败:不使用“call”@whunmr不允许函数调用,您可以尝试(dlv)调用underyingpx.Float64()
?如果可行,我将编辑答案。不适用于调用
,输出为“命令失败:不支持的数据包$G000000000060…在寄存器写入期间”。我认为可行的方法可能是使用python脚本解析p
命令输出:github.com/shopspring/decimal.decimal{value:*math/big.Int{neg:false,abs:math/big.nat-len:1,cap:1,[10],},exp:0,}
(dlv) p im
github.com/shopspring/decimal.Decimal {
value: *math/big.Int {
neg: false,
abs: math/big.nat len: 2, cap: 7, [4670227136653295616,10618058790999],},
exp: -33,}
value: 0.19586861307716508 <---- this is the added output