DebugビルドとReleaseビルド

親切な開発環境を使うと、DebugビルトとReleaseビルドが最初から用意されています。何が違うのでしょう?

Debugビルドはデバッグしやすいようにできています。コンパイラの最適化は無しか最低レベルに設定されていて、1行ずつステップ実行することが可能です。

Releaseビルドはサイズ重視もしくは速度重視で最適化が設定されていて、実用性重視ですが、1行ずつステップ実行するのは難しくなります。ソースコード上で意味のないコードは削除されます。組み込みソフトウェアの場合、ソースコード上は意味がなく見えても、タイミング調整だったりハードウェアアクセスだったり、無駄に見えても必要なコードが存在しますので、そういう場合にはかならず volatile をつけて、確実にメモリアクセスが行われるようにする必要があります。

コメント