diff options
author | Kim Alvefur <zash@zash.se> | 2020-10-28 23:05:15 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-10-28 23:05:15 +0100 |
commit | 4d9e30aff34d5c37c4a43e7ed6af8ed4c8b621ca (patch) | |
tree | d0e4f0ad1dc1f7d69c7cae986212b07b111be7c2 /tools/linedebug.lua | |
parent | 43ec58831c05914393b9931503d1f32f0ba72549 (diff) | |
download | prosody-4d9e30aff34d5c37c4a43e7ed6af8ed4c8b621ca.tar.gz prosody-4d9e30aff34d5c37c4a43e7ed6af8ed4c8b621ca.zip |
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.
Diffstat (limited to 'tools/linedebug.lua')
-rw-r--r-- | tools/linedebug.lua | 18 |
1 files changed, 18 insertions, 0 deletions
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"); |