Comment puis-je extraire le corps de la fonction (en tant que chaîne)? Par exemple, j'appelle la fonction C, extraire la fonction de la pile, vérifier si le type est LUA_TFUNCTION
et que dois-je faire pour obtenir son corps?Extraire le corps de la fonction
Répondre
Lorsque la fonction est sur la pile, elle a déjà été compilée. Le mieux que vous pouvez essayer est lua_dump
puis decode the bytecode.
La bibliothèque de débogage peut le faire. L'API Lua C ne l'a pas, vous voudriez appeler une fonction Lua à cet effet.
Vous pouvez appeler lua_getinfo
avec un paramètre de chaîne "S", puis vérifier le membre "source" de la structure lua_Debug. Si cette chaîne commence par '@', c'est un nom de fichier, et vous devrez relire le fichier si vous voulez la source (Lua ne lit le fichier que de façon incrémentielle pour charger la fonction et ne l'a jamais sauvegardée sous forme de chaîne). Dans le cas contraire, son contenu sera la chaîne chargée que le morceau de la fonction a été définie.
Notez que dans les deux cas, le source
retourné sera l'ensemble morceau qui a défini la fonction en question. Vous pouvez restreindre la chaîne à cette seule fonction en utilisant les autres champs définis dans la structure: notez toutefois que cela ne garantit pas que vous pourrez recharger cette chaîne pour obtenir le même comportement (la définition de la fonction peut se référer à des variables définies dans une portée externe, par exemple).
- 1. expression régulière - corps de la fonction extraction
- 2. clang - Obtenir le corps de la fonction
- 3. Corps de la fonction attendu après le déclarateur de fonction
- 4. Quitter la fonction sur le corps onLoad
- 5. Vim: remplacer le texte dans le corps de la fonction
- 6. Extraire la classe de corps pour l'utiliser dans Scss
- 7. jQuery - manquant} après corps de la fonction
- 8. Comment extraire le corps du message HTTP dans BaseHTTPRequestHandler.do_POST()?
- 9. fonction d'appel défini dans le corps de la tête
- 10. comment l'URL dans le corps de la fonction est compilée
- 11. Expression régulière PHP pour extraire le texte entre guillemets dans le corps de la balise
- 12. exceptions Fonction-corps
- 13. Comment utiliser un paramètre de fonction sans le mentionner dans le corps de la fonction?
- 14. fonction php pour extraire le lien de la chaîne
- 15. Comment extraire href d'un courriel de corps, en Perl?
- 16. "la fonction a déjà un corps"
- 17. Comment mvc HtmlHelper DisplayFor fonction extraire le chemin complet de la propriété de la fonction lambda?
- 18. Insérer un argument de fonction en tant que chaîne dans le corps de la fonction
- 19. Javascript - L'appel de fonction n'entrera pas dans le corps de la fonction
- 20. Appel de la fonction JavaScript avant la fin du corps
- 21. Modifier le corps du texte des objets de fonction existants
- 22. Besoin de la fonction mouseover de l'ensemble du corps
- 23. Knockout - La valeur de la variable contient le corps de la fonction
- 24. php extraire du texte/du corps du message
- 25. Java Script appel de fonction sur la charge du corps
- 26. Retour de la fonction JavaScript au corps HTML
- 27. Intrigué par l'évaluation du corps de la fonction
- 28. Knockout propriété calculée sorties corps de la fonction
- 29. Problème Java RegEx: Corps de la fonction correspondante
- 30. Erlang exmpp obtenir le corps de Packet
-1 Toutes les fonctions de la bibliothèque de débogage sont définies en termes de fonctions API, telles que [lua_getinfo] (http://www.lua.org/manual/5.1/manual.html#lua_getinfo). –