tools/linedebug.lua
author Kim Alvefur <zash@zash.se>
Sun, 24 Mar 2024 20:39:42 +0100
changeset 13466 720aed1f5cf2
parent 11197 5850d24a4ad3
permissions -rw-r--r--
util.startup: Check root after detecting platform and reading config (thanks SigmaTel71) Ensures that startup.detect_platform() runs so know whether to use the POSIX method of checking the current user or something else. Also after reading the config so we know whether the root override setting is set.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11197
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local data = {}
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local getinfo = debug.getinfo;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
local function linehook(ev, li)
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
	local S = getinfo(2, "S");
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
	if S and S.source and S.source:match"^@" then
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
		local file = S.source:sub(2);
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
		local lines = data[file];
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
		if not lines then
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
			lines = {};
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
			data[file] = lines;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
			for line in io.lines(file) do
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
				lines[#lines+1] = line;
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
			end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
		end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
		io.stderr:write(ev, " ", file, " ", li, " ", lines[li], "\n");
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
	end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
end
5850d24a4ad3 tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
debug.sethook(linehook, "l");