デバッグ
traceback / breakpoint / set_breakpoint / clear_breakpoint / debugger_enabled
Luaデバッガ(ブレークポイント・ステップ実行・変数の表示)とスタックトレースの関数です。使い方は デバッガとサンドボックス を参照してください。
デバッガは設定アプリの「その他」→「Luaデバッガ」を入れたときだけ有効です。有効にした後に開いたLuaアプリから効きます。無効の間、breakpoint / set_breakpoint は何もせず false を返します。
pico.traceback
pico.traceback([message: string]) -> string
今のスタックトレースを文字列で返します。1行が1段で、main.lua:12 update の形(ファイル名:行 関数名)です。message を渡すと先頭の行に付けます。標準の debug.traceback の代わりです(debug ライブラリはサンドボックスで外してあります)。
local ok, err = pcall(do_something)
if not ok then pico.log(pico.traceback(err)) end
pico.breakpoint
pico.breakpoint([message: string]) -> boolean
デバッガが有効ならその場で止まり、デバッガの画面を出します(JavaScriptの debugger; と同じ)。続行すると true を返します。デバッガの画面で「停止」を押すとスクリプトはそこで打ち切られます(pcall でも捕まえられません)。無効なら止まらずに false を返します。
pico.set_breakpoint
pico.set_breakpoint(file: string, line: integer) -> boolean
行のブレークポイントを置きます。file はファイル名だけ("main.lua")でも、アプリのフォルダからのパス("テトリス/main.lua")でもかまいません。置けたら true(デバッガが無効・16個を超えた場合は false)。
pico.clear_breakpoint
pico.clear_breakpoint([file: string, line: integer]) -> (なし)
引数を渡せばそのブレークポイントを、省略すれば全部を外します。
pico.debugger_enabled
pico.debugger_enabled() -> boolean
このアプリでデバッガが有効か。