デバッグ奮闘記

デバッグログをファイルへ出力 PICO-8
デバッグログをファイルへ出力

PICO-8スネークゲーム「ピコニョロ」で、アイテム表示の実装の途中、思うような結果にならず、デバッグをして解決しました。

デバッグ方法は、PICO-8をコンソール(Macだとターミナルアプリ)から立ち上げて、printf()関数を実行すると、PICO-8上ではなく、コンソール側に文字列を表示できます(ファイルに出力も出来る)。

それを使い、裏側でどんな状態になっているのかを知り、不具合の原因を突き止めます。

今回は、プログラムの流れがおかしくなっていることがわかっていた(実行すると処理が遅くなる)ので、「どの様に動いているのか?」を知る仕組みを作りました。

ちなみに、ずっと実行していると、
「printh: too much log data(10mb max)」とエラーが出ました(printhの出力ファイルのサイズは、10Mバイト)。

まず何を出力するのかというと、

  • ループの処理の始まり
  • ループの処理の終わり
  • if文の結果の真偽
  • チェックされる変数の内容

となります。

そして出力した結果の一部です。

デバッグログをファイルへ出力
デバッグログをファイルへ出力

このログを見て、

  • ランダムとはいえ、ループ回数が異様に多い
  • あるループが終わる毎にテーブルに加える要素数が増えている

ということがわかり、原因はループの入れ子にループがなっているが、add(テーブル, 要素)の命令の記述場所が、ループの内側に書いていたことがわかりました。

一日考えていたけれど解らず、次の日にデバッグログをファイルに出力して、バグの原因がわかりました。

いやぁ、嬉しかった。

これからも、この方法で解析&デバッグをしていきたいと思います。

コメント

タイトルとURLをコピーしました