関数本体を(文字列として)どのように抽出できますか?例えば、私はC関数を呼び出し、スタックから関数を抽出し、型がLUA_TFUNCTION
であるかどうかを確認し、その体を得るために何をする必要がありますか?関数本体を抽出する
0
A
答えて
2
この関数がスタック上にある場合、関数はすでにコンパイルされています。あなたがしようとすることができる最高はlua_dump
であり、次にdecode the bytecodeです。
-2
デバッグライブラリでこれを行うことができます。 Lua C APIにはありません。この目的のためにLua関数を呼びたいと思うでしょう。
2
文字列パラメータ「S」を使用してlua_getinfo
を呼び出し、lua_Debug構造の「source」メンバをチェックすることができます。その文字列が '@'で始まる場合はファイル名であり、ソースを必要とする場合はファイルを再読み込みする必要があります(Luaはファイルをインクリメンタルに読み取って関数をロードし、文字列として保存しません)。それ以外の場合、その内容は機能がで定義されたチャンクとしてロード文字列になります。
なお、いずれの場合、当該機能を定義したチャンク全体が返されますsource
インチ構造体に定義されている他のフィールドを使用して、その関数だけに文字列を絞り込むことができます。ただし、同じ動作を得るために、その文字列を読み込むことはできません(関数定義はたとえば、外部スコープで定義された変数を参照してください)。
関連する問題
- 1. 関数呼び出しから関数呼び出し名を抽出する
- 2. 抽象基本クラスメンバ関数から純粋仮想関数を呼び出しますか?
- 3. sqlplusで関数またはプロシージャの本体をダンプする
- 4. PHPの抽出オブジェクトサイクリングオブジェクト自体
- 5. BASHでは、関数本体で関数名を取得できますか?
- 6. 再帰関数:PHP関数自体を呼び出す
- 7. p.value適用関数からの抽出
- 8. 名前付き関数に無名関数を抽出する方法は?
- 9. 任意の関数から関数のパラメータとデフォルト値を抽出する
- 10. ソースファイルから単一の関数を抽出する方法
- 11. 再帰関数からベースケースのリターンを抽出するには?
- 12. リンクから文字列を抽出するPHP関数
- 13. R関数のリストからベクトルを抽出する
- 14. SQLでユーザー定義関数を抽出する正規表現
- 15. 関数本体の内部から関数オブジェクトのプロパティへのアクセス
- 16. httprequestポスト本体の変数
- 17. 関数呼び出しでキーを押して本体に移動する方法
- 18. 基本的なC++関数のポインタと構造体
- 19. 関数の本体を文字列として取得する方法は?
- 20. バックエンドのLLVM/clangから基本ブロック/ CFGを抽出する
- 21. PythonリクエストからHTTPレスポンス本文を抽出するには?
- 22. 基本クラスを抽出するためのツール?
- 23. オーバーロード関数を(抽象ではない)基本クラスから呼び出す方法は?
- 24. 抽象関数ポインタ
- 25. Haskell - 代数的データ型から値を抽出する実装関数
- 26. 別のファイルからファイル構造体を抽出するC++?
- 27. 抽出コマンドライン引数
- 28. multinomial cv.glmnetの係数を抽出する
- 29. 小数点記号を抽出する
- 30. 複数の値を抽出するBash
-1すべてのデバッグライブラリ関数は、[lua_getinfo](http://www.lua.org/manual/5.1/manual.html#lua_getinfo)などのAPI関数の観点から定義されています。 –