今回はデバッガに関する情報です。
投稿時の開発環境を記しておきます。
PC:Windows10 OS
IDE: STM32CubeIDE Version1.3.0
Board: STM32Nucleo-F401RE
STM32でダンス?何のこっちゃ?と思われる方が多いと思います。
それでは見ていきましょう。
ダンスではステップが重要な役割を果たしていると思います。
デバッガもダンス同様にステップ実行がデバッグの大きな鍵を握っています。
IDEでは F5とかF6キーでステップ実行していきますが、この時に思わぬ動作をした経験はありませんか?
1行ずつステップを踏んで実行していくはずが、同じ関数を何度も実行したりあちこち飛び跳ねたりすることがあります。
そんな時は最適化を疑ってみてください。
最適化はファイル単位で設定されます。
それでは何かプロジェクトを開き Project Explorer から main.c を右クリックし Properties を選択します。
ウィンドウが出たら C/C++ Build – Settings の Tool Settings タブの Optimaization を選択します。
ステップ実行でおかしな動きをする時は、ここの Optimization level が Optimize for size とか Optimize for speed に設定されていることがあります。
最適化の設定内容は以下の通りです。
-O0
これがデフォルトの最適化設定です。この設定により、ほとんどの最適化が無効になり、ビルドされたイメージとアプリケーション ソース コードとの間に最良の相関関係が構築されます。
-O1
これにより、-O0 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。ARM はデバッグにはこのオプションを推奨します。
-O2
これにより、-O1 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。
-O3
これにより、-O2 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。
-Ofast
これにより、-O3 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。この最適化レベルでは、ARM コンパイラが特定の言語標準に違反する可能性があります。
-Omax
これにより、-Ofast と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。この最適化レベルでは、ARM コンパイラが特定の言語標準に違反する可能性があります。最高のパフォーマンスを得るために、ARM はこのオプションを推奨します。
-Os
このオプションを指定すると、コード サイズが小さくなり、デバッグに使用できる情報も少なくなります。このオプションを使用すると、コードが遅くなる可能性があります。
デバッグする際には、ここを None に設定しておくと正しくステップを踏みダンスもうまく踊れるようになります 笑
ステップ実行がおかしな挙動をする際には、ぜひチェックしてみてください。
コメントを書く