打印Golang中的所有本地变量

7
我想知道如何在golang中枚举所有本地变量的名称和值。这样可以有效地调试go代码。
是的,我非常清楚golang现在的gdb支持有限。
这个在stackoverflow上广泛使用的线程没有提到golang。
我真诚地寻找解决方案(我认为其他人也很好奇)。
非常感谢。

除非反思您的堆栈帧、找到代码并解析它,否则我怀疑这是不可能的。即使如此,我也不确定您是否可以通过反射获得它们的值。只有它们的名称。 - captncraig
我认为你做不到。 - twotwotwo
更新:Delve是针对Golang的调试器,现在已经进入了1.0之前版本,并且支持OSX。虽然它还没有完全功能,但正在不断改进中。你应该去看看。 - user2324712
2个回答

2

这并非易事:

  • gotype 可以对代码进行静态分析并打印所有变量(但不包括它们的值)。
  • go-spew 可以打印变量的值(用于调试的 Go 数据结构深度美化器),但这就像是增强版的 printf,而不是像 'gdb' 一样的调试会话。

2

有一个叫做dlv的工具,你可以使用print命令进行实验,这是目前最接近实时调试器的工具。

否则,像@VonC提到的那样,gotype/go-spew是可行的方法。


谢谢。我知道DLV,但它还没有支持OSX。 - user2324712

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接