SyntaxHighlighter

---SyntaxHighlighter ウィジェット---

2015年3月25日水曜日

FlashAir上でLuaスクリプトのエラーを表示する

FlashAir III(W-03)でLuaスクリプトを動かす際、一番厄介なのは エラーメッセージが出力されないことだと思います。 文法ミス1つでもあればこう。
昔懐かしいCGIのよう。

PC上で試しに動かしてから書き込めばいいのですが、それも面倒といえば面倒。 しかし、Luaにはpcallという、エラーをハンドリングする機能があります。 それを使ってやると、FlashAir側には正常なように処理しつつ、Luaのエラーを ブラウザに出力することができます。 まず、debug.luaとして以下のものを用意。 f = loadfile("body.lua") local flag, ret = pcall(f) if not flag then
   print("HTTP/1.1 500 Internal Server Error\n\n") print("<pre>") print("!!! Lua error detected.!!!\n") print("------------\n") print(ret) print("\n------------\n") print("</pre>") else print("<!-- OK -->") end 次に、デバッグしたいLuaファイルをbody.luaとして用意。 ここでは以下のものをサンプルとして用意 print("<HTML><HEAD><TITLE>Hello World!!</TITLE>") print("<BODY><H1>Hello World!</H1>") error("Hell World") print("Have a nice day!") print("</body></html>") これらを同じフォルダに置き、debug.luaを実行。 ここでは、body.luaのほうにerror関数があるので、実行中にエラーが発生します。 そのため、body.lua単体で実行すると尻切れトンボになりますが debug.luaを通して実行すると
このようにエラー内容が表示されて停止します。 また、body.luaを次のようにしてみます。 print("WoW") HELLO print("WoW") body.luaを直接実行すると、HELLOが文法エラーのため、なにも実行されずに停止します。 debug.luaを通して実行すると
のように表示されます。 いかがでしょうか。 printの代わりにファイルに出力するようにすれば、自動実行や書き込み時実行の luaファイルも同様にデバッグ可能になると思います。 参考になると幸いです。

ちなみに、この機能も含めてブラウザ上で動く簡易IDEがあります。
https://sites.google.com/site/gpsnmeajp/tools/flashair_tiny_lua_editer

0 件のコメント:

コメントを投稿