ソフトウェア プロジェクトのコード開発は、かなり標準的な手順に従う傾向があります。1) 通常は、理解できる言語と命令を使用するC++ やJavaなどの高水準プログラミング言語でソース コードを作成します。大規模なプロジェクトでは、理解しやすいようにコードは通常、複数のモジュールとして記述されます。2) ソフトウェア コンパイラを使用してモジュールを1つの大きなコードに結合します。これにより、人間が読めるテキストがマイクロコントローラが実行できるオブジェクト コードに変換されます。3) オブジェクト コードをコンピュータのメモリにロードし、ソフトウェアの実行を開始します。4) 動作しません。
心配しないでください。それは全く普通のことです。実際、商用のエンタープライズ規模のソフトウェアには、リリース後でもコード1,000行あたり20 ~ 30個のエラーまたはバグが含まれているのが一般的です。「致命的な」エラーが発生すると、実際にプログラムの実行が停止します。致命的でないエラーが発生すると、プログラムは実行できますが、結果は期待したものと異なります。
プログラムが期待どおりに動作しない場合、次のステップは何でしょうか?ここで、もう1つの重要なソフトウェアであるデバッガーが登場します。
デバッグとは何ですか?
デバッグとは、コンピュータ プログラム コード内のバグを見つけて修正するプロセスです。プログラムをデバッグするということは、欠陥のあるコードから始めて、問題の原因を特定し、それを修正することです。
デバッガーは、別のプログラム (つまり、自分のコード) を実行するプログラムであり、実行中のコードに対して一定レベルの制御を行ったり、問題が発生したときに特定の項目を調べたりすることができます。
デバッガーの仕組み
エラーを含むプログラムを実行する場合、実行したいことや知っておくべき点がいくつかあります。
- 致命的なエラーが発生したときにプログラムが実行していたステートメントまたは式は何ですか?
- 関数の実行中に致命的なエラーが発生した場合、その関数の呼び出しはプログラムのどの行に含まれていますか?
- プログラム実行中の特定の時点でのプログラム変数 (パラメータを含む) の値は何ですか?
- プログラムのある時点で特定の式を評価した結果は何でしょうか?
- プログラム内で実際に実行されるステートメントのシーケンスは何ですか?
これらの機能を使用するには、プログラム データを調べ、現在実行中の機能のリストを取得し、プログラムの実行を一時停止してデータを検査できるブレークポイントを設定し、プログラムのステートメントをステップ実行して実際に何が起こっているかを確認できる必要があります。
デバッガーの基本機能
元のコードの動作をより深く理解できるように、ほとんどすべてのデバッガーはシンボリック レベルまたはソース コード レベルで動作します。本質的には、実際に翻訳されたマシン コードではなく、ソース プログラム内のC++ またはJavaステートメントを実行しているように見えます。
コードをデバッグする場合、通常、実行中のコード、マイクロコントローラのハードウェア レジスタ、特定のメモリ位置、ブレークポイントなど、複数の項目を同時に調べる必要があります。そのため、複数のウィンドウをGUI形式で表示する必要があります。下の図1は、利用可能な機能の一部を強調表示したデバッガーのスクリーンショットを示しています。
図1: 複数のウィンドウとその機能を表示するEclipse IDEのデバッガー画面。(出典:ライス大学)
マイクロコントローラエミュレータ
時には、エミュレーターと呼ばれる別のプログラムが、 マイクロコントローラ それ自体は実際のハードウェアを必要としませんが、組み込みシステムの場合、通常はマイクロコントローラ開発キットまたは生産目的のボード上でコードを実行します。
ほとんどのマイクロコントローラには、プログラムを1命令ずつステップ実行するためのハードウェア サポート、特別なテスト モード、ブレークポイントのサポートなど、デバッグを容易にするために特別に設計された機能があります。
統合開発環境
多くの場合、デバッガーは他のソフトウェア開発ツールとともに、統合開発環境 (IDE) と呼ばれる単一のパッケージにバンドルされています。多くのマイクロコントローラ製造元が自社製品用のIDEを提供しており、サードパーティベンダーやオープンソース コミュニティからも入手できます。図1に示すEclipse IDEはオープン ソース製品です。
IDEは、スタンドアロン製品の場合もあれば、(メーカー製の場合は)特定のマイクロコントローラ用の開発ハードウェアにバンドルされた場合もあります。使い始める際に役立つよう、Arrowではさまざまなメーカーのデバッガー、開発ツール、IDEを豊富に取り揃えています。