tools/linedebug.lua
author Kim Alvefur <zash@zash.se>
Wed, 28 Oct 2020 23:05:15 +0100
changeset 11197 5850d24a4ad3
permissions -rw-r--r--
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.

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");