このコラムは、機器組込みのエンベデット・ソフトウェア(ファームウェア)の開発に関連したコラムです。メールマガジン「アメニティ サウンド音と快適の空間へ」で連載していた技術・開発コラムを再編集したものを掲載しています。
ソフトウェアのデバッグには、デバッガ(Debugger)と総称されるデバッグ用のソフトウェア・ツールを用います。
デバッガは、モニター、エミュレータ−、トレーサーなどの機能の組み合わせやタイプによって形態や機能は異なりますが、おおよそ、次のような機能を持っています。
他にも多数のデバッグのための機能が提供されている場合がありますが、一般的な機能としてはこのような所ではないでしょうか...
メモリの内容やI/Oポート他、ワンチップマイコンなどでは、多数の周辺I/O機能をワンチップにしているため、これらの状態をモニターすることができます(ワンチップでも、できないデバッガもあります状況証拠から推理小説のように類推してデバッグするしかない場合があります)。
メモリは、シンボリック・デバッガ、ソースレベル・デバッガの場合には、デバッグ情報を利用して、変数名などで参照したり、編集することが可能です...
デバッグやテストなどで、状態を調査するために実行時の状態で停止するのが、このブレーク機能です。
ブレーク機能は、大きく分けると2つのブレーク機能に分かれます。
1つは、リアルタイムブレークというもので、名前の通り、キー操作などで即時停止する機能です。
もう1つは、あらかじめ停止条件を決めておいて条件が成立したときに停止する機能です。ブレーク・ポイントや条件付きブレーク機能などがあります...
デバッグ作業で、プログラムコードが1行づつ正しく機能してしているかを順次調べながら実行シミュレーションする機能が1ステップ実行の機能です。
設計、実装したプログラムコードを1行づつ実行しながら、メモリの内容(変数の内容)などを見ながら正しく、または、不正な実行の課程を調べるために利用します。
一般に、ステップ実行で調べたい個所が実行される直前に、ブレークポイント(前回にご紹介しました)を設定して実行を一旦停止し、このステップ実行を利用して、詳細に調べるという方法が取られます...
ICEなどでは色々な低レベルなデバッグ方法が必要になりますので、この機能がついていることが多いのですが、パソコン用や高レベルデバッガ中心の製品には無い場合があります。
単純に、実行する開始場所を任意のコード場所を指定して実行するだけの機能です。
通常の高級言語などのデバッグでは、スタートアップやライブラリ、スタックなどの状態が維持できないことが多いため(スタックフレームの継続性を仕様上どのように考えられているかという問題ですが……ユーザー責任で感知しないというので良いようにも思います)、うまく利用できないことも多いですし、あまり有効に利用できることがないのですが、組み込み機器を開発している時にはうまく利用すると便利な機能です...
ヒストリー機能には、大きく分けて2つのヒストリー機能があります。
1つは、実行コードの来歴を指すものでトレース機能(ヒストリー付きトレース)などとも呼ばれる、停止した時点までの実行記録をメモリに記憶しているものです。
トレースメモリはICEなどで。機能が高いものになると、かなりプロセッサレベルでの動作の記録を調べることができます。
▼@IT Insider's Computer Dictionary
ICE (In-Circuit Emulator)【アイス】
http://www.atmarkit.co.jp/icd/root/17/72606917.html
このヒストリカル・トレースは、割り込みやマルチタスクまで含めてタイミングや実際の動作を知りたいような場合には、大変便利な機能になります...
基本的に、デバッガですから、実行ファイルやシンボル、マップファイルなどデバッグ情報のファイルのロードが可能なのは言うまでもありませんが(といっても、シンボリックデバッグ不能なICEだってありますし、ロードファイルもHEXなどの限られた形式のファイルのみという場合だってあります)、ファイルのセーブが可能とは限りません。
現在のは、ICEも、端末にパソコンやワークステーションと汎用OSを利用するものが主流ですから、パソコンのファイルを扱うことができるのは一般的ですが、実行用バイナリファイルや、特定の形式のファイルを専用の開発ツール(リンカも含めて)で作成したファイルが読み込めるだけの場合もあります...
シンボルファイルについては、以前、ファイルに関係して少しだけ話題にしましたが、ここでは、シンボル定義などまで含めた機能についてです。
シンボルというのは大雑把(言語による定義の違いなどもあるので大まかですが)にいうと名前です。メモリや定数などに名前を付けることで、扱いやすくするためにシンボルの機能で名前をつけます。
現在は、ソースレベルのデバッガが主流になってきていますので、「シンボリックデバッガ」などとあえてシンボルが使えるデバッガと主張されることもなくなっていますが、創生期には、シンボルが使えない所から始まって、シンボルが利用できるようになり、ソースファイルとの対応、さらに高度なデバッグ情報までできているようにと発展してきています...
ソフトウェア開発と開発ツール関連の雑記
機器組込みのエンベデット・ソフトウェア(ファームウェア)の開発に関連したコラムです。 メールマガジン「アメニティ&サウンド 音と快適の空間へ」に連載していた技術・開発コラムを編集掲載しています。
ソフト、ハードウェア 技術関連の雑記
このコラムは無料メールマガジン「アメニティ&サウンド 音と快適の空間へ」 vol.36〜vol.64(2003年8/21〜2004年11/18)に 音響と開発の関連コラムとして連載していたものを編集掲載したものです。
技術・開発の閑話-2- vol.11〜20F1とコンピュータ技術 / ソフトウェアの標準と部品化
( 戦術と戦略の誤解 / アジャイル開発 / リファクタリング / 遺産と再生産 / 標準と生産管理 ほか)
|
技術・開発の閑話-2- vol.01〜10「ありえない」フェイルセーフと安全機能の連鎖 / HDD容量の差(天使の分け前) / リアルタイムとベストエフォート / エラーとコスト(ブルースクリーン/XP) / NDAと情報公開 / 専門ドメインの基礎範囲 / NHK技研公開(超高精細映像システム) |
エーアールアイはPCアプリケーション、デジタル機器の組込み(CPU)、信号処理(DSP)ソフトウェアの開発を行っています。 お客様のお役に立てることがございましたらご用命ください。