デバッグprintfの仲間達

printfは複雑な挙動をするので信頼できないことが多い。おいつめられると以下のようなものをprintfがわりに使う。

デバッグwhile(1)
コードが止まるかどうかを判定することでフローを確認する。マシン語数命令で完結するのでかなり信頼できる。OS無し環境でも使えるのが嬉しい。Windows環境下ではプログラムを終了させるのが面倒。副作用が無いので時間かかっているだけなのか判定できない。
デバッグ *(int*)0 = 0; (デバッグSEGV)
プログラムが終了するかどうかを判定してフローを確認する。さらにcoreを吐かせたり、JITデバッグしたりしやすい。ライブラリを必要としないので、abortよりも信頼できるしバックトレースもきれいに出る。が、Windows GUIはたまに例外を握り潰してることがある気がする(やめてくれ)
デバッグexit(1)
プログラムが終了するかどうかでフローを確認する。coreを出されたりCPU時間使われるのが嫌なときに使う。
デバッグa
プログラムの途中に'a'を入れる。ちゃんとコンパイルされてるか信用できないときに使う。コンパイルエラーが出ない場合、見ているソースが違う等の問題がある。