在Mata中进行调试

时间:2019-06-26 09:11:05

标签: stata

Stata具有非常有用的调试功能,例如trace命令,它使程序员可以使用其解释的ado语言来跟踪有问题的代码行。

我想知道mata是否有类似之处?

考虑这个玩具示例:

mata:
void function foo(a, b)
{

  c = J(a, b, 5)
  c = c + 5

}
end

. mata
--------------------------------------- mata (type end to exit) ---------------------------
: foo(3,4)
                   foo():  3200  conformability error
                 <istmt>:     -  function returned error
r(3200);

: end
-------------------------------------------------------------------------------------------

未记录的matadebug模式似乎没有更多信息:

. set matadebug on

. mata
--------------------------------------- mata (type end to exit) ---------------------------
: foo(3,4)

execution begins..
                   foo():  3200  conformability error {29}
                 <istmt>:     -  function returned error {17}
r(3200);

: end
-------------------------------------------------------------------------------------------

方括号{29}{17}似乎没有任何有意义的含义。

在执行编译后的代码时,有没有办法以编程方式跟踪有问题的部分?

1 个答案:

答案 0 :(得分:0)

看来,在yum中,唯一类似于Stata的mata命令的功能是trace模式:

matalnum

在这种情况下,. set matalnum on . mata: foo(3,4) foo(): 3200 conformability error [5] <istmt>: - function returned error [1] r(3200); 表示发生错误的行号。