lua_sethook
デバッグフック関数を設定します。
[-0, +0, -]
c
int lua_sethook (lua_State *L, lua_Hook f, int mask, int count);
説明
デバッグフック関数を設定します。
引数f
はフック関数です。mask
はフックが呼び出されるイベントを指定し、LUA_MASKCALL
, LUA_MASKRET
, LUA_MASKLINE
, LUA_MASKCOUNT
の定数のビット単位のORによって形成されます。count
引数は、mask
がLUA_MASKCOUNT
を含む場合にのみ意味があります。各イベントについて、フックは以下に説明されるように呼び出されます:
- コールフック:インタプリタが関数を呼び出すときに呼び出されます。フックはLuaが新しい関数に入った直後、関数がその引数を得る前に呼び出されます。
- 戻りフック:インタプリタが関数から戻るときに呼び出されます。フックはLuaが関数を離れる直前に呼び出されます。関数によって返される値にアクセスすることはできません。
- ラインフック:インタプリタが新しいコード行の実行を開始しようとするとき、またはコード内で後戻りするとき(同じ行に戻る場合でも)に呼び出されます。(このイベントはLuaがLua関数を実行している間のみ発生します。)
- カウントフック:インタプリタがカウント命令ごとに実行するときに呼び出されます。(このイベントはLuaがLua関数を実行している間のみ発生します。)
フックはmask
をゼロに設定することで無効になります。
サンプルコード
c
lua_sethook(L, my_hook, LUA_MASKCALL | LUA_MASKRET, 0);
このコードは、関数呼び出しと関数からの戻り時にフック関数my_hook
を呼び出すように設定します。
互換性
- Lua5.1
関連項目
- lua_gethook
- lua_Hook