Erlang - 自动将调试/跟踪语句添加到代码

时间:2017-04-20 18:33:45

标签: debugging erlang tracing

问题:需要每天运行许多带Common Test套件的Erlang模块,以检查是否没有引入新的错误。对于那些引入错误的情况,我们希望在测试用例失败之前找到确切的位置和可能的程序状态。由于时间限制,无法使用dbg或其他调试工具进行调试。通常测试套件包含一些打印语句,允许以某种方式查明错误的位置,但它们的频率太低而无法生效。通常手动添加调试语句,但这需要时间。

建议的解决方案: 我想获取给定测试用例或整个Common Test套件的代码,并为每行测试代码创建至少包含行号和行内容的打印输出。例如代码:

       L = [spawn(mod, loop, [0]) || _ <- lists:seq(1,10)],
       [H|T] = L,
       PidList = T ++ [self()],

我想将其转换为至少类似的东西:

 io:format("Line ~p : ~p",[LineNumber1, LineContent1]),
 L = [spawn(mod, loop, [0]) || _ <- lists:seq(1,10)],
 io:format("Line ~p : ~p",[LineNumber2, LineContent2]),
 [H|T] = L,
 io:format("Line ~p : ~p",[LineNumber3, LineContent3]),
 PidList = T ++ [self()],

理想情况下,它还会打印测试用例中每个变量的值。

问题: 这是获取有关测试代码中错误行踪的更多信息的正确方法吗?如果是这样,我应该使用哪种编程语言或工具来实现这种效果?

0 个答案:

没有答案