# HG changeset patch # User Kim Alvefur # Date 1603922715 -3600 # Node ID 5850d24a4ad36aa750b9f2c08dd3c5c132386e59 # Parent 11f285a439a48fadf5b75e3adac1d19d062a1262 tools/linedebug: Print each line of source executed The extremely verbose debug output. Nice for getting some idea which code runs most often, or where it pauses for no reason etc. diff -r 11f285a439a4 -r 5850d24a4ad3 tools/linedebug.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/linedebug.lua Wed Oct 28 23:05:15 2020 +0100 @@ -0,0 +1,18 @@ +local data = {} +local getinfo = debug.getinfo; +local function linehook(ev, li) + local S = getinfo(2, "S"); + if S and S.source and S.source:match"^@" then + local file = S.source:sub(2); + local lines = data[file]; + if not lines then + lines = {}; + data[file] = lines; + for line in io.lines(file) do + lines[#lines+1] = line; + end + end + io.stderr:write(ev, " ", file, " ", li, " ", lines[li], "\n"); + end +end +debug.sethook(linehook, "l");