gdb の動作がおかしくなる可能性のある gcc オプションのリストを取得できるかどうか疑問に思っていました。
もちろん、最適化オプション (たとえば -O3) を使用すると gdb で奇妙な動作が発生することは誰もが知っていますが、そのような影響を与える可能性のある他のオプションにはどのようなものがあるでしょうか?
(現在、gdb で mpeg2 デコーダーを実行しようとしていますが、最適化フラグを削除した後でも奇妙な動作が発生します ...)
デバッグのために gcc を呼び出すときに、どのフラグを使用してはならないかを言うのは難しいと思います。gccのドキュメントでは、デフォルトのデバッグ フラグは-g
と-O2
であり、 using-g -O0 -fno-inline
は最適化と関数のインライン化を無効にすることに注意してください。
私の意見では、デバッグ プロセスを台無しにしないことを本当に保証したい場合は、-g -O0 -fno-inline
フラグを付けてコンパイルするだけです。
GCC ドキュメントに記載されているように、-Og を使用する必要があります。
-Og
デバッグ エクスペリエンスを最適化します。-Og は、デバッグを妨げない最適化を有効にします。これは、標準の編集-コンパイル-デバッグ サイクルに最適な最適化レベルであり、高速なコンパイルと優れたデバッグ エクスペリエンスを維持しながら、妥当なレベルの最適化を提供します。
また、すべての最適化フラグと、それがデバッグに与える影響についても説明します。