From 4d9e30aff34d5c37c4a43e7ed6af8ed4c8b621ca Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 28 Oct 2020 23:05:15 +0100 Subject: 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. --- tools/linedebug.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tools/linedebug.lua (limited to 'tools/linedebug.lua') diff --git a/tools/linedebug.lua b/tools/linedebug.lua new file mode 100644 index 00000000..96214cc8 --- /dev/null +++ b/tools/linedebug.lua @@ -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"); -- cgit v1.2.3