3

luaの関数内で関数の呼び出し元を取得するにはどうすればよいですか?

具体的には、(印刷などのコマンド出力でのデバッグ目的で)共通の関数が呼び出されたときにログに記録し、どこから呼び出されたかを示す機能を探しています。

これは、たとえば、呼び出し元のファイル名だけである可能性があります

すなわち

File 1 - Has commonly used function 

File 2 - Calls of the the file one functions

PSマッド-これを行うと実際にゼロになります-これは正常ですか?この場合、詳細情報を取得する方法はありません。

呼び出されたファイル;

SceneBase = {}
  function SceneBase:new(options)
  end
return SceneBase

呼び出しファイル:

require("views.scenes.scene_base")
local scene = SceneBase.new()
4

2 に答える 2

5

debug.getinfo(2).name関数が文字列である場合は、呼び出し元の関数の名前が表示されます。匿名関数の場合は、を取得します。nil文字列キー以外のものを使用してテーブルに格納されている場合は、を取得します?

function foo() print(debug.getinfo(2).name) end

-- _G["foo"] => function name is a string
function bar() foo() end
bar() --> 'bar'

-- _G[123] => function name is a number
_G[123] = function() foo() end
_G[123]() --> '?'

-- function has no name
(function() foo() end)()  --> 'nil'
于 2012-05-14T15:20:25.727 に答える
0

Luaデバッグライブラリを使用すると、スタックトレースを取得できます。

于 2012-05-14T06:09:13.703 に答える