JPH10161904A - 複数言語対応のデバッグ装置およびデバッグ方法 - Google Patents
複数言語対応のデバッグ装置およびデバッグ方法Info
- Publication number
- JPH10161904A JPH10161904A JP8322943A JP32294396A JPH10161904A JP H10161904 A JPH10161904 A JP H10161904A JP 8322943 A JP8322943 A JP 8322943A JP 32294396 A JP32294396 A JP 32294396A JP H10161904 A JPH10161904 A JP H10161904A
- Authority
- JP
- Japan
- Prior art keywords
- watchpoint
- programming language
- language
- debugging
- debugging device
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】プログラミング言語の切り替えを管理すること
によって効率的なデバッグを実現するデバッグ装置を提
供する。 【解決手段】デバッガ14は、メモリ3上に配置された
実行ロードモジュール24に含まれるエントリすべてに
ユーザが任意の箇所に設定するブレークポイントとは異
なる陰のブレークポイントを設定する。そして、この陰
のブレークポイントによって制御が移行してきた際に、
飛び先の言語タイプと現在の言語タイプとを比較し、言
語タイプが異なった場合に言語切替えが発生したとし
て、ウォッチポイントテーブル141から飛び先の言語
タイプに対応するウォッチポイント情報を読み出し、こ
の読み出したウォッチポイント情報にしたがってウォッ
チポイントレジスタ2の再設定を実行する。
によって効率的なデバッグを実現するデバッグ装置を提
供する。 【解決手段】デバッガ14は、メモリ3上に配置された
実行ロードモジュール24に含まれるエントリすべてに
ユーザが任意の箇所に設定するブレークポイントとは異
なる陰のブレークポイントを設定する。そして、この陰
のブレークポイントによって制御が移行してきた際に、
飛び先の言語タイプと現在の言語タイプとを比較し、言
語タイプが異なった場合に言語切替えが発生したとし
て、ウォッチポイントテーブル141から飛び先の言語
タイプに対応するウォッチポイント情報を読み出し、こ
の読み出したウォッチポイント情報にしたがってウォッ
チポイントレジスタ2の再設定を実行する。
Description
【0001】
【発明の属する技術分野】この発明は、複数種のプログ
ラミング言語で構築されたプログラムのデバッグに適用
して好適なデバッグ装置およびデバッグ方法に関する。
ラミング言語で構築されたプログラムのデバッグに適用
して好適なデバッグ装置およびデバッグ方法に関する。
【0002】
【従来の技術】従来において、たとえば手続き型言語と
アセンブラ言語とにより構築されたプログラムや、オブ
ジェクト指向言語と手続き型言語とが併用されたプログ
ラムなどのように、2種類以上のプログラミング言語で
構成されるプログラムモジュールをデバッグする場合、
言語ごとに別のデバッガを適用して実施するか、一つの
デバッガで言語モードを切り替えて使うなどして実施し
ていた。また、後者の場合であっても、言語間に跨がる
情報は共有されていないため、操作性が充分でないとい
った問題があった。たとえば、ある変数の領域を所望の
プログラミング言語で構築されたモジュールがアクセス
したときにのみブレークを発生させたいような場合であ
っても、プログラミング言語の種別を考慮せずに画一的
な設定が行なわれてしまうために、意図しないプログラ
ミング言語で構築されたモジュールがその変数領域をア
クセスしたときにもブレークが発生してしまい、デバッ
グの作業効率を低下させてしまっていた。
アセンブラ言語とにより構築されたプログラムや、オブ
ジェクト指向言語と手続き型言語とが併用されたプログ
ラムなどのように、2種類以上のプログラミング言語で
構成されるプログラムモジュールをデバッグする場合、
言語ごとに別のデバッガを適用して実施するか、一つの
デバッガで言語モードを切り替えて使うなどして実施し
ていた。また、後者の場合であっても、言語間に跨がる
情報は共有されていないため、操作性が充分でないとい
った問題があった。たとえば、ある変数の領域を所望の
プログラミング言語で構築されたモジュールがアクセス
したときにのみブレークを発生させたいような場合であ
っても、プログラミング言語の種別を考慮せずに画一的
な設定が行なわれてしまうために、意図しないプログラ
ミング言語で構築されたモジュールがその変数領域をア
クセスしたときにもブレークが発生してしまい、デバッ
グの作業効率を低下させてしまっていた。
【0003】
【発明が解決しようとする課題】このように、従来で
は、2種類以上のプログラミング言語で構成されるプロ
グラムモジュールをデバッグする場合、言語ごとに別の
デバッガを適用して実施するか、一つのデバッガで言語
モードを切り替えて使うなどして実施しており、また、
後者の場合であっても、言語間に跨がる情報は共有され
ていないため、操作性が充分でないといった問題があっ
た。
は、2種類以上のプログラミング言語で構成されるプロ
グラムモジュールをデバッグする場合、言語ごとに別の
デバッガを適用して実施するか、一つのデバッガで言語
モードを切り替えて使うなどして実施しており、また、
後者の場合であっても、言語間に跨がる情報は共有され
ていないため、操作性が充分でないといった問題があっ
た。
【0004】この発明はこのような実情に鑑みてなされ
たものであり、互いに異なるプログラミング言語間で共
有できる情報を認識し、言語切り替えを管理することに
よって効率的なデバッグを実現するデバッグ装置および
デバッグ方法を提供することを目的とする。
たものであり、互いに異なるプログラミング言語間で共
有できる情報を認識し、言語切り替えを管理することに
よって効率的なデバッグを実現するデバッグ装置および
デバッグ方法を提供することを目的とする。
【0005】
【課題を解決するための手段】この発明のデバッグ装置
は、複数種のプログラミング言語で構築されたプログラ
ムをデバッグするデバッグ装置であって、予め指定され
た変数の領域であるウォッチポイントがアクセスされた
際に制御を獲得するウォッチポイント機能を有するデバ
ッグ装置において、前記ウォッチポイントを示すウォッ
チポイント情報を前記プログラミング言語ごとに保持す
るウォッチポイントテーブルと、前記プログラムの実行
中にプログラミング言語が切り替わった際、その旨を検
知して新たなプログラミング言語に対応するウォッチポ
イント情報を前記ウォッチポイントテーブルから読み取
り、この読み取ったウォッチポイント情報にしたがって
前記ウォッチポイントを設定し直すウォッチポイント設
定手段とを具備してなることを特徴とする。
は、複数種のプログラミング言語で構築されたプログラ
ムをデバッグするデバッグ装置であって、予め指定され
た変数の領域であるウォッチポイントがアクセスされた
際に制御を獲得するウォッチポイント機能を有するデバ
ッグ装置において、前記ウォッチポイントを示すウォッ
チポイント情報を前記プログラミング言語ごとに保持す
るウォッチポイントテーブルと、前記プログラムの実行
中にプログラミング言語が切り替わった際、その旨を検
知して新たなプログラミング言語に対応するウォッチポ
イント情報を前記ウォッチポイントテーブルから読み取
り、この読み取ったウォッチポイント情報にしたがって
前記ウォッチポイントを設定し直すウォッチポイント設
定手段とを具備してなることを特徴とする。
【0006】この発明のデバッグ装置においては、ウォ
ッチポイント(アクセスを監視する変数の領域)をプロ
グラミング言語ごとに管理しておき、実行中のプログラ
ムでプログラミング言語の切り替えが発生したときに、
新たなプログラミング言語に対応したウォッチポイント
を設定し直す。したがって、ユーザに対してプログラミ
ング言語それぞれに応じた操作を強いることなく、ま
た、あるプログラミング言語に対して設定したウォッチ
ポイントが他のプログラミング言語に対して作用するよ
うなことがなくなるため、複数種のプログラミング言語
で構築されたプログラムに対し、効率的であって、かつ
操作性のよいデバッグ環境を提供することができる。
ッチポイント(アクセスを監視する変数の領域)をプロ
グラミング言語ごとに管理しておき、実行中のプログラ
ムでプログラミング言語の切り替えが発生したときに、
新たなプログラミング言語に対応したウォッチポイント
を設定し直す。したがって、ユーザに対してプログラミ
ング言語それぞれに応じた操作を強いることなく、ま
た、あるプログラミング言語に対して設定したウォッチ
ポイントが他のプログラミング言語に対して作用するよ
うなことがなくなるため、複数種のプログラミング言語
で構築されたプログラムに対し、効率的であって、かつ
操作性のよいデバッグ環境を提供することができる。
【0007】このプログラミング言語の切り替えの判定
は、たとえばプログラム中に含まれるエントリ部すべて
にユーザが関知しない陰のブレークポイントを設定し、
このブレークポイントによって制御が移行されてきたと
きに、呼ぶ側のオブジェクトのプログラミング言語と呼
ばれる側のオブジェクトのプログラミング言語とを比較
して、不一致であったときにプログラミング言語が切り
替わったと判定するなどによればよい。また、陰のグレ
ークポイントは、たとえばリンカによって、関数コール
や関数ポインタなどの外部参照情報をデバッグ情報とし
て各オブジェクトのシンボル情報に付加しておき、この
外部参照情報に基づいて設定するなどによればよい。さ
らに、プログラミング言語の認識は、たとえばコンパイ
ラによって、エントリそれぞれに対応した言語識別情報
を各オブジェクトのシンボル情報に付加しておき、この
言語識別情報に基づいて行なえばよい。
は、たとえばプログラム中に含まれるエントリ部すべて
にユーザが関知しない陰のブレークポイントを設定し、
このブレークポイントによって制御が移行されてきたと
きに、呼ぶ側のオブジェクトのプログラミング言語と呼
ばれる側のオブジェクトのプログラミング言語とを比較
して、不一致であったときにプログラミング言語が切り
替わったと判定するなどによればよい。また、陰のグレ
ークポイントは、たとえばリンカによって、関数コール
や関数ポインタなどの外部参照情報をデバッグ情報とし
て各オブジェクトのシンボル情報に付加しておき、この
外部参照情報に基づいて設定するなどによればよい。さ
らに、プログラミング言語の認識は、たとえばコンパイ
ラによって、エントリそれぞれに対応した言語識別情報
を各オブジェクトのシンボル情報に付加しておき、この
言語識別情報に基づいて行なえばよい。
【0008】また、この発明のデバッグ装置は、複数種
のプログラミング言語で構築されたプログラムをデバッ
グするデバッグ装置であって、予め指定された変数の領
域であるウォッチポイントがアクセスされた際に制御を
獲得するウォッチポイント機能を有するデバッグ装置に
おいて、デバッグ対象とするプログラミング言語を設定
する設定手段と、前記ウォッチポイント機能により制御
が獲得された際、実行中のオブジェクトのプログラミン
グ言語と前記設定手段により設定されたプログラミング
言語が一致するか否か判定する判定手段と、前記判定手
段の判定結果が不一致であったときに、獲得した制御を
速やかに返却する制御返却手段とを具備してなることを
特徴とする。
のプログラミング言語で構築されたプログラムをデバッ
グするデバッグ装置であって、予め指定された変数の領
域であるウォッチポイントがアクセスされた際に制御を
獲得するウォッチポイント機能を有するデバッグ装置に
おいて、デバッグ対象とするプログラミング言語を設定
する設定手段と、前記ウォッチポイント機能により制御
が獲得された際、実行中のオブジェクトのプログラミン
グ言語と前記設定手段により設定されたプログラミング
言語が一致するか否か判定する判定手段と、前記判定手
段の判定結果が不一致であったときに、獲得した制御を
速やかに返却する制御返却手段とを具備してなることを
特徴とする。
【0009】この発明のデバッグ装置においては、いず
れのプログラミング言語をデバッグ対象とするか、その
デバッグ対象のプログラミング言語を管理しておき、ウ
ォッチポイントによって制御が移行されてきたときに、
実行中のオブジェクトのプログラミング言語とデバッグ
対象とするプログラミング言語とを比較して、不一致で
あったときに獲得した制御を速やかに返却する。これに
より、意図しないオブジェクトによるブレークを発生さ
せることがなくなるため、効率的なデバッグが実現され
ることになる。
れのプログラミング言語をデバッグ対象とするか、その
デバッグ対象のプログラミング言語を管理しておき、ウ
ォッチポイントによって制御が移行されてきたときに、
実行中のオブジェクトのプログラミング言語とデバッグ
対象とするプログラミング言語とを比較して、不一致で
あったときに獲得した制御を速やかに返却する。これに
より、意図しないオブジェクトによるブレークを発生さ
せることがなくなるため、効率的なデバッグが実現され
ることになる。
【0010】また、この発明のデバッグ装置は、予め設
定された条件に合致したときに制御を獲得するブレーク
機能を有するデバッグ装置において、前記条件を設定す
るための文字列がいずれのプログラミング言語の記法で
書かれているか判定する判定手段と、この判定手段で判
定されたプログラミング言語の条件表現に基づいて前記
条件を設定するブレーク条件設定手段とを具備してなる
ことを特徴とする。
定された条件に合致したときに制御を獲得するブレーク
機能を有するデバッグ装置において、前記条件を設定す
るための文字列がいずれのプログラミング言語の記法で
書かれているか判定する判定手段と、この判定手段で判
定されたプログラミング言語の条件表現に基づいて前記
条件を設定するブレーク条件設定手段とを具備してなる
ことを特徴とする。
【0011】この発明のデバッグ装置においては、ブレ
ーク条件を設定するための文字列がいずれのプログラミ
ング言語の記法で書かれているか判定し、その判定結果
にしたがって文字列の読み取りを実施し条件を設定する
ため、ユーザはデバッグ対象とするオブジェクトのプロ
グラミング言語の種別を意識することなく、使い慣れた
プログラミング言語で条件設定を行なうことができるた
め、操作性を飛躍的に向上させることが可能となる。
ーク条件を設定するための文字列がいずれのプログラミ
ング言語の記法で書かれているか判定し、その判定結果
にしたがって文字列の読み取りを実施し条件を設定する
ため、ユーザはデバッグ対象とするオブジェクトのプロ
グラミング言語の種別を意識することなく、使い慣れた
プログラミング言語で条件設定を行なうことができるた
め、操作性を飛躍的に向上させることが可能となる。
【0012】
【発明の実施の形態】以下、図面を参照してこの発明の
実施の形態を説明する。図1にはこの発明を実施するた
めの機能ブロックが示されている。この発明は、ウォッ
チポイント機能をより効率的に活用するためのものであ
り、ここでいうウォッチポイント機能とは、プログラム
が予め指定された変数をアクセスしたときに、プログラ
ムの実行を中断してデバッガに制御を移す機能をいう。
これにより、予期せぬメモリアクセスをユーザが検出で
きることになる。
実施の形態を説明する。図1にはこの発明を実施するた
めの機能ブロックが示されている。この発明は、ウォッ
チポイント機能をより効率的に活用するためのものであ
り、ここでいうウォッチポイント機能とは、プログラム
が予め指定された変数をアクセスしたときに、プログラ
ムの実行を中断してデバッガに制御を移す機能をいう。
これにより、予期せぬメモリアクセスをユーザが検出で
きることになる。
【0013】一般に、デバッガの操作(コマンド)で
は、たとえばwatch var(変数varへの書き
込み時にブレークせよ)といった指定をする。いま、A
言語に対してこのような指定をしたとする。そして、B
言語においてはvarに相当する変数名がvar’であ
るとする。この場合、B言語内でvar’への書き込み
が発生したとすると、ブレークが発生することになる。
は、たとえばwatch var(変数varへの書き
込み時にブレークせよ)といった指定をする。いま、A
言語に対してこのような指定をしたとする。そして、B
言語においてはvarに相当する変数名がvar’であ
るとする。この場合、B言語内でvar’への書き込み
が発生したとすると、ブレークが発生することになる。
【0014】もし、ユーザがA言語のみを対象にしたデ
バッグを意図して行なっているとすると、不要なブレー
クが発生することになる。つまり、B言語では、ウォッ
チポイントを設定しないか、別の変数に設定しているな
どしており、var’には関心がない場合、これでは困
ることになる。そこで、この発明では、var’に対す
るブレークを発生しないようにする仕掛けを提案するこ
とを特徴とする。なお、ウォッチポイント処理に対する
実装は、ハードウェアによるサポートがある場合と
(「ウォッチポイントレジスタ」に、例外発生の条件を
指定しておく)、ソフトウェアにおいて内部的にステッ
プ実行を行なうことによって実装される場合とがあり、
どちらでも適用できるが、ここでは前者の場合で説明す
る。
バッグを意図して行なっているとすると、不要なブレー
クが発生することになる。つまり、B言語では、ウォッ
チポイントを設定しないか、別の変数に設定しているな
どしており、var’には関心がない場合、これでは困
ることになる。そこで、この発明では、var’に対す
るブレークを発生しないようにする仕掛けを提案するこ
とを特徴とする。なお、ウォッチポイント処理に対する
実装は、ハードウェアによるサポートがある場合と
(「ウォッチポイントレジスタ」に、例外発生の条件を
指定しておく)、ソフトウェアにおいて内部的にステッ
プ実行を行なうことによって実装される場合とがあり、
どちらでも適用できるが、ここでは前者の場合で説明す
る。
【0015】まず、言語タイプの切替えは、次のように
ブレークポイント機能を利用してチェックする。ここで
いうブレークポイント機能とは、プログラムが予め設定
されたステップを実行するときに、プログラムの実行を
中断してデバッガに制御を移す機能をいう。
ブレークポイント機能を利用してチェックする。ここで
いうブレークポイント機能とは、プログラムが予め設定
されたステップを実行するときに、プログラムの実行を
中断してデバッガに制御を移す機能をいう。
【0016】コンパイラ11は、ソースプログラムファ
イル21に格納されたソースプログラムを読み出してコ
ンパイルを実行し、コンパイル結果である単体オブジェ
クトをオブジェクトファイル22に出力する際、各オブ
ジェクトの中で定義されているエントリに対する「言語
識別情報」をオブジェクトのシンボル情報に含ませる
(同一コンパイル単位に、異種言語による記載が含まれ
ていても良い)。
イル21に格納されたソースプログラムを読み出してコ
ンパイルを実行し、コンパイル結果である単体オブジェ
クトをオブジェクトファイル22に出力する際、各オブ
ジェクトの中で定義されているエントリに対する「言語
識別情報」をオブジェクトのシンボル情報に含ませる
(同一コンパイル単位に、異種言語による記載が含まれ
ていても良い)。
【0017】一方、リンカ12は、このオブジェクトフ
ァイル22から単体オブジェクトを読み出してリンクを
実行し、リンク結果である実行ロードモジュールをプロ
グラム実行ファイル23に出力する際、各オブジェクト
における関数コールや関数ポインタなどの「外部参照情
報」をデバッグ情報としてオブジェクトのシンボル情報
に付け加える。
ァイル22から単体オブジェクトを読み出してリンクを
実行し、リンク結果である実行ロードモジュールをプロ
グラム実行ファイル23に出力する際、各オブジェクト
における関数コールや関数ポインタなどの「外部参照情
報」をデバッグ情報としてオブジェクトのシンボル情報
に付け加える。
【0018】そして、デバッガ14は、この「外部参照
情報」を参照して、ローダ13によりメモリ3上に配置
された実行モジュール24内の対応するエントリ部すべ
てに陰のプレークポイントを設定する。
情報」を参照して、ローダ13によりメモリ3上に配置
された実行モジュール24内の対応するエントリ部すべ
てに陰のプレークポイントを設定する。
【0019】プログラム実行時にブレークしたら、デバ
ッガ14は、ユーザ指定の通常のブレークポイントであ
るかチェックする。そうではなく、前述の陰のブレーク
ポイントである場合、言語切り替えの可能性があるの
で、「言語識別情報」を参照することにより、飛び先が
これまでのプログラミング言語と同じ言語のエントリで
あるか調べる。異なった場合、デバッガ14は、言語切
替えが発生したと判断し、ウォッチポイントテーブル1
41から飛び先のプログラミング言語に対応するウォッ
チポイントを読み出して、ウォッチポイントレジスタ2
の再設定を実行する。なお、CPU1は、このウォッチ
ポイントレジスタ2に格納された値で示される領域への
アクセスが発生すると、デバッガ14に制御を移行す
る。
ッガ14は、ユーザ指定の通常のブレークポイントであ
るかチェックする。そうではなく、前述の陰のブレーク
ポイントである場合、言語切り替えの可能性があるの
で、「言語識別情報」を参照することにより、飛び先が
これまでのプログラミング言語と同じ言語のエントリで
あるか調べる。異なった場合、デバッガ14は、言語切
替えが発生したと判断し、ウォッチポイントテーブル1
41から飛び先のプログラミング言語に対応するウォッ
チポイントを読み出して、ウォッチポイントレジスタ2
の再設定を実行する。なお、CPU1は、このウォッチ
ポイントレジスタ2に格納された値で示される領域への
アクセスが発生すると、デバッガ14に制御を移行す
る。
【0020】図2には、この発明のブレークポイント処
理の流れが示されている。デバッガ14は、ブレークが
発生した際、そのブレークポイントがユーザ指定のブレ
ークポイントか前述した陰のブレークポイントかを判定
し(ステップA1,ステップA3)、ユーザ指定のブレ
ークポイントであった場合には(ステップA1のY)、
通常のブレークポイント処理を実行する(ステップA
2)。一方、陰のブレークポイントであった場合(ステ
ップA3のY)、デバッガ14は、飛び先の言語タイプ
をシンボル情報から調べ(ステップA5)、現在の言語
タイプと同じかどうか判定する(ステップA6)。そし
て、言語タイプが同じであった場合には(ステップA6
のY)、言語切替えは発生しなかったとして、ユーザプ
ログラムに復帰する(ステップA7)。一方、言語タイ
プが異なった場合には(ステップA6のN)、言語切替
えが発生したとして、ウォッチポイントレジスタ2の切
替え処理を実行する(ステップA8)。
理の流れが示されている。デバッガ14は、ブレークが
発生した際、そのブレークポイントがユーザ指定のブレ
ークポイントか前述した陰のブレークポイントかを判定
し(ステップA1,ステップA3)、ユーザ指定のブレ
ークポイントであった場合には(ステップA1のY)、
通常のブレークポイント処理を実行する(ステップA
2)。一方、陰のブレークポイントであった場合(ステ
ップA3のY)、デバッガ14は、飛び先の言語タイプ
をシンボル情報から調べ(ステップA5)、現在の言語
タイプと同じかどうか判定する(ステップA6)。そし
て、言語タイプが同じであった場合には(ステップA6
のY)、言語切替えは発生しなかったとして、ユーザプ
ログラムに復帰する(ステップA7)。一方、言語タイ
プが異なった場合には(ステップA6のN)、言語切替
えが発生したとして、ウォッチポイントレジスタ2の切
替え処理を実行する(ステップA8)。
【0021】図3には、この発明のウォッチポイントレ
ジスタ2の切替え処理の流れが示されている。デバッガ
14は、まず、ウォッチポイントレジスタ2に格納され
た値をメモリ3に保存する(ステップB1)。次に、デ
バッガ14は、新しい言語タイプでウォッチポイントが
設定されていたかどうかを判定する(ステップB2)。
ウォッチポイントが設定されていた場合(ステップB2
のY)、デバッガ14は、新しい言語タイプに対応する
ウォッチポイント情報をウォッチポイントレジスタ2に
復元した後に(ステップB3)、ユーザプログラムに制
御を戻す(ステップB4)。
ジスタ2の切替え処理の流れが示されている。デバッガ
14は、まず、ウォッチポイントレジスタ2に格納され
た値をメモリ3に保存する(ステップB1)。次に、デ
バッガ14は、新しい言語タイプでウォッチポイントが
設定されていたかどうかを判定する(ステップB2)。
ウォッチポイントが設定されていた場合(ステップB2
のY)、デバッガ14は、新しい言語タイプに対応する
ウォッチポイント情報をウォッチポイントレジスタ2に
復元した後に(ステップB3)、ユーザプログラムに制
御を戻す(ステップB4)。
【0022】一方、ウォッチポイントが設定されていな
かった場合には(ステップB2のN)、デバッガ14
は、ウォッチポイントレジスタ2をクリアした後に(ス
テップB5)、ユーザプログラムに制御を戻す(ステッ
プB6)。
かった場合には(ステップB2のN)、デバッガ14
は、ウォッチポイントレジスタ2をクリアした後に(ス
テップB5)、ユーザプログラムに制御を戻す(ステッ
プB6)。
【0023】これにより、プログラミング言語それぞれ
に対して個別にウォッチポイントを設定することができ
ることになり、効率的なデバッグが実現されることにな
るとともに、その操作性は飛躍的に向上する。
に対して個別にウォッチポイントを設定することができ
ることになり、効率的なデバッグが実現されることにな
るとともに、その操作性は飛躍的に向上する。
【0024】次に、デバッガ14が、ユーザの入力した
条件式がいずれの言語の文法によるかを自動判定し、そ
れぞれの言語に応じてデバッガ処理を行なう際の動作原
理を説明する。
条件式がいずれの言語の文法によるかを自動判定し、そ
れぞれの言語に応じてデバッガ処理を行なう際の動作原
理を説明する。
【0025】たとえば、funcをA言語で書かれた関
数とする。そして、 break func((cond a b)) と指定すると、funcにプログラムの実行が移った
際、(cond a b)が真の場合にのみブレークが
発生する。ここで、(cond a b)は、B言語で
書かれた式であるとする。すなわち、ここでは、デバッ
グ対象のプログラミング言語にとらわれずに所望のプロ
グラミング言語によってブレーク条件を指定することを
可能とする方法を提案することを特徴とする。
数とする。そして、 break func((cond a b)) と指定すると、funcにプログラムの実行が移った
際、(cond a b)が真の場合にのみブレークが
発生する。ここで、(cond a b)は、B言語で
書かれた式であるとする。すなわち、ここでは、デバッ
グ対象のプログラミング言語にとらわれずに所望のプロ
グラミング言語によってブレーク条件を指定することを
可能とする方法を提案することを特徴とする。
【0026】図4には、このときのデバッガ14の動作
手順が示されている。なお、ここでは、条件式をA言語
パーサおよびB言語パーサで解析し、どちらか一方のみ
解析可能であったときに、その言語に関する条件と判定
するものとし、あいまいさが残存する場合のみユーザに
対して選択処理を発生させるものとする。
手順が示されている。なお、ここでは、条件式をA言語
パーサおよびB言語パーサで解析し、どちらか一方のみ
解析可能であったときに、その言語に関する条件と判定
するものとし、あいまいさが残存する場合のみユーザに
対して選択処理を発生させるものとする。
【0027】デバッガ14は、まず条件式がA言語に適
合するかどうか判定し(ステップC1)、適合しなかっ
た場合には(ステップC1のN)、さらに条件式がB言
語に適合するかどうか判定する(ステップC2)。そし
て、B言語にも適合しなかった場合(ステップC2の
N)、デバッガ14は、エラーを表示する(ステップC
3)。また、条件式がB言語に適合した場合には(ステ
ップC2のY)、この条件式はB言語で記述されたもの
として(ステップC4)、ブレーク設定を実行する。
合するかどうか判定し(ステップC1)、適合しなかっ
た場合には(ステップC1のN)、さらに条件式がB言
語に適合するかどうか判定する(ステップC2)。そし
て、B言語にも適合しなかった場合(ステップC2の
N)、デバッガ14は、エラーを表示する(ステップC
3)。また、条件式がB言語に適合した場合には(ステ
ップC2のY)、この条件式はB言語で記述されたもの
として(ステップC4)、ブレーク設定を実行する。
【0028】一方、条件式がA言語に適合した場合も
(ステップC1のY)、デバッガ14は、さらに条件式
がB言語に適合するかどうか判定する(ステップC
5)。そして、適合しなかった場合には(ステップC5
のN)、この条件式はA言語で記述されたものとして
(ステップC6)、ブレーク設定を実行する。なお、B
言語にも適合すると判定された場合には(ステップC5
のY)、操作者に対して選択を促す(ステップC7)。
(ステップC1のY)、デバッガ14は、さらに条件式
がB言語に適合するかどうか判定する(ステップC
5)。そして、適合しなかった場合には(ステップC5
のN)、この条件式はA言語で記述されたものとして
(ステップC6)、ブレーク設定を実行する。なお、B
言語にも適合すると判定された場合には(ステップC5
のY)、操作者に対して選択を促す(ステップC7)。
【0029】これにより、ユーザは、常に所望のプログ
ラミング言語で条件設定を行なうことができ、その使い
勝手は向上する。なお、前述した実施形態では、プログ
ラミング言語それぞれにウォッチポイントを管理し、言
語切替えが発生したときに新しいプログラミング言語に
対応するウォッチポイントを設定し直す例を説明した
が、ウォッチポイントは従来どおり一種類のみ設定し、
いずれのプログラミング言語をデバッグ対象とするかを
選択することも有効である。この場合、デバッガ14
は、ウォッチポイントによりブレークが発生した際、飛
び先のプログラミング言語が選択されたプログラミング
言語と同じであるかどうか判定し、同じでない場合、速
やかにプログラムに制御を戻すことにより、意図したプ
ログラミング言語のみを対象としたデバッグが実現され
ることになり、2種類以上のプログラム言語が混在する
プログラムおデバッグの効率を向上させることができ
る。
ラミング言語で条件設定を行なうことができ、その使い
勝手は向上する。なお、前述した実施形態では、プログ
ラミング言語それぞれにウォッチポイントを管理し、言
語切替えが発生したときに新しいプログラミング言語に
対応するウォッチポイントを設定し直す例を説明した
が、ウォッチポイントは従来どおり一種類のみ設定し、
いずれのプログラミング言語をデバッグ対象とするかを
選択することも有効である。この場合、デバッガ14
は、ウォッチポイントによりブレークが発生した際、飛
び先のプログラミング言語が選択されたプログラミング
言語と同じであるかどうか判定し、同じでない場合、速
やかにプログラムに制御を戻すことにより、意図したプ
ログラミング言語のみを対象としたデバッグが実現され
ることになり、2種類以上のプログラム言語が混在する
プログラムおデバッグの効率を向上させることができ
る。
【0030】
【発明の効果】以上詳述したように、この発明によれ
ば、ウォッチポイントをプログラミング言語ごとに管理
し、プログラミング言語の切り替えが発生したときに新
たなプログラミング言語に対応したウォッチポイントを
設定し直すため、プログラミング言語それぞれに対応し
たデバッグが行なえることになり、複数種のプログラミ
ング言語で構築されたプログラムに対し、効率的かつ操
作性のよいデバッグ環境を提供することができる。
ば、ウォッチポイントをプログラミング言語ごとに管理
し、プログラミング言語の切り替えが発生したときに新
たなプログラミング言語に対応したウォッチポイントを
設定し直すため、プログラミング言語それぞれに対応し
たデバッグが行なえることになり、複数種のプログラミ
ング言語で構築されたプログラムに対し、効率的かつ操
作性のよいデバッグ環境を提供することができる。
【0031】また、ブレーク条件を設定するための文字
列がいずれのプログラミング言語の記法で書かれている
か判定し、その判定結果にしたがって条件を設定するた
め、ユーザは常に所望のプログラミング言語で条件設定
を行なうことができ、操作性を向上させることが可能と
なる。
列がいずれのプログラミング言語の記法で書かれている
か判定し、その判定結果にしたがって条件を設定するた
め、ユーザは常に所望のプログラミング言語で条件設定
を行なうことができ、操作性を向上させることが可能と
なる。
【図1】この発明を実施するための機能ブロックを示す
図。
図。
【図2】この発明のブレークポイント処理の流れを示す
フローチャート。
フローチャート。
【図3】この発明のウォッチポイントレジスタの切替え
処理の流れを示すフローチャート。
処理の流れを示すフローチャート。
【図4】この発明のデバッガが条件式を記述した言語を
認識して条件設定を行なうときの動作手順を示すフロー
チャート。
認識して条件設定を行なうときの動作手順を示すフロー
チャート。
1…CPU 2…ウォッチポイントレジスタ 3…メモリ 11…コンパイラ 12…リンカ 13…ローダ 14…デバッガ 141…ウォッチポイントテーブル 21…ソースプログラムファイル 22…オブジェクトファイル 23…プログラム実行ファイル
Claims (10)
- 【請求項1】 複数種のプログラミング言語で構築され
たプログラムをデバッグするデバッグ装置であって、予
め指定された変数の領域であるウォッチポイントがアク
セスされた際に制御を獲得するウォッチポイント機能を
有するデバッグ装置において、 前記ウォッチポイントを示すウォッチポイント情報を前
記プログラミング言語ごとに保持するウォッチポイント
テーブルと、 前記プログラムの実行中にプログラミング言語が切り替
わった際、その旨を検知して新たなプログラミング言語
に対応するウォッチポイント情報を前記ウォッチポイン
トテーブルから読み取り、この読み取ったウォッチポイ
ント情報にしたがって前記ウォッチポイントを設定し直
すウォッチポイント設定手段とを具備してなることを特
徴とするデバッグ装置。 - 【請求項2】 予め指定されたステップが実行される際
に制御を獲得するブレークポイント機能を有し、 前記ウォッチポイント設定手段は、ユーザが任意の箇所
に設定する第1のブレークポイントとは異なる第2のブ
レークポイントを前記プログラムに含まれるエントリ部
すべてに設定するブレークポイント設定手段と、 前記第2のブレークポイントにより制御が獲得された
際、呼ぶ側のオブジェクトのプログラミング言語と呼ば
れる側のオブジェクトのプログラミング言語とを比較し
てプログラミング言語の切り替わりを検知する検知手段
とを具備してなることを特徴とする請求項1記載のデバ
ッグ装置。 - 【請求項3】 前記ブレークポイント設定手段は、各オ
ブジェクトが保有するシンボル情報に含まれる外部参照
情報に基づいて前記第2のブレークポイントを設定する
手段を具備し、 前記検知手段は、各オブジェクトが保有するシンボル情
報に含まれるエントリそれぞれに対応した言語識別情報
に基づいてプログラミング言語の切り替わりを検知する
手段を具備してなることを特徴とする請求項2記載のデ
バッグ装置。 - 【請求項4】 前記外部参照情報は、リンカによって前
記シンボル情報に格納され、前記言語識別情報は、コン
パイラによって前記シンボル情報に格納されることを特
徴とする請求項3記載のデバッグ装置。 - 【請求項5】 複数種のプログラミング言語で構築され
たプログラムをデバッグするデバッグ装置であって、予
め指定された変数の領域であるウォッチポイントがアク
セスされた際に制御を獲得するウォッチポイント機能を
有するデバッグ装置において、 デバッグ対象とするプログラミング言語を設定する設定
手段と、 前記ウォッチポイント機能により制御が獲得された際、
実行中のオブジェクトのプログラミング言語と前記設定
手段により設定されたプログラミング言語が一致するか
否か判定する判定手段と、 前記判定手段の判定結果が不一致であったときに、獲得
した制御を速やかに返却する制御返却手段とを具備して
なることを特徴とするデバッグ装置。 - 【請求項6】 前記判定手段は、各オブジェクトが保有
するシンボル情報に含まれるエントリそれぞれに対応し
た言語識別情報により実行中のオブジェクトのプログラ
ミング言語を知得する手段を具備してなることを特徴と
する請求項5記載のデバッグ装置。 - 【請求項7】 前記言語識別情報は、コンパイラによっ
て前記シンボル情報に格納されることを特徴とする請求
項6記載のデバッグ装置。 - 【請求項8】 予め設定された条件に合致したときに制
御を獲得するブレーク機能を有するデバッグ装置におい
て、 前記条件を設定するための文字列がいずれのプログラミ
ング言語の記法で書かれているか判定する判定手段と、 この判定手段で判定されたプログラミング言語の条件表
現に基づいて前記条件を設定するブレーク条件設定手段
とを具備してなることを特徴とするデバッグ装置。 - 【請求項9】 前記ブレーク条件設定手段は、前記条件
を設定するための文字列をデバッグ対象とするオブジェ
クトのプログラム言語以外のプログラム言語で入力可能
であることを特徴とする請求項8記載のデバッグ装置。 - 【請求項10】 複数種のプログラミング言語で構築さ
れたプログラムをデバッグするデバッグ装置であって、
予め指定された変数の領域であるウォッチポイントがア
クセスされた際に制御を獲得するウォッチポイント機能
を有するデバッグ装置に適用されるデバッグ方法におい
て、 前記ウォッチポイントを示すウォッチポイント情報を前
記プログラミング言語ごとに保持し、 前記プログラムの実行中にプログラミング言語が切り替
わった際、その旨を検知し、前記保持した新たなプログ
ラミング言語に対応するウォッチポイント情報にしたが
って、前記ウォッチポイントを設定し直すことを特徴と
するデバッグ方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8322943A JPH10161904A (ja) | 1996-12-03 | 1996-12-03 | 複数言語対応のデバッグ装置およびデバッグ方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8322943A JPH10161904A (ja) | 1996-12-03 | 1996-12-03 | 複数言語対応のデバッグ装置およびデバッグ方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10161904A true JPH10161904A (ja) | 1998-06-19 |
Family
ID=18149375
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8322943A Pending JPH10161904A (ja) | 1996-12-03 | 1996-12-03 | 複数言語対応のデバッグ装置およびデバッグ方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH10161904A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007304840A (ja) * | 2006-05-11 | 2007-11-22 | Matsushita Electric Ind Co Ltd | コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム |
-
1996
- 1996-12-03 JP JP8322943A patent/JPH10161904A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007304840A (ja) * | 2006-05-11 | 2007-11-22 | Matsushita Electric Ind Co Ltd | コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5621886A (en) | Method and apparatus for providing efficient software debugging | |
| JP2749528B2 (ja) | エラー解析用のトレーサシステム | |
| KR100303548B1 (ko) | 컴퓨터시스템내에서소프트웨어모듈들을프로그램실행중동적으로결합시키는방법및그장치 | |
| JP2753500B2 (ja) | 多重アーキテクチャ環境内で特にコードのデバッグを行う改良したソフトウェア・デバッグ・システムと方法 | |
| US5121472A (en) | Method for replacing keyboard data using single step process mode | |
| KR101247062B1 (ko) | 제한적인 호출 규칙을 갖춘 코드의 검사 방법 | |
| US20060041867A1 (en) | Method, apparatus and computer program product for implementing enhanced compiled breakpoint analysis | |
| US20050268195A1 (en) | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems | |
| US5737521A (en) | Tracer system for analyzing errors in running real-time systems | |
| JPH10214203A (ja) | 情報処理装置 | |
| JPH10161904A (ja) | 複数言語対応のデバッグ装置およびデバッグ方法 | |
| WO2024069730A1 (ja) | デバッグ装置及びデバッグ方法 | |
| JPH1165885A (ja) | ソフトウェアディバッグ装置及びソフトウェアディバッグ方法 | |
| JPH06103109A (ja) | データプロセッサ、及びこれを用いるデバッグ装置 | |
| JPH1011315A (ja) | インサーキットエミュレータ装置およびインサーキットエミュレーション方法 | |
| JP4295912B2 (ja) | デバッグシステム | |
| JP4192519B2 (ja) | 情報処理方法および装置 | |
| JPH0695910A (ja) | 異常処理のための対話型デバッグ制御方式 | |
| JP2002073370A (ja) | デバッグ支援装置およびその装置によるデバッグ方法 | |
| JP2000181748A (ja) | マルチメモリ空間プログラムのデバッグシステムおよびそのデバッグ方法 | |
| JP2697230B2 (ja) | デバッグ支援装置 | |
| JP3077627B2 (ja) | デバッグ方法およびデバッグプログラムを記録する記録媒体 | |
| JP2659366B2 (ja) | デバッグ方法及びその装置 | |
| JPS61180344A (ja) | 高級言語のステツプ実行システム | |
| JP2860054B2 (ja) | プログラムデバッグ装置 |