JP2004272679A - デバッグ装置およびデバッグ方法 - Google Patents
デバッグ装置およびデバッグ方法 Download PDFInfo
- Publication number
- JP2004272679A JP2004272679A JP2003063667A JP2003063667A JP2004272679A JP 2004272679 A JP2004272679 A JP 2004272679A JP 2003063667 A JP2003063667 A JP 2003063667A JP 2003063667 A JP2003063667 A JP 2003063667A JP 2004272679 A JP2004272679 A JP 2004272679A
- Authority
- JP
- Japan
- Prior art keywords
- information
- hardware
- abnormality
- debugging
- debug
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】LSIの内部だけの情報に限られ、また、その後のアクションが限定されるため、デバッグできる範囲が限られるといった課題があった。
【解決手段】デバッグ対象装置10にて異常が発生した際にデバッグ用コンピュータ40において動作するデバッガにてレジスタ情報を入力する。このレジスタ情報にはプログラムカウンタの値が含まれているため、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【選択図】 図1
【解決手段】デバッグ対象装置10にて異常が発生した際にデバッグ用コンピュータ40において動作するデバッガにてレジスタ情報を入力する。このレジスタ情報にはプログラムカウンタの値が含まれているため、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、デバッグ装置およびデバッグ方法に関し、特に、ハードウェアおよび同ハードウェアと密に連携して動作するソフトウェアについてデバッグするデバッグ装置およびデバッグ方法に関する。
【0002】
【従来の技術】
ハードウェアと密に連携するソフトウェアを開発している場合には、ハードウェアが開発段階であるため、ハードウェアの入出力のタイミングに依存する不具合が発生しやすく、その不具合を解決するために多くの時間を費やすことが多い。ここで、不具合の一例を下記する。
1.ハードウェアを動作させるために、ソフトウェアからハードウェアのレジスタやメモリにアクセスする。かかる場合、アクセスの順番やアクセスタイミング等によって、ハードウェアが停止することがある。
2.ハードウェアは、内部で起きた事象を、同ハードウェアを制御するオペレーティングシステムに伝えるために、割込みを発生させる。かかる場合、オペレーティングシステムがある順番で割込みを受けると、オペレーティングシステム自体が停止してしまうことがある。
【0003】
一般に、開発中のハードウェアをデバッグする場合には、ホストコンピュータと開発中のシステムをICE(InCercuitEmurator)を介して接続し、このハードウェア上で動作するソフトウェアの動作状態をトレースすることがある。また、一方では、開発中のハードウェアのプロセッサに、デバッグ用コード(デバッグモニタ等)を組み込み、そのデバッグ用コードを介して、ホストコンピュータと開発中のハードウェアを接続し、同ハードウェアが備えるCPUにて動作するソフトウェアの動作状態をトレースすることがある。上記のような不具合の原因を解析するには、上記に示したハードウェアのCPU上にて動作するソフトウェアの動作状態をトレースできるデバッグシステムを用いて、ハードウェアに関するログ情報を収集するコードを埋め込んだソフトウェアを動作させ、バグが発生した時点で、ソフトウェアを停止させ、ログを解析する。
【0004】
しかし、ログ情報を収集するコードを挿入してソフトウェアを実行させると、ハードウェアへの入出力のタイミングが替わってしまい、タイミングに依存した不具合は発生しないことが多い。その場合、デバッグ情報をソフトウェア自身から得る方法とは別に、ハードウェアから断片的な情報を得て、解析することもある。ハードウェアの情報は、ロジックアナライザと呼ばれる機器によって入手可能である。ロジックアナライザは、ハードウェアの信号をトレースし、表示できる装置である。プローブと呼ばれる信号入力装置を、開発中のハードウェアのテストピンなどに引っ掛けて、そこからリアルタイムにハードウェアの信号の挙動を得ることができる。テストピンはハードウェアの設計によって、その数や種類が異なるが一般的にハードウェアの設計段階で存在しているものである。テストピンはコンピュータシステムのアドレスバスやデータバス、割込信号線などに付けられていることが一般的である。
【0005】
よって、ロジックアナライザはハードウェアの信号の挙動よりも、論理的な情報、例えば、アクセスしているメモリのアドレスや割込信号がCPUに入ったという情報などを得ることができる。このようにロジックアナライザにより論理的な情報を得る手法は既に開示されている(例えば、特許文献1を参照。)。また、ハードウェア内部にデバッグシステムを埋め込む例もある(例えば、特許文献2を参照。)。また、ソフトウェアの動作とハードウェア情報とが関連付けられている例もある(例えば、特許文献3を参照。)この例では、ハードウェアの情報をトレースしてトレースメモリに格納し、ある不具合が発生したときにトレースを止め、トレース情報を外部に出力できるLSIが提案されている。さらに
、同様の技術として、プロセッサの内部情報をトリガとして、あるアクションを定義できるものもある(例えば、特許文献4を参照。)。これによれば、ハードウェアに内蔵のロジックアナライザの情報を入手できる可能性がある。
【0006】
【特許文献1】
特開平10−105427号公報
【特許文献2】
特開平9−167105号公報
【特許文献3】
特開平8−63374号公報
【特許文献4】
特開2001−147816号公報
【0007】
【発明が解決しようとする課題】
上述した従来のデバッグ装置においては(特に、特許文献3)、LSIの内部だけの情報に限られ、また、その後のアクションが限定されるため、デバッグできる範囲が限られるといった課題があった。
【0008】
本発明は、上記課題にかんがみてなされたもので、様々なハードウェアコンポーネントの情報を入力すると同時に、その情報をトリガとして、ソフトウェアデバッグシステムが様々なアクションを取ることが可能であるとともに、ソフトウェアから入力する情報をトリガとして、ロジックアナライザなどハードウェアのデバッグシステムにて様々なアクションを取ることを可能とすることによって、ハードウェアおよびソフトウェアの連携させつつデバッグを実施することが可能なデバッグ装置およびデバッグ方法の提供を目的とする。
【0009】
【課題を解決するための手段および作用・効果】
上記目的を達成するため、CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置を提供する。このとき、ハードウェア情報記録手段にてハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録する。そして、ハードウェア異常検出手段では、ハードウェア情報記録手段に記録されるハードウェア情報に基づいてハードウェアに発生する異常を検出する。ハードウェア異常検出手段は、異常を検出した場合に所定の異常情報を出力する。そして、デバッグ制御手段は、ハードウェア異常検出手段から出力された異常情報を入力すると、ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行する。ソフトウェアはハードウェア環境にて実行されているため、ハードウェアの異常が検出された際に、ハードウェアに対して所定のデバッグ制御処理を実行すれば、ソフトウェアの不具合を特定することが可能になる。
【0010】
ハードウェア異常検出手段にて出力する異常情報を特定する手法の一例として、ハードウェア異常検出手段に検出可能な異常と、出力する異常情報とを対応させた出力情報定義テーブルを備えさせる。そして、検出した異常に基づいてこの出力情報定義テーブルを検索し、対応する異常情報を取得して出力する。予め検出可能な異常と、異常情報とが対応されているため、異常を検出した場合に、対応する異常情報を高速に特定することが可能になる。デバッグ制御手段にて実行するデバッグ制御処理の一例として、デバッグ制御手段は、ハードウェア情報取得手段にて取得されたハードウェア情報を異常時ハードウェア情報として取得する。これによって、異常が発生したタイミングにおけるハードウェア情報に基づいてソフトウェアの不具合を特定することが可能になる。
【0011】
ハードウェア情報の一例として、ハードウェア情報記録手段は、レジスタ情報の遷移を記録する。レジスタ情報にはソフトウェアの処理手順を表示するプログラムカウンタが含まれているため、この内容に基づいてソフトウェアの何れ処理にて不具合が発生しているかを詳細に検証することが可能になる。また、デバッグ制御手段にて実行するデバッグ制御処理の他の一例として、上記デバッグ制御手段は、CPUの動作を停止させる処理を実行する。CPUを停止させれば、ソフトウェアも停止することになる。従って、ソフトウェアの処理動作に伴って変化し得るハードウェア情報はその時点で更新されなくなることになるため、記録されるハードウェア情報を所定量に限定することができる。これによって、よりソフトウェアの不具合の発生箇所を特定し易くすることが可能になる。
【0012】
上述した発明の構成においては、ソフトウェアの不具合を検証することができるデバッグ装置を提案することが可能になる。一方、ハードウェアと同ハードウェアと密に連携して動作するソフトウェアのデバッグを実施する場合、ソフトウェアの処理動作に影響を及ぼし得るハードウェア側の不具合も検証することができると好適である。そこで、CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置を提供するにあたって、ソフトウェア異常検出手段にてソフトウェアの実行状態に基づいて同ソフトウェアの異常を検出し、異常を検出した場合に所定の異常情報を出力する。
【0013】
ここで、デバッグ制御手段にて、出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行する。これによって、ソフトウェアにて異常が発生したタイミングにおいて、ハードウェアに対してデバッグ制御処理を実行することにより、ハードウェアの状態を認識することが可能となり、ソフトウェアの処理動作に影響を及ぼし得るハードウェアの不具合を特定することが可能となる。デバッグ制御手段が実行するデバッグ制御処理の一例として、デバッグ制御手段にハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録するハードウェア情報記録手段を備えさせる。そして、デバッグ制御手段にてデバッグ制御処理として、記録されたハードウェア情報を取得する処理を実行する。これによって、ソフトウェアの異常が検出された時点におけるハードウェアの内部制御情報の遷移を示すハードウェア情報を認識することが可能となり、このハードウェア情報に基づいてソフトウェアの異常の原因となり得るハードウェアの不具合を特定することが可能になる。
【0014】
上述した内部制御情報の一例として、ハードウェア情報記録手段は上記内部制御情報として、割込信号情報の遷移を記録する。これによって、ソフトウェアの異常が発生した際の割込み信号の信号遷移を認識することが可能となり、この割込み信号の信号処理に不具合がある場合は、早急に不具合を特定することが可能になる。ハードウェア異常検出手段にて出力する異常情報を特定する手法の一例として、ソフトウェア異常検出手段に検出可能な異常と、出力する異常情報とを対応させた出力情報定義テーブルを備えさせる。そして、検出した異常に基づいて同出力情報定義テーブルを検索し、対応する異常情報を取得して出力する。このように予め検出可能な異常と、異常情報とを対応させておくことによって、異常を検出した場合に、対応する異常情報を高速に特定することが可能になる。
【0015】
上述してきたデバッグ制御手段にてデバッグ制御方法を特定する手法の一例として、デバッグ制御手段に入力する異常情報と、実行するデバッグ制御処理方法とを対応させた処理定義テーブルを備えさせる。そして、入力した異常情報に基づいて同処理定義テーブルを検索し、対応するデバッグ制御処理方法を取得し、同取得したデバッグ制御処理方法に基づいてデバッグ制御処理を実行する。このように予め入力し得る異常情報と、実行するデバッグ制御方法とを対応させておくことによって、異常情報を入力した場合に、対応するデバッグ制御方法を高速に特定することが可能になる。また、上述してきたデバッグ装置は、その方法としても発明が成立することは言うまでもない。
【0016】
【発明の実施の形態】
ここでは、下記の順序に従って本発明の実施形態について説明する。
(1)ソフトウェアの異常をデバッグするデバッグ装置の構成:
(2)各装置の動作内容:
(3)変形例の構成:
(4)ハードウェアの異常をデバッグするデバッグ装置の構成:
(5)各装置の動作内容:
(6)まとめ:
【0017】
(1)ソフトウェアの異常をデバッグするデバッグ装置の構成:
図1は、本発明にかかるデバッグ装置の構成を示した構成図である。ここでは、ソフトウェアをデバッグして不具合(以下、本実施形態においては不具合を「異常」と表現する。)を特定する際のデバッグ装置の構成を示している。同図において、デバッグ装置のデバッグ対象は、例えば、開発中のハードウェアを有し、それと同時に、このハードウェアと密に連携して動作するソフトウェアを開発しているデバッグ対象装置10とする。このデバッグ対象装置10は、内部にCPU11と、同CPU11にバス12を介して接続された開発中のハードウェアコンポーネント13が接続されている。また、後述するエミュレータ装置とCPU11とを双方向にて通信を可能にするためのインターフェース部14を備えている。ハードウェアコンポーネント13にはテストピン13aが形成されている。そして、デバッグ対象装置10にはロジックアナライザ装置20が接続されている。開発中のソフトウェア11aは、図示しないROMやハードディスクに格納され、適宜CPU11に読み出され、図示しないRAMをワークエリアとしつつ動作する。
【0018】
このロジックアナライザ装置20は、デバッグ対象装置10のハードウェアコンポーネント13等のハードウェア10aの信号をトレースして記録するとともに、トレース状態をタイムチャート等にて表示可能な装置である。このとき、ロジックアナライザ装置20は、プローブと呼ばれる信号入力装置を開発中のハードウェアコンポーネント13等のハードウェア10aのテストピンなどに引っ掛け、同テストピンからリアルタイムにハードウェア10aの信号の挙動を取得することが可能になっている。このロジックアナライザ装置20は、内部に図示しないCPU、RAM,ROM等の内部機器を有し、これらの内部機器によって、所定の機能を実現する制御部21と、通知部22と、出力情報定義部23とが実行可能になっている。また、本実施形態において、上述したロジックアナライザ装置20のプローブ24は、ハードウェアコンポーネント13のテストピン13aに接続される。
【0019】
これによって、ロジックアナライザ装置20はハードウェアコンポーネント13の状態を信号レベルで記録および表示可能になっている。そして、ロジックアナライザ装置20は、この信号レベルの記録によって、デバッグ対象装置10のハードウェア10aに関するハードウェア情報を取得し、同ハードウェア情報が所定の条件を満たしているか否かを検知することが可能になっている。すなわち、ハードウェア情報に基づいてデバッグ対象装置10のハードウェア10aの稼働状況が正常であるか異常であるかを判別可能になっている。ここで、上述したハードウェアコンポーネント13に配設されるテストピン13aは、ハードウェア10aの設計によって、その数や種類が異なるが、一般的にハードウェア10aの設計段階で存在しているものであり、コンピュータシステムのアドレスバスやデータバス、割込信号線などに付けられていることが一般的である。
【0020】
また、デバッグ対象装置10は、上述したようにエミュレータ装置30とのインターフェースとなるインターフェース部14を備えており、エミュレータ装置30と接続可能になっている。このようにエミュレータ装置30を用いることにより、エミュレータ装置30に接続されたデバッグ用コンピュータ40からデバッグ対象装置10のCPU11上にて動作する開発中のソフトウェア11aのデバッグを実施可能になる。ここで、デバッグ用コンピュータ40では、デバッガと呼ばれるソフトウェアツールが動作可能になっており、このデバッガの動作に基づいて、同デバッグ用コンピュータ40はエミュレータ装置30と通信可能になっている。そして、このエミュレータ装置30は、デバッグ用コンピュータ40にて動作するデバッガからの要求に応じて、デバッグ対象装置10のCPU11の動作を一時的に停止(HALT)させ、当該CPU11のレジスタ等の情報を入手し、デバッガに出力することが可能になっている。
【0021】
上述したデバッグ装置を使用してデバッグ対象装置10のハードウェア10aおよび同ハードウェア10aと密に連携して動作するソフトウェア11aのデバッグを実施する。このデバッグ装置では多種多様の異常を解析の対象とすることが可能である。ここで、この多種多様の解析可能な異常の中から、本実施形態において説明する異常の一例を示す。本実施形態におけるデバッグ対象装置10では、開発中のデバッグ対象装置10のハードウェアコンポーネント13がソフトウェア11aの処理内容に基づいて、CPU11からレジスタAとレジスタBを順番に所定の間隔でアクセスされた場合に、その機能を停止してしまう異常を有しているとする。このとき、ソフトウェア11aを対象としたソフトウェアデバッガのみによってデバッグを行う場合、レジスタA,Bに対してアクセスを行った際に、このレジスタA,Bへのアクセス情報をログとしてメモリに記録するようにソフトウェア11aの処理内容を変更し、異常が発生した際にそのログを解析することによって、異常の発生する原因を探索することになる。
【0022】
しかし、ログをメモリに記録する処理動作が、レジスタに対するアクセスのタイミングを変化させてしまい異常が発生しなくなることが多い。かかる状況を図2および図3に示す。図2において、ログをメモリに記録しない場合は、レジスタAに対するアクセスが発生する処理と(ステップS100)、レジスタBに対するアクセスが発生する処理(ステップS105)とのアクセス間隔は0.5msecになっており、このアクセス間隔によってレジスタA,Bに対するアクセスが発生した場合に異常が発生する。一方、図3において、ログをメモリに記録する場合、レジスタAに対するアクセスが発生する処理(ステップS200)の次に、ログをメモリに記録する処理(ステップS205)が入り、その後にレジスタBにアクセスする処理が発生した場合(ステップS210)、アクセス間隔は1msecに伸びてしまい、異常が発生しなくなる。また、ソフトウェアデバッガのみでは、何れのレジスタに対するアクセスによってハードウェアコンポーネント13の異常が発生したかを特定することも不可能である。
【0023】
そこで、本実施形態においては、上述した構成に基づいてログの処理内容を追加するなどのソフトウェア11aの変更を行うことなく、ハードウェア10aに発生する異常を特定可能な本発明にかかるデバッグ装置の解析方法について説明する。この解析に際しては、予めロジックアナライザ装置20の出力情報定義部23を用いて、ハードウェアコンポーネント13に異常が発生した場合に現れるハードウェア情報と、異常が発生した際にこの異常に対応してエミュレータ装置30に出力するべき異常情報とを関連付けておく。この関連付けを図4に示す。同図において、出力情報定義テーブル100は、ハードウェア情報101と、異常情報としての事象ID102とをデータとして備えている。例えば、ハードウェア情報101が「ハードウェアコンポーネントの停止」であれば、事象IDは「1」と対応付けられている。また、エミュレータ装置30においても予めこの異常情報に対する当該エミュレータ装置30の処理動作を関連付けておく。
【0024】
この関連付けを図5に示す。同図において、事象ID201と、処理動作の内容を示すデバッグ制御方法202とをデータとして備えている。例えば、事象ID201が「1」であれば、デバッグ制御方法202は「CPU停止、レジスタ情報入力、デバッグ用コンピュータに通知」と対応付けられている。ここで、ハードウェアコンポーネント13の異常を表すハードウェア情報とは、ロジックアナライザ装置20を用いて得られるハードウェア10aの信号線の情報の集合である。例えば、ハードウェアコンポーネント13が停止した際に、ある信号線(リセット信号など)がアサートされる場合、その信号線がアサートされたことが異常を表すハードウェア情報となる。
【0025】
次に、異常が発生する原因を特定する手順を示す。
1.CPU11上にてソフトウェア11aを動作させた場合に、ソフトウェア11aの処理動作において、ハードウェア10aにて異常が発生するタイミングによって、レジスタA,Bに対するアクセスが行われる。
2.このレジスタA,Bに対するアクセスによって、ハードウェアコンポーネント13が停止する。
3.ロジックアナライザ装置20は、制御部21の制御に基づいて、プローブ24を介して、ハードウェアコンポーネント13にて異常が発生したことを示すハードウェア情報を入力する。
【0026】
4.ロジックアナライザ装置20は、出力情報定義部23および通知部22の動作に基づいて入力したハードウェア情報に対応する「事象ID」をエミュレータ装置30に出力する。
5.エミュレータ装置30では、通知受理部32が「事象ID」を受理し、制御部31に渡す。
6.エミュレータ装置30の制御部31は、受け取った「事象ID」を動作定義部33に渡し、「事象ID」に対する動作の特定を依頼する。
7.動作定義部33は「CPU停止、レジスタ情報入手、デバッガに通知」というデバッグ制御方法を示す情報を制御部31に返答する。
8.制御部31は上記の情報を動作実行部34に渡す。
【0027】
9.動作実行部34は、インターフェース部14を介して所定の制御信号をデバッグ対象装置10に出力することによって、CPU11を停止させ、レジスタ情報を入力し、デバッガ用コンピュータ40にて動作するデバッガに通知する。
10.通知を受けたデバッガは、エミュレータ装置30からレジスタ情報を入力する。
このように、デバッグ用コンピュータ40において動作するデバッガにて入力するレジスタ情報には、プログラムカウンタの値が含まれている。従って、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【0028】
(2)各装置の動作内容:
図6は、上述した手法によってデバッグを実施する際のロジックアナライザ装置20の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部21は、プローブ24を介してハードウェアコンポーネント13のテストピン13aから信号レベルもしくは構造化されたハードウェア情報を入力する(ステップS300)。そして、この入力されたハードウェア情報を解析することによってハードウェアコンポーネント13に異常が発生しているか否かを判別する(ステップS305)。ここで、入力したハードウェア情報が異常の発生を示したものではないと判別した場合は、ステップS300に戻る。
【0029】
一方、入力したハードウェア情報に基づいてハードウェアコンポーネント13の異常を検知した場合は(ステップS310)、制御部21は、異常を示すハードウェア情報に対する事象IDを出力情報定義部23に問い合わせる(ステップS315)。問い合わせを受けた出力情報定義部23は、出力情報定義テーブル100に基づいて、異常を示すハードウェア情報101に対応する事象ID102を認識する(ステップS320)。出力情報定義部23は、この認識した事象ID102を制御部21に受け渡す(ステップS325)。ここで、制御部21は、この出力情報定義部23から受け取った事象ID102をエミュレータ装置30に対して出力するように通知部22に依頼する(ステップS330)。そして、制御部21から依頼を受けた通知部22は、この事象ID102をエミュレータ装置30に対して出力する(ステップS335)。
【0030】
図7は、上述した手法によってデバッグを実施する際のエミュレータ装置30の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部31は通信受理部32を制御してロジックアナライザ装置20が出力される事象ID102が同通信受理部32に入力されたか否かを判別する(ステップS400)。この判別処理を事象ID102が入力されるまで継続する。一方、通知受理部32に対する事象ID102の入力があった場合は、通知受理部32は、入力した事象ID102を制御部31に受け渡す(ステップS405)。事象ID102が受け渡された制御部31は、この事象ID102に対応するデバッグ制御方法を動作定義部33に問い合わせる(ステップS410)。
【0031】
制御部31からの問い合わせを受けた動作定義部33は、処理動作定義テーブル200に基づいて、事象ID102に対応する事象ID201に対して対応付けられたデバッグ制御方法202を判別する(ステップS415)。事象ID201に対応するデバッグ制御方法202を判別した動作定義部33は、この判別したデバッグ制御方法202を制御部31に通知する(ステップS420)。通知を受けた制御部31は、このデバッグ制御方法202に基づいた処理の実行を動作実行部34に対して依頼する(ステップS425)。そして、制御部31から依頼を受けた動作実行部34は、デバッグ制御方法202に基づいた所定の処理を実行する(ステップS430)。
【0032】
上述した実施形態においては、デバッグ対象装置10にロジックアナライザ装置20と、エミュレータ装置30とを接続し、ロジックアナライザ装置20にて検知した異常に基づいた所定のデバッグ制御方法による処理をエミュレータ装置30にて実行する構成を採用した。これによって、ロジックアナライザ装置20にて異常が検出されたタイミングによって、エミュレータ装置30がデバッグ対象装置10に対して上記デバッグ制御方法による処理動作を実行し、この処理動作に基づいて収集されるデータ(上述した本実施形態ではレジスタ情報)に基づいて異常の原因となるソフトウェア11aの不具合を特定可能とした。むろん、ソフトウェア11aの不具合を特定するための構成はこのような構成に限定されず、デバッグ対象装置10にてデバッグモニタプログラムを稼働させ、このデバッグモニタプログラムにてソフトウェア11aの不具合を特定する構成であっても良い。
【0033】
(3)変形例の構成:
図8は、かかる場合における本発明にかかるデバッグ装置の構成を示した構成図である。同図において、開発中のデバッグ対象装置10のハードウェア10a上には、上述と同様にCPU11と、バス12と、インターフェース部14と、ハードウェアコンポーネント13とが配設されている。この実施形態ではインターフェース部14にデバッグ用コンピュータ40を接続している。また、ロジックアナライザ装置20のプローブ24はハードウェアコンポーネント13のテストピン13aに接続されており、ロジックアナライザ装置20は、ハードウェアコンポーネント13の状態を示すハードウェア情報を信号レベルで入力して記録することができるとともに、同信号レベルの遷移をタイムチャートにて表示可能になっている。また、入力したハードウェア情報が所定の条件を満たしたことを検知できる。
【0034】
すなわち、入力したハードウェア情報の態様に基づいてハードウェアコンポーネント13の稼働状態が正常であるか異常であるかを判別することによって、異常を検知可能になっている。上述したとおり、デバッグ対象装置10にはデバッグ用コンピュータ40とのインターフェース部14が備えられており、同インターフェース部14を介してデバッグ用コンピュータ40と接続可能になっている。ここで、CPU11では、図示しないROMもしくはハードディスクに格納されているデバッグ用コンピュータ40とデバッグ情報を遣り取りするデバッグモニタプログラムP1を図示しないRAMをワークエリアとしつつ動作する。このデバッグモニタプログラムP1を用いることによって、デバッグ用コンピュータ40からCPU11上で動作する開発中のソフトウェア、すなわち、デバッグ対象となるソフトウェアのデバッグを実行可能になっている。
【0035】
また、デバッグ用コンピュータ40では、デバッガと呼ばれるソフトウェアツールが動作している。このようなソフトウェアツールを用いることにより、デバッグ対象装置10にて稼働するデバッグモニタプログラムP1とインターフェース部14を介して通信可能になる。そして、デバッグモニタプログラムP1は、デバッグ用コンピュータ40にて動作するデバッガの要求に応じて、CPU11の動作を一時的に停止(HALT)させたり、CPU11のレジスタ情報等の各種情報を入力し、デバッグ用コンピュータ40のデバッガに出力することが可能になっている。ここで、ロジックアナライザ装置20は、上述したのと同様にプローブ24を介して入力したハードウェア情報に対応する異常情報を出力する通知部22を備えるとともに、このハードウェア情報と出力すべき異常情報との対応付けを行う出力情報定義部23を備える。
【0036】
そして、これらを制御する制御部21を備えている。また、デバッグモニタプログラムP1は、制御機能P11と、ロジックアナライザ装置20の通知部22が出力する異常情報を受け取る通知受理機能P12と、この受け取った異常情報に対してどのような動作をするかを定義する動作定義機能P13と、受け取った異常情報に対応した動作を実際に実行する動作実行機能P14とを備えている。さらに、デバッグ対象装置10における開発中のハードウェア10aには、ロジックアナライザ装置20の通知部22が出力する異常情報を入力し、バス12のプロトコルに変換するとともに、同変換した異常情報をデバッグモニタプログラムP1に出力可能な通知変換装置15が備えられている。
【0037】
かかる構成によって、ロジックアナライザ装置20はプローブ24を介して入力したハードウェア情報に基づいて異常の発生を検知した場合は、この異常の発生を示すハードウェア情報に対応した事象IDを通知変換装置15を介してデバッグ対象装置10にて動作するデバッグモニタプログラムP1に通知する。そして、デバッグモニタプログラムP1は、入力した事象IDに対応した所定のデバッグ制御方法(例えば、CPU11の停止、レジスタ情報の取得等)を実行し、その結果をインターフェース部14を介してデバッグ用コンピュータ40に出力することによって、デバッグ対象装置10にて動作する開発中のソフトウェア11aのデバッグを実施可能にする。
【0038】
上述した実施形態においては、ロジックアナライザ装置20にてデバッグ対象装置10のハードウェアコンポーネント13にて発生する異常を検知するとともに対応する異常情報を示す事象IDをエミュレータ装置30もしくはデバッグモニタプログラムP1に出力する。そして、この事象IDを入力したエミュレータ装置30もしくはデバッグモニタプログラムP1にて所定のデバッグ制御方法に基づいた処理を実行することによって、デバッグ対象装置10のハードウェアコンポーネント13に対して異常を発生させる原因となるソフトウェア11aの処理内容を特定することを可能にした。一方、ハードウェアの異常がソフトウェアに影響を及ぼす場合もあり、かかる場合は、ソフトウェアに異常を発生させる原因となるハードウェアの異常を特定することが必要となる。そこで、次に、ハードウェアの異常をデバッグするためのデバッグ装置の構成について説明する。
【0039】
(4)ハードウェアの異常をデバッグするデバッグ装置の構成:
図9は、本発明にかかるデバッグ装置の構成を示した構成図である。ここでは、ハードウェアをデバッグする際のデバッグ装置の構成を示している。同図において、開発中のハードウェアありデバッグの対象となるデバッグ対象装置10のハードウェア10a上にはCPU11と、バス12、デバッグ用コンピュータ40とのインターフェース部14aと、割込みコントローラ16とが備えさせてある。本実施形態において割込コントローラ16は、2つの割込み信号(割込み信号A,割込み信号B)の入力を管理する。ロジックアナライザ装置20のプローブ24は割込みコントローラ16とバス12とのインターフェースとなる出力ピン14bに接続されており、ロジックアナライザ装置20は、割込みコントローラ16が受けた割込み状態を信号レベルで記録可能になっている。また、開発中のハードウェア10aは、上述したようにデバッグ用コンピュータ40とのインターフェース部14aを備えており、デバッグ用コンピュータ40と接続可能になっている。そして、CPU11内には、デバッグ用コンピュータ40との間にてデバッグ情報(以下の例ではレジスタ情報)を遣り取りするデバッグ用モニタプログラムP1が動作している。
【0040】
このようなデバッグ用モニタプログラムP1を用いることによって、上述したのと同様に、デバッグ用コンピュータ40からCPU11上で動作する開発中のソフトウェア11aに対するデバッグを実行可能になっている。また、デバッグ用コンピュータ40では、デバッガ44と呼ばれるソフトウェアツールを動作させる。このデバッガ44を動作させることによって、デバッグ対象装置10にて動作している上述したデバッグモニタプログラムP1とインターフェース部14aを介して通信可能になる。ここで、デバッグモニタプログラムP1は、デバッガ用コンピュータ40にて動作するデバッガ44の要求に応じてCPU11の動作を一時的に停止(HALT)させ、CPU11のレジスタ情報等の情報を入力し、デバッグ用コンピュータ40のデバッガ44に出力することが可能になっている。
【0041】
デバッグ用コンピュータ40にて動作するデバッガ44は、通知機能42を備えるとともに、デバッグ対象装置10にて動作しているソフトウェア11aの動作状態に基づいて入力したソフトウェア情報と出力すべき情報との対応付けを行う出力情報定義機能43を備える。そして、これらの各機能は制御機能41によって制御される。また、ロジックアナライザ装置20は、制御部51と、デバッガ44から事象IDを受け取る通知受理部52と、この受け取った事象IDに対してどのようなデバッグ制御方法を実行するかを定義する動作定義部53と、定義されたデバッグ制御方法に基づいて実際に所定の処理動作を実行する動作実行部54を備える。
【0042】
かかる構成において、デバッガ44では、通知機能42にてCPU11上で動作する開発中のソフトウェア11aの動作内容をソフトウェア情報として入力し、このソフトウェア情報が所定の条件を満たす場合(すなわち、異常を示すソフトウェア情報を入力した場合)、出力情報定義機能43にて定義されているソフトウェア情報と異常情報(事象ID)に基づいて、入力したソフトウェア情報に対応した事象IDをロジックアナライザ装置50に出力する。一方、ロジックアナライザ装置50は、制御部51の制御に基づいて、上述したように通知受理部52にてデバッガ44が出力する事象IDを受理し、動作定義部53にてこの受理した事象IDに対応するデバッグ制御方法の処理動作を認識し、動作実行部54にてこの認識した処理動作を実行する。
【0043】
上述したデバッグ装置を使用してデバッグ対象装置10のハードウェア10aおよび同ハードウェア10aと密に連携して動作するソフトウェア11aのデバッグを実施する。このデバッグ装置では多種多様の異常を解析の対象とすることが可能である。ここで、この多種多様の解析可能な異常の中から、本実施形態において説明する異常の一例を示す。本実施形態におけるデバッグ対象装置10でおける、開発中のソフトウェア11aは、割込み信号Aと、割込み信号Bをこの順番に所定の間隔によって入力すると、処理動作が停止してしまうとする。かかる場合、ソフトウェアデバッガのみでデバッグしたとすると、割込みの情報をログとしてメモリに記録し、異常が発生した際にそのログを解析し、原因を探ることになる。
【0044】
しかし、ログをメモリに記録する動作が、割込み発生のタイミングを変化させてしまい、異常が発生しないことがある。すなわち、図10に示すとおり、ログなしのコードにおいては、割込みAが発生すると(ステップS500)、この割込みAに対応する処理を実行する(ステップS505)。ここで、この割込みAに対応する処理を実行している最中に割込みBが発生すると(ステップS510)、異常が発生し、処理動作が停止する。従って、以降の割込みBに対応する処理(ステップS515)と、ステップS505にて実行中であった割込みAに対応する処理は実行されないことになる。
【0045】
この異常を解析するために、ログ出力のコードを挿入した場合を図11に示す同図においては、割込みAが発生すると(ステップS600)、ログ出力を行う(ステップS605)。そして、割込みBが発生すると(ステップS610)、ログ出力を行う(ステップS615)。これにより、割込みAに対応する処理(ステップS620)がステップS615におけるログ出力の後にまわり、ログ採取中に割込みBが発生する状態が再現できなくなる。すなわち、異常が発生しないことになる。従って、異常が発生するのハードウェア10aのデバッグを実施できない。
【0046】
そこで、本実施形態においては、上述した構成に基づいて、ログの処理内容を追加するなどのソフトウェア11aの変更を行うことなく、ハードウェア10aに発生する異常を特定可能な本発明にかかるデバッグ装置の解析方法について説明する。この解析に際しては、予めデバッガ44にある送信情報定義機能43を用いて、CPU11にて動作するソフトウェア11aに異常が発生した場合に起こる事象を表現したソフトウェア異常情報301と、それに対してロジックアナライザ装置20に出力する異常情報(事象ID)とを関連付けておく。この関連付けを図12に示す。同図において、出力情報定義テーブル300は、ソフトウェア異常情報301と、異常情報としての事象ID302とをデータとして備えている。例えば、ソフトウェア異常情報301が「ソフトウェアの停止を検知する関数でCPUが停止」であれば、事象IDは「1」と対応付けられている。また、ロジックアナライザ装置50においても予めこの異常情報(事象ID)に対する当該ロジックアナライザ装置50の処理動作を関連付けておく。この関連付けを図13に示す。同図において、事象ID401と、処理動作の内容を示すデバッグ制御方法402とをデータとして備えている。例えば、事象ID401が「1」であれば、デバッグ制御方法402は「ハードウェア情報の記録を停止」にと対応付けられている。ここで、出力情報定義テーブル300にて定義された条件は、CPU11上で動作するソフトウェア11aにはその停止を検知する関数があり、そこにデバッガ44を使ってブレイクポイントを設定してソフトウェア11aを実行させると、そのブレイクポイントで処理が停止したということを示している。
【0047】
次に、異常が発生する原因を特定する手順を示す。
1.CPU11上のソフトウェア11aを動作させた場合に、ソフトウェア11aにて異常が発生するパターンの割込みがハードウェア10aにて発生した。
2.この割込みによって、ソフトウェア11aの処理動作が停止し、ブレイクポイントで停止した。
3.デバッガ44はこのソフトウェア11aの停止を検知する関数で停止したことを制御機能41にて認識する。
4.デバッガ44は、出力情報定義機能43にて判別した認識した条件(停止を検知する関数)に対応する事象IDを通知機能42によってロジックアナライザ装置50に出力する。
【0048】
5.ロジックアナライザ装置50では、通知受理部51が事象IDを入力し、制御部51へ渡す。
6.制御部51は事象IDを動作定義部53に渡し、事象IDに対する動作の特定を依頼する。
7.動作定義部53は、定義に従ってハードウェア情報の記録を停止するという情報を制御部51に渡す。
8.制御部51はこの情報を動作実行部54に渡す。
9.動作実行部54は、割込みコントローラ16の状態の記録を停止する。
以上の手順を実行することにより、ロジックアナライザ装置50には、ソフトウェア11aにて異常が発生した際の、割込み信号Aと、割込み信号Bの発生タイミングが記録される。従って、この割込み信号Aと割込み信号Bの発生タイミングを解析することによって、ソフトウェア11aの処理動作に影響を及ぼすハードウェア10aの異常を特定することが可能になる。
【0049】
(5)各装置の動作内容:
図14は、上述した手法によってデバッグを実施する際のデバッガ用コンピュータ40の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部41は、インターフェース部14aを介してデバッグ対象装置10のCPU11にて動作するソフトウェア11aの実行状態を示すソフトウェア情報を取得する(ステップS700)。そして、制御部41はこの取得したソフトウェア情報を解析することによって、ソフトウェア11aの処理動作に異常が発生しているか否かを判別する(ステップS705)。ここで、取得したソフトウェア情報が異常の発生を示したものではないと判別した場合は、ステップS700に戻る。
【0050】
一方、取得したソフトウェア情報に基づいてソフトウェア11aの処理動作における異常を検知した場合は(ステップS710)、制御部41は、異常を示すソフトウェア異常情報に対する事象IDを出力情報定義部43に問い合わせる(ステップS715)。問い合わせを受けた出力情報定義部43は、出力情報定義テーブル300に基づいて、異常を示すソフトウェア異常情報301に対応する事象ID302を認識する(ステップS720)。出力情報定義部43は、この認識した事象ID302を制御部41に受け渡す(ステップS725)。ここで、制御部41は、この出力情報定義部43から受け取った事象ID302をロジックアナライザ装置50に対して出力するように通知部42に依頼する(ステップS730)。そして、制御部41から依頼を受けた通知部42は、この事象ID302をロジックアナライザ装置50に対して出力する(ステップS735)。
【0051】
図15は、上述した手法によってデバッグを実施する際のロジックアナライザ装置50の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部51は通信受理部52を制御してデバッグ用コンピュータ40から出力される事象ID302が同通信受理部52に入力されたか否かを判別する(ステップS800)。この判別処理を事象ID302が受理されるまで継続する。一方、通知受理部52に対する事象ID302の入力があった場合は、通知受理部52は、入力した事象ID302を制御部51に受け渡す(ステップS805)。事象ID302が受け渡された制御部51は、この事象ID302に対応するデバッグ制御方法を動作定義部53に問い合わせる(ステップS810)。
【0052】
制御部51からの問い合わせを受けた動作定義部53は、処理動作定義テーブル400に基づいて、事象ID302に対応する事象ID401に対して対応付けられたデバッグ制御方法402を判別する(ステップS815)。事象ID401に対応するデバッグ制御方法402を判別した動作定義部53は、この判別したデバッグ制御方法402を制御部51に通知する(ステップS820)。通知を受けた制御部51は、このデバッグ制御方法402に基づいた処理の実行を動作実行部54に対して依頼する(ステップS825)。そして、制御部51から依頼を受けた動作実行部54は、デバッグ制御方法402に基づいた所定の処理を実行する(ステップS830)。
【0053】
(6)まとめ:
このように、上述したソフトウェアの異常をデバッグするデバッグ対象装置10では、同デバッグ対象装置10にて異常が発生した際にデバッグ用コンピュータ40において動作するデバッガにてレジスタ情報を入力する。このレジスタ情報にはプログラムカウンタの値が含まれているため、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【0054】
また、ハードウェアの異常をデバッグするデバッグ装置10おいては、ロジックアナライザ装置50には、ソフトウェア11aにて異常が発生した際の、割込み信号Aと、割込み信号Bの発生タイミングが記録される。従って、この割込み信号Aと割込み信号Bの発生タイミングを解析することによって、ソフトウェア11aの処理動作に影響を及ぼすハードウェア10aの異常を特定することが可能になる。
【図面の簡単な説明】
【図1】デバッグ装置の構成図。
【図2】レジスタアクセスログ出力無しのフローチャート。
【図3】レジスタアクセスログ出力有りのフローチャート。
【図4】出力情報定義テーブルの構成図。
【図5】処理動作定義テーブルの構成図。
【図6】ロジックアナライザ装置のフローチャート。
【図7】エミュレータ装置の動作フローチャート。
【図8】デバッグ装置の構成図。
【図9】デバッグ装置の構成図。
【図10】割込みログ出力無しのフローチャート。
【図11】割込みログ出力有りのフローチャート。
【図12】出力情報定義テーブルの構成図。
【図13】処理動作定義テーブルの構成図。
【図14】デバッガ用コンピュータの動作フローチャート。
【図15】ロジックアナライザ装置の動作フローチャート。
【符号の説明】
10…デバッグ対象装置 11…CPU 12…バス 13…ハードウェアコンポーネント 13a…テストピン 14…インターフェース部 20…ロジックアナライザ装置 21…制御部 22…通知部 23…出力情報定義部 24…プローブ 30…エミュレータ装置 31…制御部 32…通知受理部 33…動作定義部 34…動作実行部 40…デバッグ用コンピュータ
【発明の属する技術分野】
本発明は、デバッグ装置およびデバッグ方法に関し、特に、ハードウェアおよび同ハードウェアと密に連携して動作するソフトウェアについてデバッグするデバッグ装置およびデバッグ方法に関する。
【0002】
【従来の技術】
ハードウェアと密に連携するソフトウェアを開発している場合には、ハードウェアが開発段階であるため、ハードウェアの入出力のタイミングに依存する不具合が発生しやすく、その不具合を解決するために多くの時間を費やすことが多い。ここで、不具合の一例を下記する。
1.ハードウェアを動作させるために、ソフトウェアからハードウェアのレジスタやメモリにアクセスする。かかる場合、アクセスの順番やアクセスタイミング等によって、ハードウェアが停止することがある。
2.ハードウェアは、内部で起きた事象を、同ハードウェアを制御するオペレーティングシステムに伝えるために、割込みを発生させる。かかる場合、オペレーティングシステムがある順番で割込みを受けると、オペレーティングシステム自体が停止してしまうことがある。
【0003】
一般に、開発中のハードウェアをデバッグする場合には、ホストコンピュータと開発中のシステムをICE(InCercuitEmurator)を介して接続し、このハードウェア上で動作するソフトウェアの動作状態をトレースすることがある。また、一方では、開発中のハードウェアのプロセッサに、デバッグ用コード(デバッグモニタ等)を組み込み、そのデバッグ用コードを介して、ホストコンピュータと開発中のハードウェアを接続し、同ハードウェアが備えるCPUにて動作するソフトウェアの動作状態をトレースすることがある。上記のような不具合の原因を解析するには、上記に示したハードウェアのCPU上にて動作するソフトウェアの動作状態をトレースできるデバッグシステムを用いて、ハードウェアに関するログ情報を収集するコードを埋め込んだソフトウェアを動作させ、バグが発生した時点で、ソフトウェアを停止させ、ログを解析する。
【0004】
しかし、ログ情報を収集するコードを挿入してソフトウェアを実行させると、ハードウェアへの入出力のタイミングが替わってしまい、タイミングに依存した不具合は発生しないことが多い。その場合、デバッグ情報をソフトウェア自身から得る方法とは別に、ハードウェアから断片的な情報を得て、解析することもある。ハードウェアの情報は、ロジックアナライザと呼ばれる機器によって入手可能である。ロジックアナライザは、ハードウェアの信号をトレースし、表示できる装置である。プローブと呼ばれる信号入力装置を、開発中のハードウェアのテストピンなどに引っ掛けて、そこからリアルタイムにハードウェアの信号の挙動を得ることができる。テストピンはハードウェアの設計によって、その数や種類が異なるが一般的にハードウェアの設計段階で存在しているものである。テストピンはコンピュータシステムのアドレスバスやデータバス、割込信号線などに付けられていることが一般的である。
【0005】
よって、ロジックアナライザはハードウェアの信号の挙動よりも、論理的な情報、例えば、アクセスしているメモリのアドレスや割込信号がCPUに入ったという情報などを得ることができる。このようにロジックアナライザにより論理的な情報を得る手法は既に開示されている(例えば、特許文献1を参照。)。また、ハードウェア内部にデバッグシステムを埋め込む例もある(例えば、特許文献2を参照。)。また、ソフトウェアの動作とハードウェア情報とが関連付けられている例もある(例えば、特許文献3を参照。)この例では、ハードウェアの情報をトレースしてトレースメモリに格納し、ある不具合が発生したときにトレースを止め、トレース情報を外部に出力できるLSIが提案されている。さらに
、同様の技術として、プロセッサの内部情報をトリガとして、あるアクションを定義できるものもある(例えば、特許文献4を参照。)。これによれば、ハードウェアに内蔵のロジックアナライザの情報を入手できる可能性がある。
【0006】
【特許文献1】
特開平10−105427号公報
【特許文献2】
特開平9−167105号公報
【特許文献3】
特開平8−63374号公報
【特許文献4】
特開2001−147816号公報
【0007】
【発明が解決しようとする課題】
上述した従来のデバッグ装置においては(特に、特許文献3)、LSIの内部だけの情報に限られ、また、その後のアクションが限定されるため、デバッグできる範囲が限られるといった課題があった。
【0008】
本発明は、上記課題にかんがみてなされたもので、様々なハードウェアコンポーネントの情報を入力すると同時に、その情報をトリガとして、ソフトウェアデバッグシステムが様々なアクションを取ることが可能であるとともに、ソフトウェアから入力する情報をトリガとして、ロジックアナライザなどハードウェアのデバッグシステムにて様々なアクションを取ることを可能とすることによって、ハードウェアおよびソフトウェアの連携させつつデバッグを実施することが可能なデバッグ装置およびデバッグ方法の提供を目的とする。
【0009】
【課題を解決するための手段および作用・効果】
上記目的を達成するため、CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置を提供する。このとき、ハードウェア情報記録手段にてハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録する。そして、ハードウェア異常検出手段では、ハードウェア情報記録手段に記録されるハードウェア情報に基づいてハードウェアに発生する異常を検出する。ハードウェア異常検出手段は、異常を検出した場合に所定の異常情報を出力する。そして、デバッグ制御手段は、ハードウェア異常検出手段から出力された異常情報を入力すると、ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行する。ソフトウェアはハードウェア環境にて実行されているため、ハードウェアの異常が検出された際に、ハードウェアに対して所定のデバッグ制御処理を実行すれば、ソフトウェアの不具合を特定することが可能になる。
【0010】
ハードウェア異常検出手段にて出力する異常情報を特定する手法の一例として、ハードウェア異常検出手段に検出可能な異常と、出力する異常情報とを対応させた出力情報定義テーブルを備えさせる。そして、検出した異常に基づいてこの出力情報定義テーブルを検索し、対応する異常情報を取得して出力する。予め検出可能な異常と、異常情報とが対応されているため、異常を検出した場合に、対応する異常情報を高速に特定することが可能になる。デバッグ制御手段にて実行するデバッグ制御処理の一例として、デバッグ制御手段は、ハードウェア情報取得手段にて取得されたハードウェア情報を異常時ハードウェア情報として取得する。これによって、異常が発生したタイミングにおけるハードウェア情報に基づいてソフトウェアの不具合を特定することが可能になる。
【0011】
ハードウェア情報の一例として、ハードウェア情報記録手段は、レジスタ情報の遷移を記録する。レジスタ情報にはソフトウェアの処理手順を表示するプログラムカウンタが含まれているため、この内容に基づいてソフトウェアの何れ処理にて不具合が発生しているかを詳細に検証することが可能になる。また、デバッグ制御手段にて実行するデバッグ制御処理の他の一例として、上記デバッグ制御手段は、CPUの動作を停止させる処理を実行する。CPUを停止させれば、ソフトウェアも停止することになる。従って、ソフトウェアの処理動作に伴って変化し得るハードウェア情報はその時点で更新されなくなることになるため、記録されるハードウェア情報を所定量に限定することができる。これによって、よりソフトウェアの不具合の発生箇所を特定し易くすることが可能になる。
【0012】
上述した発明の構成においては、ソフトウェアの不具合を検証することができるデバッグ装置を提案することが可能になる。一方、ハードウェアと同ハードウェアと密に連携して動作するソフトウェアのデバッグを実施する場合、ソフトウェアの処理動作に影響を及ぼし得るハードウェア側の不具合も検証することができると好適である。そこで、CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置を提供するにあたって、ソフトウェア異常検出手段にてソフトウェアの実行状態に基づいて同ソフトウェアの異常を検出し、異常を検出した場合に所定の異常情報を出力する。
【0013】
ここで、デバッグ制御手段にて、出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行する。これによって、ソフトウェアにて異常が発生したタイミングにおいて、ハードウェアに対してデバッグ制御処理を実行することにより、ハードウェアの状態を認識することが可能となり、ソフトウェアの処理動作に影響を及ぼし得るハードウェアの不具合を特定することが可能となる。デバッグ制御手段が実行するデバッグ制御処理の一例として、デバッグ制御手段にハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録するハードウェア情報記録手段を備えさせる。そして、デバッグ制御手段にてデバッグ制御処理として、記録されたハードウェア情報を取得する処理を実行する。これによって、ソフトウェアの異常が検出された時点におけるハードウェアの内部制御情報の遷移を示すハードウェア情報を認識することが可能となり、このハードウェア情報に基づいてソフトウェアの異常の原因となり得るハードウェアの不具合を特定することが可能になる。
【0014】
上述した内部制御情報の一例として、ハードウェア情報記録手段は上記内部制御情報として、割込信号情報の遷移を記録する。これによって、ソフトウェアの異常が発生した際の割込み信号の信号遷移を認識することが可能となり、この割込み信号の信号処理に不具合がある場合は、早急に不具合を特定することが可能になる。ハードウェア異常検出手段にて出力する異常情報を特定する手法の一例として、ソフトウェア異常検出手段に検出可能な異常と、出力する異常情報とを対応させた出力情報定義テーブルを備えさせる。そして、検出した異常に基づいて同出力情報定義テーブルを検索し、対応する異常情報を取得して出力する。このように予め検出可能な異常と、異常情報とを対応させておくことによって、異常を検出した場合に、対応する異常情報を高速に特定することが可能になる。
【0015】
上述してきたデバッグ制御手段にてデバッグ制御方法を特定する手法の一例として、デバッグ制御手段に入力する異常情報と、実行するデバッグ制御処理方法とを対応させた処理定義テーブルを備えさせる。そして、入力した異常情報に基づいて同処理定義テーブルを検索し、対応するデバッグ制御処理方法を取得し、同取得したデバッグ制御処理方法に基づいてデバッグ制御処理を実行する。このように予め入力し得る異常情報と、実行するデバッグ制御方法とを対応させておくことによって、異常情報を入力した場合に、対応するデバッグ制御方法を高速に特定することが可能になる。また、上述してきたデバッグ装置は、その方法としても発明が成立することは言うまでもない。
【0016】
【発明の実施の形態】
ここでは、下記の順序に従って本発明の実施形態について説明する。
(1)ソフトウェアの異常をデバッグするデバッグ装置の構成:
(2)各装置の動作内容:
(3)変形例の構成:
(4)ハードウェアの異常をデバッグするデバッグ装置の構成:
(5)各装置の動作内容:
(6)まとめ:
【0017】
(1)ソフトウェアの異常をデバッグするデバッグ装置の構成:
図1は、本発明にかかるデバッグ装置の構成を示した構成図である。ここでは、ソフトウェアをデバッグして不具合(以下、本実施形態においては不具合を「異常」と表現する。)を特定する際のデバッグ装置の構成を示している。同図において、デバッグ装置のデバッグ対象は、例えば、開発中のハードウェアを有し、それと同時に、このハードウェアと密に連携して動作するソフトウェアを開発しているデバッグ対象装置10とする。このデバッグ対象装置10は、内部にCPU11と、同CPU11にバス12を介して接続された開発中のハードウェアコンポーネント13が接続されている。また、後述するエミュレータ装置とCPU11とを双方向にて通信を可能にするためのインターフェース部14を備えている。ハードウェアコンポーネント13にはテストピン13aが形成されている。そして、デバッグ対象装置10にはロジックアナライザ装置20が接続されている。開発中のソフトウェア11aは、図示しないROMやハードディスクに格納され、適宜CPU11に読み出され、図示しないRAMをワークエリアとしつつ動作する。
【0018】
このロジックアナライザ装置20は、デバッグ対象装置10のハードウェアコンポーネント13等のハードウェア10aの信号をトレースして記録するとともに、トレース状態をタイムチャート等にて表示可能な装置である。このとき、ロジックアナライザ装置20は、プローブと呼ばれる信号入力装置を開発中のハードウェアコンポーネント13等のハードウェア10aのテストピンなどに引っ掛け、同テストピンからリアルタイムにハードウェア10aの信号の挙動を取得することが可能になっている。このロジックアナライザ装置20は、内部に図示しないCPU、RAM,ROM等の内部機器を有し、これらの内部機器によって、所定の機能を実現する制御部21と、通知部22と、出力情報定義部23とが実行可能になっている。また、本実施形態において、上述したロジックアナライザ装置20のプローブ24は、ハードウェアコンポーネント13のテストピン13aに接続される。
【0019】
これによって、ロジックアナライザ装置20はハードウェアコンポーネント13の状態を信号レベルで記録および表示可能になっている。そして、ロジックアナライザ装置20は、この信号レベルの記録によって、デバッグ対象装置10のハードウェア10aに関するハードウェア情報を取得し、同ハードウェア情報が所定の条件を満たしているか否かを検知することが可能になっている。すなわち、ハードウェア情報に基づいてデバッグ対象装置10のハードウェア10aの稼働状況が正常であるか異常であるかを判別可能になっている。ここで、上述したハードウェアコンポーネント13に配設されるテストピン13aは、ハードウェア10aの設計によって、その数や種類が異なるが、一般的にハードウェア10aの設計段階で存在しているものであり、コンピュータシステムのアドレスバスやデータバス、割込信号線などに付けられていることが一般的である。
【0020】
また、デバッグ対象装置10は、上述したようにエミュレータ装置30とのインターフェースとなるインターフェース部14を備えており、エミュレータ装置30と接続可能になっている。このようにエミュレータ装置30を用いることにより、エミュレータ装置30に接続されたデバッグ用コンピュータ40からデバッグ対象装置10のCPU11上にて動作する開発中のソフトウェア11aのデバッグを実施可能になる。ここで、デバッグ用コンピュータ40では、デバッガと呼ばれるソフトウェアツールが動作可能になっており、このデバッガの動作に基づいて、同デバッグ用コンピュータ40はエミュレータ装置30と通信可能になっている。そして、このエミュレータ装置30は、デバッグ用コンピュータ40にて動作するデバッガからの要求に応じて、デバッグ対象装置10のCPU11の動作を一時的に停止(HALT)させ、当該CPU11のレジスタ等の情報を入手し、デバッガに出力することが可能になっている。
【0021】
上述したデバッグ装置を使用してデバッグ対象装置10のハードウェア10aおよび同ハードウェア10aと密に連携して動作するソフトウェア11aのデバッグを実施する。このデバッグ装置では多種多様の異常を解析の対象とすることが可能である。ここで、この多種多様の解析可能な異常の中から、本実施形態において説明する異常の一例を示す。本実施形態におけるデバッグ対象装置10では、開発中のデバッグ対象装置10のハードウェアコンポーネント13がソフトウェア11aの処理内容に基づいて、CPU11からレジスタAとレジスタBを順番に所定の間隔でアクセスされた場合に、その機能を停止してしまう異常を有しているとする。このとき、ソフトウェア11aを対象としたソフトウェアデバッガのみによってデバッグを行う場合、レジスタA,Bに対してアクセスを行った際に、このレジスタA,Bへのアクセス情報をログとしてメモリに記録するようにソフトウェア11aの処理内容を変更し、異常が発生した際にそのログを解析することによって、異常の発生する原因を探索することになる。
【0022】
しかし、ログをメモリに記録する処理動作が、レジスタに対するアクセスのタイミングを変化させてしまい異常が発生しなくなることが多い。かかる状況を図2および図3に示す。図2において、ログをメモリに記録しない場合は、レジスタAに対するアクセスが発生する処理と(ステップS100)、レジスタBに対するアクセスが発生する処理(ステップS105)とのアクセス間隔は0.5msecになっており、このアクセス間隔によってレジスタA,Bに対するアクセスが発生した場合に異常が発生する。一方、図3において、ログをメモリに記録する場合、レジスタAに対するアクセスが発生する処理(ステップS200)の次に、ログをメモリに記録する処理(ステップS205)が入り、その後にレジスタBにアクセスする処理が発生した場合(ステップS210)、アクセス間隔は1msecに伸びてしまい、異常が発生しなくなる。また、ソフトウェアデバッガのみでは、何れのレジスタに対するアクセスによってハードウェアコンポーネント13の異常が発生したかを特定することも不可能である。
【0023】
そこで、本実施形態においては、上述した構成に基づいてログの処理内容を追加するなどのソフトウェア11aの変更を行うことなく、ハードウェア10aに発生する異常を特定可能な本発明にかかるデバッグ装置の解析方法について説明する。この解析に際しては、予めロジックアナライザ装置20の出力情報定義部23を用いて、ハードウェアコンポーネント13に異常が発生した場合に現れるハードウェア情報と、異常が発生した際にこの異常に対応してエミュレータ装置30に出力するべき異常情報とを関連付けておく。この関連付けを図4に示す。同図において、出力情報定義テーブル100は、ハードウェア情報101と、異常情報としての事象ID102とをデータとして備えている。例えば、ハードウェア情報101が「ハードウェアコンポーネントの停止」であれば、事象IDは「1」と対応付けられている。また、エミュレータ装置30においても予めこの異常情報に対する当該エミュレータ装置30の処理動作を関連付けておく。
【0024】
この関連付けを図5に示す。同図において、事象ID201と、処理動作の内容を示すデバッグ制御方法202とをデータとして備えている。例えば、事象ID201が「1」であれば、デバッグ制御方法202は「CPU停止、レジスタ情報入力、デバッグ用コンピュータに通知」と対応付けられている。ここで、ハードウェアコンポーネント13の異常を表すハードウェア情報とは、ロジックアナライザ装置20を用いて得られるハードウェア10aの信号線の情報の集合である。例えば、ハードウェアコンポーネント13が停止した際に、ある信号線(リセット信号など)がアサートされる場合、その信号線がアサートされたことが異常を表すハードウェア情報となる。
【0025】
次に、異常が発生する原因を特定する手順を示す。
1.CPU11上にてソフトウェア11aを動作させた場合に、ソフトウェア11aの処理動作において、ハードウェア10aにて異常が発生するタイミングによって、レジスタA,Bに対するアクセスが行われる。
2.このレジスタA,Bに対するアクセスによって、ハードウェアコンポーネント13が停止する。
3.ロジックアナライザ装置20は、制御部21の制御に基づいて、プローブ24を介して、ハードウェアコンポーネント13にて異常が発生したことを示すハードウェア情報を入力する。
【0026】
4.ロジックアナライザ装置20は、出力情報定義部23および通知部22の動作に基づいて入力したハードウェア情報に対応する「事象ID」をエミュレータ装置30に出力する。
5.エミュレータ装置30では、通知受理部32が「事象ID」を受理し、制御部31に渡す。
6.エミュレータ装置30の制御部31は、受け取った「事象ID」を動作定義部33に渡し、「事象ID」に対する動作の特定を依頼する。
7.動作定義部33は「CPU停止、レジスタ情報入手、デバッガに通知」というデバッグ制御方法を示す情報を制御部31に返答する。
8.制御部31は上記の情報を動作実行部34に渡す。
【0027】
9.動作実行部34は、インターフェース部14を介して所定の制御信号をデバッグ対象装置10に出力することによって、CPU11を停止させ、レジスタ情報を入力し、デバッガ用コンピュータ40にて動作するデバッガに通知する。
10.通知を受けたデバッガは、エミュレータ装置30からレジスタ情報を入力する。
このように、デバッグ用コンピュータ40において動作するデバッガにて入力するレジスタ情報には、プログラムカウンタの値が含まれている。従って、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【0028】
(2)各装置の動作内容:
図6は、上述した手法によってデバッグを実施する際のロジックアナライザ装置20の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部21は、プローブ24を介してハードウェアコンポーネント13のテストピン13aから信号レベルもしくは構造化されたハードウェア情報を入力する(ステップS300)。そして、この入力されたハードウェア情報を解析することによってハードウェアコンポーネント13に異常が発生しているか否かを判別する(ステップS305)。ここで、入力したハードウェア情報が異常の発生を示したものではないと判別した場合は、ステップS300に戻る。
【0029】
一方、入力したハードウェア情報に基づいてハードウェアコンポーネント13の異常を検知した場合は(ステップS310)、制御部21は、異常を示すハードウェア情報に対する事象IDを出力情報定義部23に問い合わせる(ステップS315)。問い合わせを受けた出力情報定義部23は、出力情報定義テーブル100に基づいて、異常を示すハードウェア情報101に対応する事象ID102を認識する(ステップS320)。出力情報定義部23は、この認識した事象ID102を制御部21に受け渡す(ステップS325)。ここで、制御部21は、この出力情報定義部23から受け取った事象ID102をエミュレータ装置30に対して出力するように通知部22に依頼する(ステップS330)。そして、制御部21から依頼を受けた通知部22は、この事象ID102をエミュレータ装置30に対して出力する(ステップS335)。
【0030】
図7は、上述した手法によってデバッグを実施する際のエミュレータ装置30の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部31は通信受理部32を制御してロジックアナライザ装置20が出力される事象ID102が同通信受理部32に入力されたか否かを判別する(ステップS400)。この判別処理を事象ID102が入力されるまで継続する。一方、通知受理部32に対する事象ID102の入力があった場合は、通知受理部32は、入力した事象ID102を制御部31に受け渡す(ステップS405)。事象ID102が受け渡された制御部31は、この事象ID102に対応するデバッグ制御方法を動作定義部33に問い合わせる(ステップS410)。
【0031】
制御部31からの問い合わせを受けた動作定義部33は、処理動作定義テーブル200に基づいて、事象ID102に対応する事象ID201に対して対応付けられたデバッグ制御方法202を判別する(ステップS415)。事象ID201に対応するデバッグ制御方法202を判別した動作定義部33は、この判別したデバッグ制御方法202を制御部31に通知する(ステップS420)。通知を受けた制御部31は、このデバッグ制御方法202に基づいた処理の実行を動作実行部34に対して依頼する(ステップS425)。そして、制御部31から依頼を受けた動作実行部34は、デバッグ制御方法202に基づいた所定の処理を実行する(ステップS430)。
【0032】
上述した実施形態においては、デバッグ対象装置10にロジックアナライザ装置20と、エミュレータ装置30とを接続し、ロジックアナライザ装置20にて検知した異常に基づいた所定のデバッグ制御方法による処理をエミュレータ装置30にて実行する構成を採用した。これによって、ロジックアナライザ装置20にて異常が検出されたタイミングによって、エミュレータ装置30がデバッグ対象装置10に対して上記デバッグ制御方法による処理動作を実行し、この処理動作に基づいて収集されるデータ(上述した本実施形態ではレジスタ情報)に基づいて異常の原因となるソフトウェア11aの不具合を特定可能とした。むろん、ソフトウェア11aの不具合を特定するための構成はこのような構成に限定されず、デバッグ対象装置10にてデバッグモニタプログラムを稼働させ、このデバッグモニタプログラムにてソフトウェア11aの不具合を特定する構成であっても良い。
【0033】
(3)変形例の構成:
図8は、かかる場合における本発明にかかるデバッグ装置の構成を示した構成図である。同図において、開発中のデバッグ対象装置10のハードウェア10a上には、上述と同様にCPU11と、バス12と、インターフェース部14と、ハードウェアコンポーネント13とが配設されている。この実施形態ではインターフェース部14にデバッグ用コンピュータ40を接続している。また、ロジックアナライザ装置20のプローブ24はハードウェアコンポーネント13のテストピン13aに接続されており、ロジックアナライザ装置20は、ハードウェアコンポーネント13の状態を示すハードウェア情報を信号レベルで入力して記録することができるとともに、同信号レベルの遷移をタイムチャートにて表示可能になっている。また、入力したハードウェア情報が所定の条件を満たしたことを検知できる。
【0034】
すなわち、入力したハードウェア情報の態様に基づいてハードウェアコンポーネント13の稼働状態が正常であるか異常であるかを判別することによって、異常を検知可能になっている。上述したとおり、デバッグ対象装置10にはデバッグ用コンピュータ40とのインターフェース部14が備えられており、同インターフェース部14を介してデバッグ用コンピュータ40と接続可能になっている。ここで、CPU11では、図示しないROMもしくはハードディスクに格納されているデバッグ用コンピュータ40とデバッグ情報を遣り取りするデバッグモニタプログラムP1を図示しないRAMをワークエリアとしつつ動作する。このデバッグモニタプログラムP1を用いることによって、デバッグ用コンピュータ40からCPU11上で動作する開発中のソフトウェア、すなわち、デバッグ対象となるソフトウェアのデバッグを実行可能になっている。
【0035】
また、デバッグ用コンピュータ40では、デバッガと呼ばれるソフトウェアツールが動作している。このようなソフトウェアツールを用いることにより、デバッグ対象装置10にて稼働するデバッグモニタプログラムP1とインターフェース部14を介して通信可能になる。そして、デバッグモニタプログラムP1は、デバッグ用コンピュータ40にて動作するデバッガの要求に応じて、CPU11の動作を一時的に停止(HALT)させたり、CPU11のレジスタ情報等の各種情報を入力し、デバッグ用コンピュータ40のデバッガに出力することが可能になっている。ここで、ロジックアナライザ装置20は、上述したのと同様にプローブ24を介して入力したハードウェア情報に対応する異常情報を出力する通知部22を備えるとともに、このハードウェア情報と出力すべき異常情報との対応付けを行う出力情報定義部23を備える。
【0036】
そして、これらを制御する制御部21を備えている。また、デバッグモニタプログラムP1は、制御機能P11と、ロジックアナライザ装置20の通知部22が出力する異常情報を受け取る通知受理機能P12と、この受け取った異常情報に対してどのような動作をするかを定義する動作定義機能P13と、受け取った異常情報に対応した動作を実際に実行する動作実行機能P14とを備えている。さらに、デバッグ対象装置10における開発中のハードウェア10aには、ロジックアナライザ装置20の通知部22が出力する異常情報を入力し、バス12のプロトコルに変換するとともに、同変換した異常情報をデバッグモニタプログラムP1に出力可能な通知変換装置15が備えられている。
【0037】
かかる構成によって、ロジックアナライザ装置20はプローブ24を介して入力したハードウェア情報に基づいて異常の発生を検知した場合は、この異常の発生を示すハードウェア情報に対応した事象IDを通知変換装置15を介してデバッグ対象装置10にて動作するデバッグモニタプログラムP1に通知する。そして、デバッグモニタプログラムP1は、入力した事象IDに対応した所定のデバッグ制御方法(例えば、CPU11の停止、レジスタ情報の取得等)を実行し、その結果をインターフェース部14を介してデバッグ用コンピュータ40に出力することによって、デバッグ対象装置10にて動作する開発中のソフトウェア11aのデバッグを実施可能にする。
【0038】
上述した実施形態においては、ロジックアナライザ装置20にてデバッグ対象装置10のハードウェアコンポーネント13にて発生する異常を検知するとともに対応する異常情報を示す事象IDをエミュレータ装置30もしくはデバッグモニタプログラムP1に出力する。そして、この事象IDを入力したエミュレータ装置30もしくはデバッグモニタプログラムP1にて所定のデバッグ制御方法に基づいた処理を実行することによって、デバッグ対象装置10のハードウェアコンポーネント13に対して異常を発生させる原因となるソフトウェア11aの処理内容を特定することを可能にした。一方、ハードウェアの異常がソフトウェアに影響を及ぼす場合もあり、かかる場合は、ソフトウェアに異常を発生させる原因となるハードウェアの異常を特定することが必要となる。そこで、次に、ハードウェアの異常をデバッグするためのデバッグ装置の構成について説明する。
【0039】
(4)ハードウェアの異常をデバッグするデバッグ装置の構成:
図9は、本発明にかかるデバッグ装置の構成を示した構成図である。ここでは、ハードウェアをデバッグする際のデバッグ装置の構成を示している。同図において、開発中のハードウェアありデバッグの対象となるデバッグ対象装置10のハードウェア10a上にはCPU11と、バス12、デバッグ用コンピュータ40とのインターフェース部14aと、割込みコントローラ16とが備えさせてある。本実施形態において割込コントローラ16は、2つの割込み信号(割込み信号A,割込み信号B)の入力を管理する。ロジックアナライザ装置20のプローブ24は割込みコントローラ16とバス12とのインターフェースとなる出力ピン14bに接続されており、ロジックアナライザ装置20は、割込みコントローラ16が受けた割込み状態を信号レベルで記録可能になっている。また、開発中のハードウェア10aは、上述したようにデバッグ用コンピュータ40とのインターフェース部14aを備えており、デバッグ用コンピュータ40と接続可能になっている。そして、CPU11内には、デバッグ用コンピュータ40との間にてデバッグ情報(以下の例ではレジスタ情報)を遣り取りするデバッグ用モニタプログラムP1が動作している。
【0040】
このようなデバッグ用モニタプログラムP1を用いることによって、上述したのと同様に、デバッグ用コンピュータ40からCPU11上で動作する開発中のソフトウェア11aに対するデバッグを実行可能になっている。また、デバッグ用コンピュータ40では、デバッガ44と呼ばれるソフトウェアツールを動作させる。このデバッガ44を動作させることによって、デバッグ対象装置10にて動作している上述したデバッグモニタプログラムP1とインターフェース部14aを介して通信可能になる。ここで、デバッグモニタプログラムP1は、デバッガ用コンピュータ40にて動作するデバッガ44の要求に応じてCPU11の動作を一時的に停止(HALT)させ、CPU11のレジスタ情報等の情報を入力し、デバッグ用コンピュータ40のデバッガ44に出力することが可能になっている。
【0041】
デバッグ用コンピュータ40にて動作するデバッガ44は、通知機能42を備えるとともに、デバッグ対象装置10にて動作しているソフトウェア11aの動作状態に基づいて入力したソフトウェア情報と出力すべき情報との対応付けを行う出力情報定義機能43を備える。そして、これらの各機能は制御機能41によって制御される。また、ロジックアナライザ装置20は、制御部51と、デバッガ44から事象IDを受け取る通知受理部52と、この受け取った事象IDに対してどのようなデバッグ制御方法を実行するかを定義する動作定義部53と、定義されたデバッグ制御方法に基づいて実際に所定の処理動作を実行する動作実行部54を備える。
【0042】
かかる構成において、デバッガ44では、通知機能42にてCPU11上で動作する開発中のソフトウェア11aの動作内容をソフトウェア情報として入力し、このソフトウェア情報が所定の条件を満たす場合(すなわち、異常を示すソフトウェア情報を入力した場合)、出力情報定義機能43にて定義されているソフトウェア情報と異常情報(事象ID)に基づいて、入力したソフトウェア情報に対応した事象IDをロジックアナライザ装置50に出力する。一方、ロジックアナライザ装置50は、制御部51の制御に基づいて、上述したように通知受理部52にてデバッガ44が出力する事象IDを受理し、動作定義部53にてこの受理した事象IDに対応するデバッグ制御方法の処理動作を認識し、動作実行部54にてこの認識した処理動作を実行する。
【0043】
上述したデバッグ装置を使用してデバッグ対象装置10のハードウェア10aおよび同ハードウェア10aと密に連携して動作するソフトウェア11aのデバッグを実施する。このデバッグ装置では多種多様の異常を解析の対象とすることが可能である。ここで、この多種多様の解析可能な異常の中から、本実施形態において説明する異常の一例を示す。本実施形態におけるデバッグ対象装置10でおける、開発中のソフトウェア11aは、割込み信号Aと、割込み信号Bをこの順番に所定の間隔によって入力すると、処理動作が停止してしまうとする。かかる場合、ソフトウェアデバッガのみでデバッグしたとすると、割込みの情報をログとしてメモリに記録し、異常が発生した際にそのログを解析し、原因を探ることになる。
【0044】
しかし、ログをメモリに記録する動作が、割込み発生のタイミングを変化させてしまい、異常が発生しないことがある。すなわち、図10に示すとおり、ログなしのコードにおいては、割込みAが発生すると(ステップS500)、この割込みAに対応する処理を実行する(ステップS505)。ここで、この割込みAに対応する処理を実行している最中に割込みBが発生すると(ステップS510)、異常が発生し、処理動作が停止する。従って、以降の割込みBに対応する処理(ステップS515)と、ステップS505にて実行中であった割込みAに対応する処理は実行されないことになる。
【0045】
この異常を解析するために、ログ出力のコードを挿入した場合を図11に示す同図においては、割込みAが発生すると(ステップS600)、ログ出力を行う(ステップS605)。そして、割込みBが発生すると(ステップS610)、ログ出力を行う(ステップS615)。これにより、割込みAに対応する処理(ステップS620)がステップS615におけるログ出力の後にまわり、ログ採取中に割込みBが発生する状態が再現できなくなる。すなわち、異常が発生しないことになる。従って、異常が発生するのハードウェア10aのデバッグを実施できない。
【0046】
そこで、本実施形態においては、上述した構成に基づいて、ログの処理内容を追加するなどのソフトウェア11aの変更を行うことなく、ハードウェア10aに発生する異常を特定可能な本発明にかかるデバッグ装置の解析方法について説明する。この解析に際しては、予めデバッガ44にある送信情報定義機能43を用いて、CPU11にて動作するソフトウェア11aに異常が発生した場合に起こる事象を表現したソフトウェア異常情報301と、それに対してロジックアナライザ装置20に出力する異常情報(事象ID)とを関連付けておく。この関連付けを図12に示す。同図において、出力情報定義テーブル300は、ソフトウェア異常情報301と、異常情報としての事象ID302とをデータとして備えている。例えば、ソフトウェア異常情報301が「ソフトウェアの停止を検知する関数でCPUが停止」であれば、事象IDは「1」と対応付けられている。また、ロジックアナライザ装置50においても予めこの異常情報(事象ID)に対する当該ロジックアナライザ装置50の処理動作を関連付けておく。この関連付けを図13に示す。同図において、事象ID401と、処理動作の内容を示すデバッグ制御方法402とをデータとして備えている。例えば、事象ID401が「1」であれば、デバッグ制御方法402は「ハードウェア情報の記録を停止」にと対応付けられている。ここで、出力情報定義テーブル300にて定義された条件は、CPU11上で動作するソフトウェア11aにはその停止を検知する関数があり、そこにデバッガ44を使ってブレイクポイントを設定してソフトウェア11aを実行させると、そのブレイクポイントで処理が停止したということを示している。
【0047】
次に、異常が発生する原因を特定する手順を示す。
1.CPU11上のソフトウェア11aを動作させた場合に、ソフトウェア11aにて異常が発生するパターンの割込みがハードウェア10aにて発生した。
2.この割込みによって、ソフトウェア11aの処理動作が停止し、ブレイクポイントで停止した。
3.デバッガ44はこのソフトウェア11aの停止を検知する関数で停止したことを制御機能41にて認識する。
4.デバッガ44は、出力情報定義機能43にて判別した認識した条件(停止を検知する関数)に対応する事象IDを通知機能42によってロジックアナライザ装置50に出力する。
【0048】
5.ロジックアナライザ装置50では、通知受理部51が事象IDを入力し、制御部51へ渡す。
6.制御部51は事象IDを動作定義部53に渡し、事象IDに対する動作の特定を依頼する。
7.動作定義部53は、定義に従ってハードウェア情報の記録を停止するという情報を制御部51に渡す。
8.制御部51はこの情報を動作実行部54に渡す。
9.動作実行部54は、割込みコントローラ16の状態の記録を停止する。
以上の手順を実行することにより、ロジックアナライザ装置50には、ソフトウェア11aにて異常が発生した際の、割込み信号Aと、割込み信号Bの発生タイミングが記録される。従って、この割込み信号Aと割込み信号Bの発生タイミングを解析することによって、ソフトウェア11aの処理動作に影響を及ぼすハードウェア10aの異常を特定することが可能になる。
【0049】
(5)各装置の動作内容:
図14は、上述した手法によってデバッグを実施する際のデバッガ用コンピュータ40の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部41は、インターフェース部14aを介してデバッグ対象装置10のCPU11にて動作するソフトウェア11aの実行状態を示すソフトウェア情報を取得する(ステップS700)。そして、制御部41はこの取得したソフトウェア情報を解析することによって、ソフトウェア11aの処理動作に異常が発生しているか否かを判別する(ステップS705)。ここで、取得したソフトウェア情報が異常の発生を示したものではないと判別した場合は、ステップS700に戻る。
【0050】
一方、取得したソフトウェア情報に基づいてソフトウェア11aの処理動作における異常を検知した場合は(ステップS710)、制御部41は、異常を示すソフトウェア異常情報に対する事象IDを出力情報定義部43に問い合わせる(ステップS715)。問い合わせを受けた出力情報定義部43は、出力情報定義テーブル300に基づいて、異常を示すソフトウェア異常情報301に対応する事象ID302を認識する(ステップS720)。出力情報定義部43は、この認識した事象ID302を制御部41に受け渡す(ステップS725)。ここで、制御部41は、この出力情報定義部43から受け取った事象ID302をロジックアナライザ装置50に対して出力するように通知部42に依頼する(ステップS730)。そして、制御部41から依頼を受けた通知部42は、この事象ID302をロジックアナライザ装置50に対して出力する(ステップS735)。
【0051】
図15は、上述した手法によってデバッグを実施する際のロジックアナライザ装置50の動作内容を示した動作フローチャートである。
同図において、先ず最初に制御部51は通信受理部52を制御してデバッグ用コンピュータ40から出力される事象ID302が同通信受理部52に入力されたか否かを判別する(ステップS800)。この判別処理を事象ID302が受理されるまで継続する。一方、通知受理部52に対する事象ID302の入力があった場合は、通知受理部52は、入力した事象ID302を制御部51に受け渡す(ステップS805)。事象ID302が受け渡された制御部51は、この事象ID302に対応するデバッグ制御方法を動作定義部53に問い合わせる(ステップS810)。
【0052】
制御部51からの問い合わせを受けた動作定義部53は、処理動作定義テーブル400に基づいて、事象ID302に対応する事象ID401に対して対応付けられたデバッグ制御方法402を判別する(ステップS815)。事象ID401に対応するデバッグ制御方法402を判別した動作定義部53は、この判別したデバッグ制御方法402を制御部51に通知する(ステップS820)。通知を受けた制御部51は、このデバッグ制御方法402に基づいた処理の実行を動作実行部54に対して依頼する(ステップS825)。そして、制御部51から依頼を受けた動作実行部54は、デバッグ制御方法402に基づいた所定の処理を実行する(ステップS830)。
【0053】
(6)まとめ:
このように、上述したソフトウェアの異常をデバッグするデバッグ対象装置10では、同デバッグ対象装置10にて異常が発生した際にデバッグ用コンピュータ40において動作するデバッガにてレジスタ情報を入力する。このレジスタ情報にはプログラムカウンタの値が含まれているため、このプログラムカウンタの値を参照することによって、異常が発生した時点にてCPU11が実行しているコードの位置が分かる。そして、この実行位置から前の部分に実行されたレジスタA,Bに対してアクセスを行うコードを解析することにより、ソフトウェア11aにおける何れのレジスタに対するアクセス処理が異常の原因となっているかを認識することが可能になる。
【0054】
また、ハードウェアの異常をデバッグするデバッグ装置10おいては、ロジックアナライザ装置50には、ソフトウェア11aにて異常が発生した際の、割込み信号Aと、割込み信号Bの発生タイミングが記録される。従って、この割込み信号Aと割込み信号Bの発生タイミングを解析することによって、ソフトウェア11aの処理動作に影響を及ぼすハードウェア10aの異常を特定することが可能になる。
【図面の簡単な説明】
【図1】デバッグ装置の構成図。
【図2】レジスタアクセスログ出力無しのフローチャート。
【図3】レジスタアクセスログ出力有りのフローチャート。
【図4】出力情報定義テーブルの構成図。
【図5】処理動作定義テーブルの構成図。
【図6】ロジックアナライザ装置のフローチャート。
【図7】エミュレータ装置の動作フローチャート。
【図8】デバッグ装置の構成図。
【図9】デバッグ装置の構成図。
【図10】割込みログ出力無しのフローチャート。
【図11】割込みログ出力有りのフローチャート。
【図12】出力情報定義テーブルの構成図。
【図13】処理動作定義テーブルの構成図。
【図14】デバッガ用コンピュータの動作フローチャート。
【図15】ロジックアナライザ装置の動作フローチャート。
【符号の説明】
10…デバッグ対象装置 11…CPU 12…バス 13…ハードウェアコンポーネント 13a…テストピン 14…インターフェース部 20…ロジックアナライザ装置 21…制御部 22…通知部 23…出力情報定義部 24…プローブ 30…エミュレータ装置 31…制御部 32…通知受理部 33…動作定義部 34…動作実行部 40…デバッグ用コンピュータ
Claims (12)
- CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置であって、
上記ハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録するハードウェア情報記録手段と、
上記記録されるハードウェア情報に基づいて上記ハードウェアに発生する異常を検出可能であるとともに、異常を検出した場合に所定の異常情報を出力するハードウェア異常検出手段と、
上記出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行するデバッグ制御手段とを具備することを特徴とするデバッグ装置。 - 上記ハードウェア異常検出手段は、検出可能な異常と出力する異常情報とを対応させた出力情報定義テーブルを有し、上記検出した異常に基づいて同出力情報定義テーブルを検索し、対応する異常情報を取得して出力することを特徴とする上記請求項1に記載のデバッグ装置。
- 上記デバッグ制御手段は、上記デバッグ制御処理として、上記ハードウェア情報取得手段にて取得されたハードウェア情報を異常時ハードウェア情報として取得する処理を実行することを特徴とする上記請求項1または請求項2のいずれかに記載のデバッグ装置。
- 上記ハードウェア情報記録手段は、上記内部制御情報として、レジスタ情報の遷移を記録することを特徴とする上記請求項1〜請求項3のいずれかに記載のデバッグ装置。
- 上記デバッグ制御手段は、上記デバッグ制御処理として、上記CPUの動作を停止させる処理を実行することを特徴とする上記請求項1〜請求項4のいずれかに記載のデバッグ装置。
- CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ装置であって、
上記ソフトウェアの実行状態に基づいて同ソフトウェアの異常を検出可能であるとともに、異常を検出した場合に所定の異常情報を出力するソフトウェア異常検出手段と、
上記出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行するデバッグ制御手段とを具備することを特徴とするデバッグ装置。 - 上記デバッグ制御手段は、上記ハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録するハードウェア情報記録手段を有し、上記デバッグ制御処理として、上記記録されたハードウェア情報を取得することを特徴とする上記請求項6に記載のデバッグ装置。
- 上記ハードウェア情報記録手段は、上記内部制御情報として、割込信号情報の遷移を記録することを特徴とする上記請求項7に記載のデバッグ装置。
- 上記ソフトウェア異常検出手段は、検出可能な異常と出力する異常情報とを対応させた出力情報定義テーブルを有し、上記検出した異常に基づいて同出力情報定義テーブルを検索し、対応する異常情報を取得して出力することを特徴とする上記請求項6〜請求項8のいずれかに記載のデバッグ装置。
- 上記デバッグ制御手段は、入力する異常情報と実行するデバッグ制御処理方法とを対応させた処理定義テーブルを有し、同入力した異常情報に基づいて同処理定義テーブルを検索し、対応するデバッグ制御処理方法を取得し、同取得したデバッグ制御処理方法に基づいてデバッグ制御処理を実行することを特徴とする上記請求項1〜請求項9のいずれかに記載のデバッグ装置。
- CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ方法であって、
上記ハードウェア内にて発生する所定の内部制御情報の遷移を認識可能なハードウェア情報を記録するハードウェア情報記録工程と、
上記記録されるハードウェア情報に基づいて上記ハードウェアに発生する異常を検出可能であるとともに、異常を検出した場合に所定の異常情報を出力するハードウェア異常検出工程と、
上記出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行するデバッグ制御工程とを具備することを特徴とするデバッグ方法。 - CPUと同CPUにて制御される内部デバイスとを有するハードウェアおよび同ハードウェア環境にて実行されるソフトウェアについてデバッグするデバッグ方法であって、
上記ソフトウェアの実行状態に基づいて同ソフトウェアの異常を検出可能であるとともに、異常を検出した場合に所定の異常情報を出力するソフトウェア異常検出工程と、
上記出力された異常情報を入力した場合に上記ハードウェアに対して同異常情報に基づいた所定のデバッグ制御処理を実行するデバッグ制御工程とを具備することを特徴とするデバッグ方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003063667A JP2004272679A (ja) | 2003-03-10 | 2003-03-10 | デバッグ装置およびデバッグ方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003063667A JP2004272679A (ja) | 2003-03-10 | 2003-03-10 | デバッグ装置およびデバッグ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004272679A true JP2004272679A (ja) | 2004-09-30 |
Family
ID=33125191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003063667A Pending JP2004272679A (ja) | 2003-03-10 | 2003-03-10 | デバッグ装置およびデバッグ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004272679A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008020513A1 (fr) * | 2006-08-14 | 2008-02-21 | Nec Corporation | débogueur et procédé de débogage |
JP2009080632A (ja) * | 2007-09-26 | 2009-04-16 | Nec Electronics Corp | 半導体集積回路 |
CN116662096A (zh) * | 2022-12-12 | 2023-08-29 | 荣耀终端有限公司 | 故障调试方法和电子设备 |
-
2003
- 2003-03-10 JP JP2003063667A patent/JP2004272679A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008020513A1 (fr) * | 2006-08-14 | 2008-02-21 | Nec Corporation | débogueur et procédé de débogage |
JP5239862B2 (ja) * | 2006-08-14 | 2013-07-17 | 日本電気株式会社 | デバッガ及びデバッグ方法 |
JP2009080632A (ja) * | 2007-09-26 | 2009-04-16 | Nec Electronics Corp | 半導体集積回路 |
US8429615B2 (en) | 2007-09-26 | 2013-04-23 | Renesas Electronics Corporation | Semiconductor integrated circuit |
CN116662096A (zh) * | 2022-12-12 | 2023-08-29 | 荣耀终端有限公司 | 故障调试方法和电子设备 |
CN116662096B (zh) * | 2022-12-12 | 2024-04-23 | 荣耀终端有限公司 | 故障调试方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8156475B2 (en) | Device and method for testing embedded software using emulator | |
US7849364B2 (en) | Kernel-mode in-flight recorder tracing mechanism | |
US5134701A (en) | Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities | |
JP5905911B2 (ja) | シングルステップ実行を用いる診断コード | |
US20080148238A1 (en) | Runtime Analysis of a Computer Program to Identify Improper Memory Accesses that Cause Further Problems | |
JPH07281930A (ja) | 情報処理装置動作測定解析システム | |
CN111078492B (zh) | 一种SoC内部总线的状态监控系统及方法 | |
JP2010033543A (ja) | ソフトウエア動作監視システム、そのクライアントコンピュータおよびサーバコンピュータ、並びに、そのプログラム | |
US20070226418A1 (en) | Processor and method for controlling processor | |
WO2007086150A1 (ja) | メモリ破壊検出方法および装置 | |
JPH04229340A (ja) | 共用メモリマルチプロセッサコンピュータのデバッグシステム | |
JP2004272679A (ja) | デバッグ装置およびデバッグ方法 | |
US20030037257A1 (en) | Debugging device | |
JP3711871B2 (ja) | Pciバスの障害解析容易化方式 | |
CN100403275C (zh) | 应用于固件程序除错的微处理器与方法 | |
CN113612661B (zh) | 检验程序稳定性的方法、装置、计算设备及存储介质 | |
JP2006323726A (ja) | モニタプログラムおよびリアルタイムトレースシステム | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
JP2001243089A (ja) | ソフトウェア検証装置及びソフトウェア検証方法 | |
JP2010122133A (ja) | 故障箇所特定システム、故障箇所特定方法 | |
JP2008230563A (ja) | ホームドア動作監視制御システム | |
KR100428712B1 (ko) | 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법 | |
JP5421735B2 (ja) | コアファイル取得装置、コアファイル取得方法及びコアファイル取得プログラム | |
JP2017167615A (ja) | ログ取得装置、演算装置、プロセッサ、処理方法、プログラム | |
JP4892406B2 (ja) | 情報処理装置のトランザクション管理方法及び情報処理装置 |