Отслеживание исполнения Lua Sripts - PullRequest
0 голосов
/ 20 ноября 2018

Я знаю, что вы можете использовать библиотеку отладки lua, чтобы получить некоторую информацию о трассировке / отладке.Но информация в кусках.Поэтому мне интересно, есть ли способ отследить выполнение сценария Lua.Пошаговый процесс.это будет необходимо, и оно будет автоматически выполняться на каждом шаге выполнения Для создания отчета , например, следующего:

Called: function xyz  from : Table abc
It has n parameters
Param 1: apples
Param 2: oranges
.
.

It has m returns
return 1: red
return 2: yellow
.
.

Called: function xyz2  from : Table abc2
It has n parameters
Param 1: pears
Param 2: bananas
.
.
It has m reruns
return 1: heavy
return 2: light
.
.

and so on....

1 Ответ

0 голосов
/ 20 ноября 2018

Вот некоторый код, который раньше распространялся в тарболе Lua.Это с 2005 года и до сих пор отлично работает.

-- trace calls
-- example: lua -ltrace-calls bisect.lua

local level=0

local function hook(event)
 local t=debug.getinfo(3)
 io.write(level," >>> ",string.rep(" ",level))
 if t~=nil and t.currentline>=0 then io.write(t.short_src,":",t.currentline," ") end
 t=debug.getinfo(2)
 if event=="call" then
  level=level+1
 else
  level=level-1 if level<0 then level=0 end
 end
 if t.what=="main" then
  if event=="call" then
   io.write("begin ",t.short_src)
  else
   io.write("end ",t.short_src)
  end
 elseif t.what=="Lua" then
  io.write(event," ",t.name or "(Lua)"," <",t.linedefined,":",t.short_src,">")
 else
 io.write(event," ",t.name or "(C)"," [",t.what,"] ")
 end
 io.write("\n")
end

debug.sethook(hook,"cr")
level=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...