Отладка в Мата - PullRequest
       13

Отладка в Мата

1 голос
/ 26 июня 2019

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 голосов
/ 01 июля 2019

Похоже, что в mata единственным средством, аналогичным команде trace Stata, является режим matalnum:

. set matalnum on

. mata: foo(3,4)
                   foo():  3200  conformability error [5]
                 <istmt>:     -  function returned error [1]
r(3200);

В этом случае [5] указывает номер строки, где произошла ошибкапроисходит.

...