Lua runtime

19 views
Skip to first unread message

Denis Dos Santos Silva

unread,
May 14, 2015, 6:59:36 PM5/14/15
to lua...@googlegroups.com
Bem, gostaria de saber se é possível saber:

a) determinar o nome da function, linha, nome do arquivo ?

em C uso
__FUNCTION__
__LINE__
__FILE__

respectivamente


exemplo:
-- BOF
function soma(a, b)
  print('soma()');
  return (a+b);
end


soma(3,9);
-- EOF

Qualquer ajuda neste sentido é de bom grado.


Luiz Henrique de Figueiredo

unread,
May 15, 2015, 6:49:16 AM5/15/15
to lua...@googlegroups.com
> a) determinar o nome da function, linha, nome do arquivo ?
>
> em C uso
> __FUNCTION__
> __LINE__
> __FILE__

(Para que você quer essa informação?)

Experimente usar a biblioteca de debug:

function soma(a, b)
print('soma()');
local t=debug.getinfo(1)
--for k,v in pairs(t) do print(k,v) end
print(t.name)
print(t.currentline)
print(t.source:sub(2))
return (a+b);
end


soma(3,9)

Denis Dos Santos Silva

unread,
May 15, 2015, 9:39:32 PM5/15/15
to lua...@googlegroups.com
Luiz respondendo a sua pergunta.

(Para que você quer essa informação?) 

a ideia é: logging/trace remoto (algo parecido com o syslogd do linux).

Denis Dos Santos Silva

unread,
May 15, 2015, 11:16:34 PM5/15/15
to lua...@googlegroups.com
compartilhando o resultado ( a versão 'com rede' foi suprimida pq pra reproduzir teria que ir mais coisas )

valeu

-- .'. -------------------------------------------------------- .'. --
getinfo = debug.getinfo;
sprintf = string.format;
xprint  = print;

function emulation(x)

local fn = sprintf('%s()', x.name);   -- __FUNCTION__
local fi = x.short_src; -- __FILE__
local ln = x.currentline; -- __LINE__

return sprintf( '[DEBUG] %s %s:%s', fn, fi, ln );

end


function soma(a, b)
xprint( emulation(getinfo(1)) );

return ( tonumber(a) + tonumber(b) );
end


soma(10, 19);


-- .'. -------------------------------------------------------- .'. --


Em quinta-feira, 14 de maio de 2015 19:59:36 UTC-3, Denis Dos Santos Silva escreveu:
Reply all
Reply to author
Forward
0 new messages