godebug使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。结果就是一个全功能的调试器,完全可以移植到不同平台。事实上,由于有了gopherjs ,你也可以在浏览器上进行调试:
点击此处尝试原文调试窗口。通过原文的“DEBUG IT”按钮,你可以编辑程序并重新调试它。
工作原理
下面这张是描述上面例子的矢量图:
从中可以看出原始代码转换了两次:第一次godebug插入调试instrumentation,然后gopherjs将结果编译成JavaScript。
让我们看一下instrumentation步骤,以下是godebug插入的调用:
使用godebug
Step 1.安装
Step 2.设置断点
在任何想要断点的地方添加这个标记:
由于断点是源代码的一部分,你可以将自己的逻辑置于他们周围。假设你正在运行一个表格驱动多情况测试,其中一个测试输入“weird string”的情况是失败的,那么你可以将下面这个断点放入测试当中:
godebug test将于标记处暂停程序,方便定位。
Step 3.运行程序
使用godebug运行命令:
或者对测试来说 ,运行测试命令:
默认情况下,godebug只会添加调试instrumentation到package main(为了godebug运行)或者测试下的package(为了godebug测试)。这意味着在默认情况下,你无法进入来自导入包的函数。当需要的时候,执行下面这个行命令:
最后
godebug仍然还是一款需要打磨的新工具,目前存在的已知限制包括: