Annotate

tools/linedebug.lua @ 13461:c673ff1075bd

mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
author Kim Alvefur <zash@zash.se>
date Sat, 23 Mar 2024 20:48:19 +0100
parent 11193:5850d24a4ad3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11193
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");