- -- trace calls 
- -- example: lua -ltrace-calls bisect.lua 
-   
- local level=0 
-   
- local function hook(event) 
-  local t=debug.getinfo(3) 
-  io.write(level," >>> ",string.rep(" ",level)) 
-  if t~=nil and t.currentline>=0 then io.write(t.short_src,":",t.currentline," ") end 
-  t=debug.getinfo(2) 
-  if event=="call" then 
-   level=level+1 
-  else 
-   level=level-1 if level<0 then level=0 end 
-  end 
-  if t.what=="main" then 
-   if event=="call" then 
-    io.write("begin ",t.short_src) 
-   else 
-    io.write("end ",t.short_src) 
-   end 
-  elseif t.what=="Lua" then 
- -- table.foreach(t,print) 
-   io.write(event," ",t.name or "(Lua)"," <",t.linedefined,":",t.short_src,">") 
-  else 
-  io.write(event," ",t.name or "(C)"," [",t.what,"] ") 
-  end 
-  io.write("\n") 
- end 
-   
- debug.sethook(hook,"cr") 
- level=0 
-