Skip to content

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引数は、maskLUA_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