Я знаю, что вы можете использовать библиотеку отладки 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....

Вот код, который раньше распространялся в архиве 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
почему, если я добавлю что-нибудь, даже простой оператор печати, все развалится. Я поместил печать (t.name) после строки t = debug.getinfo (2), и вывод развалился. Я использую зеробрейн. Lua 5.1. Я пробовал везде заменить io.write на print, и это тоже все испортило. У меня нулевой опыт работы с io.write
@DaveKay, потому что print добавляет новую строку, а io.write - нет.
@Ihf, тогда как отлаживать lua? встроен в движок C / C++. Когда у вас нет доступа к движку и невозможно выполнить удаленную отладку по разным причинам. Я имею в виду, конечно, не везде, где размещаются операторы печати (потому что это то, что я буквально делаю сейчас). Где-то должен быть какой-то скрипт трассировки, который может отслеживать выполнение скриптов lua и создавать отчет
Это здорово, спасибо. Есть идеи, как фиксировать аргументы функции, возвращаемые значения и в какой таблице мы находимся в данный момент?