できるCCS⑨ [ デバッグ編 その3 ]

前回に続いてデバッグ時に便利なCCSの各種機能についてご紹介します。 これらを知っていただければ更に快適にデバッグすることができます。

デバッグ時に便利な操作

今回は以下の機能についてご紹介します。

●エクスプレッションウインドウ(Expression Window)
●バリアブルウインドウ(Valuable Window)
●ディスアセンブリウインドウ(Dis-Assembly Window)
●グラフの表示
●ROV(RTOS Object View)

エクスプレッションウインドウ

デバッグ中にプログラムが正しく変数や関数を参照できているか不安な時はありませんか?
そんな時にはエクスプレッションウインドウを見てみてください。

エクスプレッションウインドウを用いることで、ソースコード内の変数や配列、関数の値をデバッグ中に確認できます。
確認したい変数や関数名を入力すると、エクスプレッションウインドウに表示されます。

エクスプレッションウインドウの表示方法

「View → Expressions」をクリックしてください。「Expressions」のウインドウが開きます。

エクスプレッションウインドウの使い方

「Add new expression」をクリックし、変数名や配列名を入力してください。またはソースコード内の変数や配列を選択してから右クリックし、「Add Watch Expression」をクリックしてください。 変数(もしくは配列)が「Expressions」ウインドウに追加されます。

変数を追加しましたら一度、開始と中断をクリックしてみてください。 表示している変数のValue欄が変化することが確認できます。

変数を右クリックし、「Number Format」より、Value欄の表示スタイルを変更することができます。
この表示は、変数それぞれ個別に設定することもできます。また、エクスプレッションウインドウでは表示するだけでなく、ウィンドウ上で直接値を書き換えることもできます。

よく使うツールバーボタン

エクスプレッションウインドウの応用

エクスプレッションウインドウでは、ただ変数を確認するだけではなく、その機能を利用した応用的な使い方もできますのでご紹介します。

エクスプレッションウインドウで下図のように、アドレスをキャストして表示することができます。これを用いることにより、例えば構造体の型名がわかっていれば、「その型のポインタに構造体アドレスをキャストしてメンバ変数を参照する」、といった使い方ができます。

下図の①では、ある構造体名より、構造体のアドレス並びに各メンバの値をウインドウ内に表示しています。アドレスが予め分かっている場合、②のように構造体のポインタ型へアドレスをキャストすると①と同様に各メンバの値を表示することができます。また、③ではアロー演算子を用いて構造体内のメンバを指定した上で加算を行った結果を表示させています。

バリアブルウインドウ

エクスプレッションウインドウの他にもう一つ、バリアブルウインドウでも変数や関数の値を確認できます。 

バリアブルウインドウはプログラムカウンタが示すアドレス領域のローカル変数や配列を自動的に検出し、表示します。変数等の簡単な確認には向いていますが、柔軟性は低くなります。

バリアブルウインドウの表示方法

「View → Variables」をクリックしてください。
「Variables」のウインドウが開きます。「Expressions」ウインドウと異なり、自動で変数が表示されています。

バリアブルウインドウの使い方

一度、開始と中断をクリックしてみてください。表示している変数のValue欄が変化することがわかります。

エクスプレッションウインドウと同様に、変数を右クリックし、「Number Format」よりValue欄の表示スタイルを変更することができます。この表示は変数をそれぞれ個別に設定することもできます。また、表示するだけでなく、ウィンドウ上で直接値を書き換えることもできます。

よく使うツールバーボタン

ディスアセンブリウインドウ

CCSではディスアセンブリを行うことも可能です。
ここからはディスアセンブリウインドウを用いて、ソースコードのディスアセンブリの結果を表示する方法をご紹介します。

ディスアセンブリウインドウの表示方法

「View → Disassembly」をクリックしてください。「Disassembly」のウインドウが開きます。

ツールバーボタンについて

ディスアセンブリウインドウ上のツールバーボタンを以下にご紹介します。

グラフの表示

CCSではコード内の変数や配列をグラフ化することができます。
タイムベースのグラフ(Single Time, Dual Time)と、周波数ベースのグラフ(FFT Magnitude, FFT Magnitude Phase, Complex FFT, FFT Waterfall)があります。

グラフの表示方法①

「Expressions」ウインドウで、グラフを表示させたい変数や配列を入力し、その変数(配列)上で右クリックをして「Graph」をクリックしてください。

グラフが表示されます。

グラフの表示方法②

「Tools → Graph → Single Time」をクリックしてください。「Graph Properties」が開かれますので、表示させたいグラフの条件を入力し、OKをクリックしてください。

同様にグラフが表示されます。

よく使うツールバーボタン

グラフウインドウ上のツールバーボタンを以下にご紹介します。

ROV

ここでは、ROV(RTOS Object View)の使い方をご紹介します。
CCSはTI社のRTOSのカーネルである「SYS/BIOS」に対応しています。
そのSYS/BIOSのオブジェクトのステータスを確認できるのが「ROV」です。

ROVの表示方法

「Tools」→「ROV Classic」をクリックしてください。

「ROV」のウインドウが表示されます。

ROVの使い方

ROVでは、SYS/BIOSのオブジェクトのステータスの確認、スレッドの状態(Blocked/Ready等の状態)やスタック使用量のピーク等、RTOSの情報を幅広くモニタできます。
チェックしたいモジュールをクリックし、各タブを選択して様々なデータをご確認いただけます。

例として、下の画面では「LoggerBuf」タブを開いています。
LoggerBufはログ情報を格納するバッファを作成します。プログラム内でLog API(Log_print~)を呼び出すことで変数や関数の状態のログ情報をROV上で確認することができます(ログ情報を表示させるには一旦プログラムを停止させる必要があります)。

よく使うツールバーボタン

まとめ

デバッグに関する各種操作についてはここで完結となります。

これまでの説明が CCS を使用する開発の参考となれば幸いです。

できるCCSはコチラから