4

スクリプトを効率的にデバッグする方法がわかりません。Python のようなスタック出力が必要ですが、デフォルトでは Lua/C にはこれがありません。それを有効にする方法がわかりません。または単に、スクリプトからエラー出力を取得する方法は?

4

2 に答える 2

6

おそらく、xpcall と debug.traceback の組み合わせを探しているでしょう。xpcall を使用してエラー ハンドラを渡し、debug.traceback を使用してスタック トレースを取得できます。

function functionThatMayFail()
  error('Failed')
end
local success, result = xpcall(functionThatMayFail,
  function(err) return debug.traceback(err) end)
print(success, result)

このコードは以下を出力します:

false   xpcall.lua:2: Failed
stack traceback:
    xpcall.lua:6: in function <xpcall.lua:6>
    [C]: in function 'error'
    xpcall.lua:2: in function <xpcall.lua:1>
    [C]: in function 'xpcall'
    xpcall.lua:5: in main chunk
    [C]: ?
于 2012-09-16T20:44:43.790 に答える
0

Lua インタープリターは、デフォルトでエラー出力を生成します。例(このスクリプトにタイプミスを導入しました):

$ lua random.lua 
lua: random.lua:6: attempt to call global 'xists' (a nil value)
stack traceback:
    random.lua:6: in main chunk
    [C]: ?

エラー出力の観点から、あなたがやろうとしていることを明確にすることはできますか?

于 2012-09-16T15:13:19.017 に答える