?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  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
  33.