Skip to content

lua_Hook

デバッグフック関数のための型です。

c
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);

説明

デバッグフック関数のための型です。

フックが呼び出されるとき、そのar引数のeventフィールドはフックをトリガーした特定のイベントに設定されます。Luaはこれらのイベントを次の定数で識別します:LUA_HOOKCALL, LUA_HOOKRET, LUA_HOOKTAILRET, LUA_HOOKLINE, LUA_HOOKCOUNT。さらに、行イベントの場合、currentlineフィールドも設定されます。arの他のフィールドの値を取得するには、フックはlua_getinfoを呼び出さなければなりません。戻りイベントの場合、eventLUA_HOOKRET(通常の値)またはLUA_HOOKTAILRETになります。後者の場合、Luaはテールコールを行った関数からの戻りをシミュレートしています。この場合、lua_getinfoを呼び出すことは無意味です。

Luaがフックを実行している間、他のフックへの呼び出しは無効になります。したがって、フックがLuaを呼び出して関数やチャンクを実行する場合、この実行はフックへの呼び出しなしで行われます。

サンプルコード

c
void my_hook(lua_State *L, lua_Debug *ar) {
    if (ar->event == LUA_HOOKCALL) {
        printf("関数が呼び出されました\n");
    }
}

このコードは、関数呼び出しイベントでメッセージを表示するデバッグフックを定義します。

互換性

  • Lua5.1

関連項目

  • lua_sethook
  • lua_gethook