[トップ][編集][本文][編集履歴][一覧][最近の更新][->English]

Note:デバッグの仕方


ラッピング例

        repeat 5
                wait 10: gosub *sub
                mes cnt
                repeat 3
                        wait 10: mes cnt
                loop
        loop
        stop
*sub
        mes rnd(10)
        return

このプログラムはバグはありませんが、大量のmes命令が仕込まれています。ここでどのmes命令がどのような順番で実行されているのか調べたい時に、全てのmes命令の前に何かコードを挿入するのは非現実的です。
そこでmes命令に『自分自身が書かれている行番号を自動的に表示させる』処理を上乗せさせます。これがラッピングという考え方です。
ではmes命令をラッピングします。上のコードの先頭に次のコードを挿入します。

#define MY_DBG 0 ; 0=OFF / 1=ON

#if MY_DBG
        //      既存の命令をラッピング( 例:mesをラッピング )
        #undef mes ; mesをHSPから削除
        #define mes(%1) mes@hsp ""+__line__+":"+(%1)
#endif

再び実行してみてください。何も変わりませんね。これはラッピングがデバッグフラグMY_DBGでコントロールされているからです。フラグをONにして再び実行してみてください。
行番号が表示されましたね。この行番号の表示をやめたいときは、単にMY_DBGをOFFにするだけでOKです。