На просторах интернета есть скрипт на основе debug-библиотеки, встроенной в Луа. https://stackoverflow.com/questions/15725744/easy-lua-profiling Я - увы - ничего не понимаю в этом коде, но моих слабых способностей хватило, чтобы начать его использовать. До начала отслеживаемого куска ставится код:
Код
local calls, total, this = {}, {}, {}debug.sethook(function(event)
local i = debug.getinfo(2, "Sln")
if i.what ~= 'Lua' then return end
local func = i.name or (i.source..':'..i.linedefined)
if event == 'call' then
this[func] = os.clock()
else
local time = os.clock() - this[func]
total[func] = (total[func] or 0) + time
calls[func] = (calls[func] or 0) + 1
end
end, "cr")
--изучаемый код
Концовка:
Код
debug.sethook()
-- print the results
for f,time in pairs(total) do
print(("Function %s took %.3f seconds after %d calls"):format(f, time, calls[f]))
end
вместо print я вывожу эту строку в файл.
Скрипт работает и внутри колбека OnQuote показывает мои "личные" функции:
Но самое ценное - функцию получения стакана getQuoteLevel2 не показывает. Видимо, он понимает только пользовательские функции. Прошу подсказать, как в этот дебаггер добавить другую полезную информацию: --функции QLUA --пробегание циклов --переменные Спасибо за советы.