2011-01-18 4 views
2

私は現在、次のようにLUA_MASKCALLを使用して取り付けられており、フック関数が実装フックでLuaのスクリプトを実行しています:現在実行中の関数の名前を調べるには、どのようにしてLuaフックを使うのですか?

void LuaHook(lua_State *L, lua_Debug *ar) { 
    switch(ar->event) { 
     case LUA_HOOKCALL: 
      lua_getinfo(L, ">n", ar); 
      //breakpoint here... 
     } break; 
     default: 
      break; 
    } 
} 

私はと呼ばれる関数の名前を取得したいが、私はそれをやっているかわからないでしょうそれは私に何も与えてくれないようだからです(ブレークポイントは適切なタイミングで打ち込まれます)。呼び出される関数は、奇妙に見える名前を持つバインドされたC関数です。全体的にlua_getinfoは私にとって完全な謎であり、ドキュメンテーションはどちらかのことを明確にしていないので、どんな助けもこの文書で大いに評価されるでしょう。

+0

知らんを気にしないが、Luaの参考に、彼らはlua_getinfo(L、「> N」、&AR)を呼んだ、アンパサンドは、あなたのコードに欠けている、または私が間違っていますか? – jpjacobs

+0

これは、arが 'lua_Debug ar;'に定義されているためです。 (ポインタではない)。私がこのような誤りを犯した場合、それは編集されませんでした。 – thehan

答えて

3

lua_getstackトリックはそう

関連する問題