ModusToolbox™を使おう [デバッグ編]

このシリーズはModusToolbox™を初めて使用する組込ソフトウェア技術者に ModusToolbox™の基本的な機能の使用方法を説明します。
今回は、 ModusToolbox™に用意されているデバッグ機能について簡単に説明します。

デバッグとは?

作成したプログラムの動作不良(動作が思い通り動かない部分)、いわゆる「バグ」の原因を見つけて修正するのが、デバッグとなります。

デバッガとは?

デバッグを行うため、バグの修正に用いるツールを「デバッガ」と呼ばれています。

デバッガは、プログラムの動きを見ることができます。作成したプログラムが予想とは違う動きをするのはどこか、計算が間違っているのはどこかを調べることができ、プログラムに修正を加えることができます。

具体的にはプログラムをステップごとに実行して進めたり、任意の場所まで実行したりして、その際のデータやメモリの内容、変数値を確認することのできるツールです。

ModusToolbox™にはIDE(統合開発環境)が入っており、そこでデバッグを行うことができます。

ModusToolbox™でデバッグ

ModusToolbox™の基本的なデバッグ操作についてご紹介いたします。
ModusToolbox™の起動からサンプルプログラムのビルドまでは「 [Modusを使おう]シリーズ サンプルコード使用手順編 」で紹介しておりますので、そちらをご覧ください。その続きとしてこのサンプルをデバッグしてみます。今回は、評価ボードCY8CKIT-062-BLEのサンプルコードCAPSENSE™ Buttons and Sliderを例としてデバッグしてみます。

ビルドしたプログラムをロード

作成したプログラムをPSoC™のFlashメモリ書き込みます。この操作をロードといいますが、Infineon Technologies AG(以下、インフィニオン社)ではFlashメモリに書き込む操作をプログラムと表現しております。
ModusToolbox™のデバッガを起動するため、QuickパネルからCapSense_Buttons_and_Slider(KitProg3_MiniProg4)をクリックします。

ロードし、デバッガが起動されると、main()関数の先頭をカーソルが指し示します。
これは、プログラムを進めて、ここで今止まっていますという意味です。

デバッグウィンドウ

デバッグウィンドウで、現在デバッグされている関数名を確認できます。

プログラム実行の制御

任意の場所まで実行(ブレイクポイント)やステップ実行ができます。

・ブレイクポイント
ブレイクポイントとは、実行後に任意の場所でプログラムを停止する行のことを言います。プログラムのエディタウィンドウの一番左側をダブルクリックすると、ブレークポイントとして設定され、が表示されます。
右の例ではデバッガで表示されているプログラム中の initialize_led() 関数の行にブレイクポイントを設定しています。

※ビルド時の最適化により、任意の行にブレイクポイントを設定することができない場合があります

プログラムの実行はResumeボタンのクリックあるいはプルダウンメニューからRun → Resume (またはF8)から実行できます。

Resume を選択してプログラムを実行させると、プログラムはブレイクポイントの設定された initialize_led()関数の行の前まで実行されてから停止します。

・プログラムの再スタート(Restart)
プログラムの実行が進み、チェックをしたい行をすぎてしまった場合や、既に問題が発生していることが分かった場合等に、プログラムを再度先頭から実行し直すことができます。これを再スタート (Restart) と言います。

ツールバーにあるRestartアイコンをクリックするとデバッグ開始時と同じmain()関数にカーソルが移動します。

・ステップ実行
1行ごとのステップ実行を行います。
※ビルド時の最適化により、行ごとにステップしない場合もあります。

ステップ実行には以下の3種類があります。

Step Into:
1行ごとに実行し、その行が関数の場合には関数の内部に入ります。
Step Over:
1行ごとに実行し、その行が関数の場合にはその関数を実行します。
Step Return:
関数内で、その関数がリターンする場所まで実行します。

データの内容を見る

デバッガはその時点で有効な変数やデータの内容を表示する機能も提供しています。

・Memoryビュー
アドレスを指定して、そのメモリの内容を表示させることができます。
をクリックして、見たいアドレスや変数(ポインタ)を入力します。その後OKボタンを押すことで、その内容が表示されます。

・Variableビュー
スタックにある変数(ローカル変数や関数の引数など)が自動的に表示されます。

・Expressionビュー
グローバル変数など指定した変数の内容を表示できます。
をクリックし、変数名を入力することで値を表示できます。

※ビルド時の最適化により、変数が表示できないこともあります

デバッガの終了

デバッグの終了、デバイスにプログラムする場合、Cソースファイルを編集する場合には、デバッガを終了する必要があります。
ツールバーにあるTerminalアイコンをクリック或いはメニューにあるRun → Terminate(またはCtrl+F2)を選択するとデバッガが終了し、 Cソースファイルの編集が可能となります。

このようにプログラムの実行とデータの内容確認でデバッグを進めることで問題の原因となる場所を特定することができます。
ModusToolbox™には、この他にもデバッグを進めるための機能が豊富にあります。

ModusToolbox™のドキュメント

より詳細なデバッグ機能や設定を知りしたい場合は、プルダウンメニューにあるHelp → Eclips IDE for ModusToolbox Documentation から参照してください。ModusToolbox™についてのドキュメントがいくつか用意されております。

その他のツール

ModusToolbox™にはデバッガ以外にもデバッグ及び開発支援用ツールがあります。 その1つにCAPSENSE™ Tunerがあります。今回使用したサンプルCAPSENSE™ Buttons and Sliderでは、このツールを使って動的にCAPSENSE™(タッチセンサ)の感度を見ることができるので、簡単に紹介します。

CAPSENSE™ Tuner

このツールは、CAPSENSE™アプリケーションを調整するために使用されます。
以下のようにCAPSENSE™の感度をリアルタイムでグラフィカルに見ることができます。

担当エンジニアからの一言

今回は、ModusToolbox™のデバッグ機能を簡単に説明しました。丸文のセミナでは、実際の使い方を習得することを目的としてHandsOnでより詳細に説明しています。

 登録商標について
 Infineon®やInfineon®のロゴ、PSoC™、ModusToolbox™、WICEDはインフィニオン社の登録商標です。
 その他すべての名称は、それぞれの所有者に帰属します。

おすすめリンク