]>
Commit | Line | Data |
---|---|---|
1 | -- trace calls | |
2 | -- example: lua -ltrace-calls bisect.lua | |
3 | ||
4 | local level=0 | |
5 | ||
6 | local function hook(event) | |
7 | local t=debug.getinfo(3) | |
8 | io.write(level," >>> ",string.rep(" ",level)) | |
9 | if t~=nil and t.currentline>=0 then io.write(t.short_src,":",t.currentline," ") end | |
10 | t=debug.getinfo(2) | |
11 | if event=="call" then | |
12 | level=level+1 | |
13 | else | |
14 | level=level-1 if level<0 then level=0 end | |
15 | end | |
16 | if t.what=="main" then | |
17 | if event=="call" then | |
18 | io.write("begin ",t.short_src) | |
19 | else | |
20 | io.write("end ",t.short_src) | |
21 | end | |
22 | elseif t.what=="Lua" then | |
23 | -- table.foreach(t,print) | |
24 | io.write(event," ",t.name or "(Lua)"," <",t.linedefined,":",t.short_src,">") | |
25 | else | |
26 | io.write(event," ",t.name or "(C)"," [",t.what,"] ") | |
27 | end | |
28 | io.write("\n") | |
29 | end | |
30 | ||
31 | debug.sethook(hook,"cr") | |
32 | level=0 |