Lua Memo

関数に関する情報を得る

debug.getinfo (function [, what])

関数に関する情報をテーブルに入れて返す。

関数を直接指定するか数値を指定することができる。 数値は、関数が走っているコールスタックのレベルを意味し、レベル0は現在の関数 (getinfo 自身)、 レベル1は getinfo を呼び出した関数、レベル2は、getinfoを呼び出した関数を呼び出した関数...。

function がアクティブな関数の数よりも大きい数値であれば getinfo は nil を返す。

what はどのフィールドを埋めるかを文字列で記述する。戻り値のテーブルには lua_getinfo から返されるフィールドがすべて含まれている。 what のデフォルト値では有効なすべての情報を取得する。 もし存在すれば、`f´ オプションは func という名前のフィールドにその関数自身を入れる。

sample

debug.getinfo(print) は print 関数に関するすべての利用可能な情報を持つテーブルを返す。

info = debug.getinfo(print)
for k,v in pairs(info) do
	print(k,v)
end
--[[
nups	0
what	C
func	function: 00157550
lastlinedefined	-1
source	=[C]
currentline	-1
namewhat	
linedefined	-1
short_src	[C]
--]]

ユーザーが定義した関数について。

nups	0
what	Lua
func	function: 002DB4C8
lastlinedefined	3
source	@test.lua
currentline	-1
namewhat	
linedefined	1
short_src	test.lua

関数の中で利用する場合

function hoge(a,b,c)
	info = debug.getinfo(1)
	for k,v in pairs(info) do
		print(k,v)
	end
end
hoge()
--[[
source	@test.lua
what	Lua
func	function: 00E1B4C8
nups	0
short_src	test.lua
name	hoge
currentline	2
namewhat	global
linedefined	1
lastlinedefined	6
>Exit code: 0
--]]