JP2002189613A - ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Info

Publication number
JP2002189613A
JP2002189613A JP2000388952A JP2000388952A JP2002189613A JP 2002189613 A JP2002189613 A JP 2002189613A JP 2000388952 A JP2000388952 A JP 2000388952A JP 2000388952 A JP2000388952 A JP 2000388952A JP 2002189613 A JP2002189613 A JP 2002189613A
Authority
JP
Japan
Prior art keywords
address
execution
event
established
area
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
Application number
JP2000388952A
Other languages
English (en)
Inventor
Masahisa Kitajima
正久 北島
Tsukasa Aso
主 麻生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000388952A priority Critical patent/JP2002189613A/ja
Publication of JP2002189613A publication Critical patent/JP2002189613A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 イベントブレークを回避したい領域を予め指
定し、かかる領域内ではイベントが成立しても、プログ
ラムの実行停止やソースプログラムの表示を回避する。 【解決手段】 イベントが成立した場合に、プログラム
の実行を停止するブレーク信号を発生するブレーク信号
発生手段と、イベントが成立した場合であってもソース
プログラムを表示したくない領域のアドレスである隠蔽
領域アドレスと、実行アドレスとを比較する比較器60
1と、ブレーク信号を無効化するAND回路605とを
有し、イベントが成立した場合に、比較器601が、実
行アドレスが隠蔽領域アドレス内のアドレスであると判
断したら、AND回路605が、ブレーク信号を無効化
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、予め指定したサブ
ルーチン等のイベントブレークを回避したい領域内でイ
ベントが成立した場合に、プログラムの実行を制御し、
またその時の実行アドレスに対応するソースプログラム
の表示を制御するソフトウェア開発支援技術に関する。
【0002】
【従来の技術】デバッグは作成したプログラムを動作さ
せながら不具合や仕様と異なる動作等を探して修正する
作業であり、デバッガはそのためのツールである。
【0003】デバッガの基本機能は、プログラムの実行
制御や変数、レジスタ、メモリの内容等の読み出し、書
き込み等である。
【0004】それらの一つとして、デバッガは、イベン
ト成立時に様々な動作を行うという機能を持つ。イベン
トの例としてはメモリのある番地が読み込まれた時、あ
る変数がある値になった時、などがあり、様々な動作の
例としては、時間計測の開始や終了、実行記録の開始や
終了等がある。その動作の一つに、プログラムの実行を
停止(ブレーク)する動作があり、ここではそれをイベ
ントブレークと呼ぶ。
【0005】一般的に、このイベント(条件)はデバッ
ガで設定され、ユーザはある条件で停止した時点での変
数、レジスタの内容などを検査し、プログラムを解析す
ることが出来る。
【0006】
【発明が解決しようとする課題】マイクロコンピュータ
を用いた応用システムの開発において、デバッグやテス
ト時にイベントブレークを設定した場合、OSやライブ
ラリ、既に完成しているソースコードや、グループ開発
をする際の他人のソースコード等、検証したいユーザプ
ログラム以外の領域で停止する事がある。しかし、それ
らの領域での停止はユーザにとって意味が無い事が多
い。
【0007】また、組込みソフトウェアもC言語で開発
することが一般的になってきたが、ソースレベルでのデ
バッグにおいて、サブルーチンなどのブラックボックス
化された部分でプログラムが実行を停止し、その部分の
アセンブラソースを見せられてもユーザは戸惑うことに
なる。必要以上の情報の提示は混乱に繋がる。
【0008】しかし、現状ではイベントが成立すればプ
ログラムのどの領域であっても停止してしまい、その部
分のソースコードが表示されてしまう。そのたびにユー
ザは、表示されたソースコードを見て、検証すべき部分
か否かを判断しなければならず、非効率的である。
【0009】本発明は、上記の如き従来の問題点を解決
するためになされたものであり、その目的は、イベント
ブレークを回避したい領域を予め指定し、その領域にお
いてはイベントが成立しても、プログラムの実行を停止
せず、ソースコードを表示しないソフトウェア開発支援
装置、方法及びそのようなプログラムを記録したコンピ
ュータ読み取り可能な記録媒体を提供することである。
【0010】
【課題を解決するための手段】本発明の第1の特徴は、
ソフトウェア開発支援装置であって、(1)イベントが
成立した場合に、プログラムの実行を停止するブレーク
信号を発生するブレーク信号発生手段と、(2)前記イ
ベントが成立した場合であってもソースプログラムを表
示したくない領域のアドレスである隠蔽領域アドレス
と、実行アドレスとを比較する比較手段と、(3)前記
ブレーク信号を無効化するブレーク信号無効化手段と、
(4)前記プログラムを実行する中央処理装置とを有
し、前記ブレーク信号発生手段の出力と前記比較手段の
出力とが、前記ブレーク信号無効化手段の入力となり、
前記ブレーク信号無効化手段の出力が、前記中央処理装
置の入力となり、前記イベントが成立した場合に、前記
比較手段が前記実行アドレスが前記隠蔽領域アドレス内
のアドレスであると判断したら、前記ブレーク信号無効
化手段が、前記ブレーク信号を無効化することにある。
【0011】かかる特徴により、イベントが成立した場
合であっても、隠蔽領域アドレス内である場合は、プロ
グラムは実行し続けることができる。
【0012】本発明の第2の特徴は、ソフトウェア開発
支援方法であって、(1)イベントが成立した場合に、
プログラムの実行を停止するブレーク信号を発生する工
程と、(2)イベントが成立した場合であってもソース
プログラムを表示したくない領域のアドレスである隠蔽
領域アドレスと、前記イベントが成立した際の実行アド
レスとを比較する工程と、(3)前記イベントが成立し
た際の実行アドレスが前記隠蔽領域アドレス内のアドレ
スであると判断したら、前記ブレーク信号を無効化する
工程と、を少なくとも含むことにある。
【0013】かかる特徴により、イベントが成立した場
合であっても、隠蔽領域アドレス内である場合は、プロ
グラムは実行し続けることができる。
【0014】本発明の第3の特徴は、ソフトウェア開発
支援方法であって、(1)イベントが成立した場合に、
プログラムの実行を停止するブレーク信号を発生する工
程と、(2)イベントが成立した場合であってもソース
プログラムを表示したくない領域のアドレスである隠蔽
領域アドレスと、前記イベントが成立した際の実行アド
レスとを比較する工程と、(3)前記イベントが成立し
た際の実行アドレスが、前記隠蔽領域アドレス内のアド
レスであると判断したら、前記ブレーク信号を保持する
工程と、(4)前記隠蔽領域アドレスと、前記イベント
が成立した後の実行アドレスとを比較する工程と、
(5)前記イベントが成立した後の実行アドレスが、前
記隠蔽領域アドレス外のアドレスになったと判断した
ら、前記ブレーク信号の保持を解除し、実行プログラム
を停止する工程と、(6)前記隠蔽領域アドレス外のア
ドレスになった際の実行アドレスに対応するソースプロ
グラムを表示する工程と、を少なくとも含むことにあ
る。
【0015】かかる特徴により、イベントが成立した場
合であっても、隠蔽領域アドレス内である場合は、プロ
グラムは実行し続け、実行アドレスが隠蔽領域から出た
ら、実行プログラムを停止し、対応するソースプログラ
ムが表示される。
【0016】本発明の第4の特徴は、(1)イベントが
成立した場合であってもソースプログラムを表示したく
ない領域のアドレスである隠蔽領域アドレス内に入る前
の隠蔽領域前アドレスを保持しておく工程と、(2)イ
ベントが成立した場合に、プログラムの実行を停止する
ブレーク信号を発生する工程と、(3)前記隠蔽領域ア
ドレスと、前記イベントが成立した際の実行アドレスと
を比較する工程と、(4)前記イベントが成立した際の
実行アドレスが、前記隠蔽領域アドレス内のアドレスで
あると判断したら、実行プログラムを停止する工程と、
(5)前記隠蔽領域前アドレスに対応するソースプログ
ラムを表示する工程と、を少なくとも含むことにある。
【0017】かかる特徴により、イベントが成立した場
合、その瞬間の実行アドレスに対応するソースプログラ
ムが表示されるのではなく、隠蔽領域に入る直前の実行
アドレスに対応するソースプログラムが表示される。
【0018】また、前記隠蔽領域アドレスをオブジェク
トファイル内に付加する工程と、前記隠蔽領域アドレス
を前記オブジェクトファイルから読み込む工程とをさら
に含み、前記イベントが成立した場合に、前記実行アド
レスと前記オブジェクトファイルから読み込んだ前記隠
蔽領域アドレスとを比較するとしても良い。
【0019】また、前記隠蔽領域アドレスをデバッガの
記憶手段に記憶させる工程と、前記隠蔽領域アドレスを
前記デバッガの記憶手段から読み込む工程とをさらに含
み、前記イベントが成立した場合に、前記実行アドレス
と前記デバッガの記憶手段から読み込んだ前記隠蔽領域
アドレスとを比較するとしても良い。
【0020】また、前記隠蔽領域アドレスを記述した隠
蔽領域アドレスファイルを作成する工程と、前記隠蔽領
域アドレスを前記隠蔽領域アドレスファイルから読み込
む工程とをさらに含み、前記イベントが成立した場合
に、前記実行アドレスと前記隠蔽領域アドレスファイル
から読み込んだ前記隠蔽領域アドレスとを比較するとし
ても良い。
【0021】つまり、前記隠蔽領域アドレスに関する情
報を持たないオブジェクトファイルに対して、(1)隠
蔽領域アドレスに関する情報をデバッガから指定する、
もしくは(2)隠蔽領域アドレスに関する情報を記述し
たファイルを読み込む、としても良い。
【0022】さらに、前記隠蔽領域アドレスの指定をフ
ァイル単位、関数単位又は領域単位で行うとしても良
い。
【0023】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態について説明する。
【0024】(第1の実施形態) (1)隠蔽領域の指定 オブジェクトファイル作成時に隠蔽領域情報を指定する
方法を、C言語を例に示す。隠蔽領域とは、その領域内
でイベントが成立しても、プログラムの実行を停止した
り、ソースコードの表示をしない領域をいう。
【0025】(1−1)ファイル単位での指定 隠蔽するファイルのファイル名をオプションで指定でき
るコンパイラを使用して、指定されたファイルの全領域
を隠蔽領域とする。
【0026】図1に、隠蔽するファイルの名前をコンパ
イル時にオプション指定する例を示す。同図に示す例で
は、オプション指定“ND”に続けて隠蔽するファイル
の名前を複数表記している。これにより、コンパイラ
は、コンパイル時又はリンク時にその表記されたファイ
ルの全領域を隠蔽領域と認識し、その旨の隠蔽領域情報
を生成し、その隠蔽領域情報をオブジェクトファイルに
付加する。
【0027】つまり、”cfile01.c cfil
e02.c cint01.lib”の全領域が隠蔽領
域である旨の情報がオブジェクトファイルに付加され
る。
【0028】図2に、隠蔽しないファイルの名前をコン
パイル時にオプション指定する例を示す。同図に示す例
では、オプション指定“NDO”に続けて隠蔽しないフ
ァイルの名前を複数表記している。これにより、コンパ
イラは、コンパイル時又はリンク時にその表記されたフ
ァイル以外のファイルの全領域を隠蔽領域と認識し、そ
の旨の隠蔽領域情報を生成し、その隠蔽領域情報をオブ
ジェクトファイルに付加する。
【0029】つまり、”cfile03.c cfil
e04.c cfile05.c”以外のファイルの全
領域が隠蔽領域である旨の情報がオブジェクトファイル
に付加される。
【0030】(1−2)関数単位での指定 隠蔽する関数を指定したファイルと、その指定情報を解
釈しうるプリプロセッサ、コンパイラ、又はアセンブラ
を使用する。
【0031】図3に、関数単位で隠蔽領域を指定する例
を示す。同図に示すように、隠蔽する関数の名前をプラ
グマ指定子“#pragma”とそれに続くキーワード
(“conceal”)の後に指定する。
【0032】コンパイル時又はアセンブル時に、プリプ
ロセッサ、コンパイラ、又はアセンブラが、指定された
関数”foo”を隠蔽領域と解釈し、その旨の隠蔽領域
情報を生成し、その隠蔽領域情報をオブジェクトファイ
ルに付加する。
【0033】(1−3)領域単位での指定 隠蔽する関数を指定したファイルと、その指定情報を解
釈しうるプリプロセッサ、コンパイラ、又はアセンブラ
を使用する。隠蔽する関数を指定したファイルには、隠
蔽する領域が始まるポイント(隠蔽開始ポイント)と隠
蔽する領域が終わるポイント(隠蔽終了ポイント)も記
述する。
【0034】図4に、プラグマ指定子“#pragm
a”とそれに続くキーワード“begin_conce
al”で隠蔽開始ポイントを、“end_concea
l”で隠蔽終了ポイントを指定するファイルの例を示
す。同図に示す例では、関数”goo”中の”int
k;”から”k++;”までが隠蔽領域と解釈され、そ
の旨の隠蔽領域情報が生成され、その隠蔽領域情報がオ
ブジェクトファイルに付加される。
【0035】上記いずれかの方法によって、ファイル単
位、関数単位又は領域単位で、隠蔽領域を指定する。
【0036】ファイル単位で指定する場合は、コンパイ
ラは、隠蔽する又は隠蔽しないと指定されたソースファ
イルのファイル名が隠蔽情報として付加されたオブジェ
クトファイルを出力できるものとする。
【0037】また、関数単位で指定する場合は、コンパ
イラは、隠蔽する又は隠蔽しないと指定された関数の関
数名が隠蔽情報として付加されたオブジェクトファイル
を出力できるものとする。
【0038】さらに、隠蔽開始ポイント等を指定する場
合は、コンパイラは、隠蔽開始ポイント等を隠蔽情報と
して付加されたオブジェクトファイルを出力できるもの
とする。
【0039】コンパイラは、隠蔽する、または隠蔽しな
いと指定されたソースファイルや関数、領域について、
それぞれに対するアドレスが割り付けられる際に、オブ
ジェクトにその該当アドレス情報を付加するものとす
る。例えば、ある関数を隠蔽領域と指定してオブジェク
トを生成する際に、その関数にアドレスが割り振られる
際、隠蔽領域情報として、その関数やその中で使用され
る変数が割り当てられた開始アドレスと終了アドレス、
またはスタック等の動的に構築される情報に対応するた
めの情報を持つテーブルを生成しオブジェクトファイル
中に含むものとする。
【0040】(2)オブジェクトファイルの内容 図5に、本実施形態に係るオブジェクトファイルの内部
構造の概要を示す。同図に示すように、本実施形態に係
るオブジェクトファイルには、オブジェクト情報とデバ
ッグ情報とが含まれる。オブジェクト情報には隠蔽対象
の情報が含まれ、デバッグ情報には隠蔽領域情報が含ま
れる。隠蔽対象の情報と隠蔽領域情報とは関連づけされ
ている。「隠蔽対象の情報」、「隠蔽領域情報」につい
ては後述する。
【0041】オブジェクト情報は、ヘッダ部、アドレス
記述定義拡張部、環境設定部、セクション定義部、シン
ボル定義部、デバッグ情報定義部、データ部、終端部及
びモジュール終端部の9つの部分から構成される。
【0042】ヘッダ部は、オブジェクトファイルの最初
に出力される。ヘッダ部には、プロセッサ名に関する情
報、ヘッダ部以降の各部のオブジェクトファイル中にお
ける位置を示すバイトオフセットに関する情報などが含
まれる。
【0043】アドレス記述定義拡張部には、オブジェク
トフォーマットバージョン番号やオブジェクトフォーマ
ットタイプ(アブソリュート、リロケータブルなど)な
どのオブジェクトファイルの属性情報が含まれる。
【0044】環境設定部には、オブジェクトファイルの
作成日、作成コマンド名、ステータス、作成ツール情報
などオブジェクトファイルが作成されたホスト環境に関
する情報が含まれる。
【0045】セクション定義部には、オブジェクトファ
イルのセクション情報が含まれる。シンボル参照時のレ
ンジ判定などに利用される。
【0046】シンボル定義部には、リンケージエディタ
がアドレスの解決に利用したシンボル(ラベル)の情報
が含まれる。型の情報が存在しないので、ソースレベル
のデバッグでは利用されない。
【0047】デバッグ情報定義部には、ソースレベルの
デバッグの要となる情報が含まれる。変数の評価などの
シンボル参照に利用される。
【0048】データ部には、再配置可能なデータや固定
データなどターゲット側にダウンロードされる情報が含
まれる。データ部の情報は、ホストマシン側では保持し
ない。
【0049】終端部には、プログラムの実行開始アドレ
スの情報が含まれる。アセンブラによっては、この情報
を出力しないものもある。その場合は、オブジェクトフ
ァイルには出力されない。
【0050】モジュール終端部は、オブジェクトファイ
ルの最後に出力される。オブジェクトファイルの終端で
あることを定義する。
【0051】次に、デバッグ情報中の隠蔽情報定義部に
ついて説明する。隠蔽情報定義部は以下のような隠蔽対
象の情報を定義する。
【0052】「隠蔽対象の情報」とは、(a)隠蔽対象
がファイルである場合は、(a1)そのファイルの開始
ポイントとそのファイルの大きさ、(a2)そのファイ
ルの開始ポイントと終了ポイント、又は(a3)そのフ
ァイルの開始ポイントと終了ポイントを導き出すために
必要な情報、(b)隠蔽対象が関数である場合は、(b
1)その関数の開始ポイントとその関数の大きさ、(b
2)その関数の開始ポイントと終了ポイント、又は(b
3)その関数の開始ポイントと終了ポイントを導き出す
ために必要な情報、(c)隠蔽対象が領域である場合
は、(c1)その領域の開始ポイントとその領域の大き
さ、(c2)その領域の開始ポイントと終了ポイント、
又は(c3)その領域の開始ポイントと終了ポイントを
導き出すために必要な情報、などをいう。
【0053】これらの情報と、オブジェクトファイル中
のその他の情報(ソースファイルに関する情報、関数に
関する情報、アドレスやセクションに関する情報)を合
わせて、隠蔽の対象となるアドレスの情報を構築し、こ
の情報を「隠蔽領域情報」としてオブジェクトファイル
中に持つものとする。
【0054】(3)隠蔽領域情報を持ったオブジェクト
ファイルを読み込んだ場合の処理 オブジェクトファイルのローディング時に隠蔽領域を自
動的に設定することができるデバッガ、エミュレータを
使用する。
【0055】図6に、実行アドレスが隠蔽領域内にある
場合に、ブレークが回避されるエミュレータ内部の回路
の一例を示す。同図に示すように、回路は、比較器60
1と、ラッチ603と、AND回路605と、中央処理
装置(CPU)607とを含む。比較器601の出力
は、反転されてからAND回路605に入力される。
【0056】比較器601は、実行アドレスと、オブジ
ェクトファイルから読み込まれた隠蔽領域アドレスとを
比較し、実行アドレスが隠蔽領域アドレス中に含まれる
場合に、停止回避信号を生成する。複数の隠蔽領域を設
定可能とするために、比較器601は複数段あるものと
する。
【0057】所定のイベントが発生し、ブレーク信号
「1」が生成された場合、ラッチ603を経由して、ブ
レーク信号「1」が、AND回路605に入力される。
【0058】しかし、イベント発生ポイントが隠蔽領域
内である場合、比較器601から「1」が出力される
が、その信号はAND回路605に入力する前に反転さ
れ、「0」となってAND回路605に入力される。こ
の結果、AND回路605の入力は「1」と「0」とな
るため、出力は「0」となり、プログラムの実行停止が
回避される。
【0059】一方、イベント発生ポイントが隠蔽領域外
である場合、比較器601から「0」が出力されるが、
その信号はAND回路605に入力する前に反転され、
「1」となってAND回路605に入力される。この結
果、AND回路605の入力はいずれも「1」となるた
め、出力も「1」となり、プログラムの実行が停止され
る。
【0060】また、強制停止信号によってプログラムを
強制的に停止させることもできる。
【0061】(4)隠蔽領域内でイベントが成立し、ブ
レークが発生した際のソースプログラムの表示処理 図7は、隠蔽領域内でイベントが成立し、ブレークが発
生した際にソースプログラムを表示する処理の流れを示
すフローチャートである。
【0062】イベントブレークが発生したら(ステップ
S701)、イベントが成立したアドレスが隠蔽領域内
か否かを判断する(ステップS703)。
【0063】イベントが成立したアドレスが隠蔽領域内
でない場合は、プログラムの実行をブレークし(ステッ
プS711)、イベントが成立したアドレス部分のソー
スプログラムを表示する(ステップS713)。
【0064】イベントが成立したアドレスが隠蔽領域内
である場合は、隠蔽領域前のソースプログラムを表示す
るか否かを判断する(ステップS721)。
【0065】隠蔽領域前のソースプログラムを表示しな
い場合は、実行アドレスが隠蔽領域内であるか否かを判
断する(ステップS731)。
【0066】そして、実行アドレスが隠蔽領域を出るま
で、プログラムを実行し続け、実行アドレスが隠蔽領域
を出た時点で、プログラムの実行をブレークし(ステッ
プS733)、実行アドレスが隠蔽領域を出た時のアド
レス部分のソースプログラムを表示する(ステップS7
35)。
【0067】イベントが成立したアドレスが隠蔽領域内
である場合に、隠蔽領域前のソースプログラムを表示す
る場合は、隠蔽領域に入る前の実行アドレスをイベント
成立時に取得し(ステップS723)、隠蔽領域に入る
前の実行アドレス部分のソースプログラムを表示する
(ステップS725)。
【0068】図8に、隠蔽領域に入る前の実行アドレス
を取得する処理の概要を示す。同図に示すように、実行
アドレスと隠蔽領域アドレスとを比較し(ステップS8
01)、実行アドレスが隠蔽領域に入ったら、実行アド
レスが隠蔽領域外であったときの最終番地(最終アドレ
ス)を保持しておく(ステップS803)。
【0069】具体的には、(a)ある時刻T1での実行
アドレスと、隠蔽領域アドレスを比較し、(b)「実行
アドレス≠隠蔽領域アドレス」であった場合は、その実
行アドレスを保持しておき、(c)所定時間経過後の時
刻T2での実行アドレスと、隠蔽領域アドレスを比較
し、(d)再び「実行アドレス≠隠蔽領域アドレス」で
あった場合は、保持する実行アドレスを、時刻T1の実
行アドレスから時刻T2の実行アドレスに代え、(e)
さらに所定時間経過後の時刻T3での実行アドレスと、
隠蔽領域アドレスを比較し、(f)「実行アドレス=隠
蔽領域アドレス」であった場合は、T2における実行ア
ドレスを最終番地(最終アドレス)として保持してお
く。
【0070】このようにして保持しておいた最終アドレ
スが、図7に示したステップS723において、隠蔽領
域に入る前の実行アドレスとして取得される。
【0071】(第2の実施形態)第1の実施形態は、オ
ブジェクトファイルに隠蔽領域情報を格納する実施形態
である。しかし、隠蔽領域情報は、オブジェクトファイ
ルに格納しなくても良い。オブジェクトファイルに隠蔽
領域情報を格納するのではなく、デバッガ、デバッグシ
ステムもしくはアプリケーションシステムその他によっ
て隠蔽領域を設定しても良い。
【0072】例えば、隠蔽領域情報を持たないオブジェ
クトファイルを読み込んだ後に、隠蔽領域を設定するこ
とが可能なデバッガを使用する。
【0073】デバッガを用いて隠蔽領域を指定する場合
も、コンパイル時に隠蔽領域情報をオブジェクトファイ
ルに持たせる場合と同様に、ファイル単位、関数単位又
は領域単位で指定することができる。
【0074】デバッグ情報には、ソースファイルをどの
ようにコンパイルしたかが記述されている。オブジェク
トファイルがデバッガにロードされると、ホストマシン
側に参照可能なデバッグ情報構造体が構築され、エミュ
レータ等のターゲット側にオブジェクトファイルがダウ
ンロードされる。デバッガが、オブジェクトファイルを
全て読み終えた後、ホストマシン側に構築されたデバッ
グ情報構造体は、デバッガプログラムが参照しやすいよ
うに整頓(ソート等)される。そのデバッグ情報を利用
して、デバッガはソースファイル等に関する情報を得る
ことができる。
【0075】同様にして、デバッガは他の情報(シンボ
ル情報、セクション情報など)も得ることができる。シ
ンボル情報、セクション情報などを利用して、ファイル
単位、関数単位、又は領域単位の選択、指定を行うこと
ができる。
【0076】例えば、ファイル単位で指定する際には、
ファイルブラウザのようなGUI(グラフィカル・ユー
ザ・インターフェィス)機能を使用して、隠蔽したいフ
ァイルを選択し、隠蔽対象として指定しても良い。ま
た、領域を指定する場合は、ソースプログラムの内容を
表示できるエディタを使用して、隠蔽したい領域を表示
し、選択し、指定するとしても良い。
【0077】なお、オブジェクトファイルを読み込む前
に隠蔽領域情報を指定しても良い。オブジェクトファイ
ルを読み込む前に隠蔽領域情報を指定する方法として
は、例えば隠蔽領域のアドレスが予めわかっている場合
に、(1)その開始アドレスと終了アドレスをキーボー
ド等の入力手段を用いてデバッガに直接入力する、
(2)開始アドレスと終了アドレスが書かれたファイル
をデバッガに読み込ませる、等の方法が採用しうる。
【0078】また、上述のプログラム開発支援方法にお
いて必要とされる各ステップをコンピュータに実行させ
るプログラムを記録媒体に記録し、これをコンピュータ
に読み取らせ、実行させることにより、上述したプログ
ラム開発支援方法を実現することができる。
【0079】ここで、記録媒体としては、例えばメモリ
装置、磁気ディスク装置、光ディスク装置、磁気テープ
装置などのプログラムを記録できるような装置が含まれ
る。
【0080】図9は、これら記録媒体に格納されたプロ
グラムを読み取り、そこに記述されたステップに従って
プログラム開発支援を実現するコンピュータシステムの
一例を示す概観図である。
【0081】このコンピュータシステム80の本体前面
には、フロッピー(登録商標)ディスクドライブ81及
びCD−ROMドライブ82が設けられており、磁気デ
ィスク装置としてのフロッピーディスク83又は光ディ
スク装置としてのCD−ROM84を各ドライブ入口か
ら挿入し、所定の読み出し操作を行うことにより、これ
らの記録媒体に格納されたプログラムをシステム内にイ
ンストールすることができる。また、所定のドライブ装
置を接続することにより、例えばゲームパックなどに使
用されているメモリ装置としてのROM85や磁気テー
プ装置としてのカセットテープ86を用いることもでき
る。
【0082】
【発明の効果】本発明により、イベントブレークを回避
したい領域をあらかじめ指定し、その領域ではイベント
が成立してもソースコードが表示されることを避けるこ
とができる。よって、ユーザは常に隠蔽領域外のプログ
ラムのみをデバッグ、テストする事ができ、開発効率の
向上が見込まれる。保守、点検等においても特定領域の
隠蔽は作業効率の向上という効果を発揮する。
【図面の簡単な説明】
【図1】隠蔽するファイルの名前をコンパイル時にオプ
ション指定する例を示す図である。
【図2】隠蔽しないファイルの名前をコンパイル時にオ
プション指定する例を示す図である。
【図3】関数単位で隠蔽領域を指定する例を示す図であ
る。
【図4】関数中の一部の領域を隠蔽領域として指定する
例を示す図である。
【図5】本実施形態に係るオブジェクトファイルの内部
構造の概要を示す図である。
【図6】実行アドレスが隠蔽領域内にある場合に、ブレ
ークが回避されるエミュレータ内部の回路の一例を示す
図である。
【図7】隠蔽領域内でイベントが成立し、ブレークが発
生した際にソースプログラムを表示する処理の流れを示
すフローチャートである。
【図8】隠蔽領域に入る前の実行アドレスを取得する処
理の概要を示す。
【図9】記録媒体に格納されたプログラムを読み取り、
そこに記述されたステップに従ってプログラム開発支援
を実現するコンピュータシステムの一例を示す概観図で
ある。
【符号の説明】
601 比較器 603 ラッチ 605 AND回路 607 CPU(中央処理装置)

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 イベントが成立した場合に、プログラム
    の実行を停止するブレーク信号を発生するブレーク信号
    発生手段と、 前記イベントが成立した場合であってもソースプログラ
    ムを表示したくない領域のアドレスである隠蔽領域アド
    レスと、実行アドレスとを比較する比較手段と、 前記ブレーク信号を無効化するブレーク信号無効化手段
    と、 前記プログラムを実行する中央処理装置とを有し、 前記ブレーク信号発生手段の出力と前記比較手段の出力
    とが、前記ブレーク信号無効化手段の入力となり、 前記ブレーク信号無効化手段の出力が、前記中央処理装
    置の入力となり、 前記イベントが成立した場合に、前記比較手段が前記実
    行アドレスが前記隠蔽領域アドレス内のアドレスである
    と判断したら、前記ブレーク信号無効化手段が、前記ブ
    レーク信号を無効化することを特徴とするソフトウェア
    開発支援装置。
  2. 【請求項2】 イベントが成立した場合に、プログラム
    の実行を停止するブレーク信号を発生する工程と、 イベントが成立した場合であってもソースプログラムを
    表示したくない領域のアドレスである隠蔽領域アドレス
    と、前記イベントが成立した際の実行アドレスとを比較
    する工程と、 前記イベントが成立した際の実行アドレスが前記隠蔽領
    域アドレス内のアドレスであると判断したら、前記ブレ
    ーク信号を無効化する工程と、を少なくとも含むことを
    特徴とするソフトウェア開発支援方法。
  3. 【請求項3】 イベントが成立した場合に、プログラム
    の実行を停止するブレーク信号を発生する工程と、 イベントが成立した場合であってもソースプログラムを
    表示したくない領域のアドレスである隠蔽領域アドレス
    と、前記イベントが成立した際の実行アドレスとを比較
    する工程と、 前記イベントが成立した際の実行アドレスが、前記隠蔽
    領域アドレス内のアドレスであると判断したら、前記ブ
    レーク信号を保持する工程と、 前記隠蔽領域アドレスと、前記イベントが成立した後の
    実行アドレスとを比較する工程と、 前記イベントが成立した後の実行アドレスが、前記隠蔽
    領域アドレス外のアドレスになったと判断したら、前記
    ブレーク信号の保持を解除し、実行プログラムを停止す
    る工程と、 前記隠蔽領域アドレス外のアドレスになった際の実行ア
    ドレスに対応するソースプログラムを表示する工程と、
    を少なくとも含むことを特徴とするソフトウェア開発支
    援方法。
  4. 【請求項4】 イベントが成立した場合であってもソー
    スプログラムを表示したくない領域のアドレスである隠
    蔽領域アドレス内に入る前の隠蔽領域前アドレスを保持
    しておく工程と、 イベントが成立した場合に、プログラムの実行を停止す
    るブレーク信号を発生する工程と、 前記隠蔽領域アドレスと、前記イベントが成立した際の
    実行アドレスとを比較する工程と、 前記イベントが成立した際の実行アドレスが、前記隠蔽
    領域アドレス内のアドレスであると判断したら、実行プ
    ログラムを停止する工程と、 前記隠蔽領域前アドレスに対応するソースプログラムを
    表示する工程と、を少なくとも含むことを特徴とするソ
    フトウェア開発支援方法。
  5. 【請求項5】 さらに、前記隠蔽領域アドレスをオブジ
    ェクトファイル内に付加する工程と、 前記隠蔽領域アドレスを前記オブジェクトファイルから
    読み込む工程と、を含むことを特徴とする請求項2〜4
    記載のソフトウェア開発支援方法。
  6. 【請求項6】 さらに、前記隠蔽領域アドレスをデバッ
    ガの記憶手段に記憶させる工程と、 前記隠蔽領域アドレスを前記デバッガの記憶手段から読
    み込む工程と、を含むことを特徴とする請求項2〜4記
    載のソフトウェア開発支援方法。
  7. 【請求項7】 さらに、前記隠蔽領域アドレスを記述し
    た隠蔽領域アドレスファイルを作成する工程と、 前記隠蔽領域アドレスを前記隠蔽領域アドレスファイル
    から読み込む工程と、を含むことを特徴とする請求項2
    〜4記載のソフトウェア開発支援方法。
  8. 【請求項8】 前記隠蔽領域アドレスの指定をファイル
    単位、関数単位又は領域単位で行うことを特徴とする請
    求項2〜7記載のソフトウェア開発支援方法。
  9. 【請求項9】 ソフトウェアの開発を支援するためにコ
    ンピュータを、 イベントが成立した場合に、プログラムの実行を停止す
    るブレーク信号を発生する手段、 イベントが成立した場合であってもソースプログラムを
    表示したくない領域のアドレスである隠蔽領域アドレス
    と、前記イベントが成立した際の実行アドレスとを比較
    する手段、 前記イベントが成立した際の実行アドレスが前記隠蔽領
    域アドレス内のアドレスであると判断したら、前記ブレ
    ーク信号を無効化する手段、として機能させるためのソ
    フトウェア開発支援プログラムを記録したコンピュータ
    読み取り可能な記録媒体。
  10. 【請求項10】 ソフトウェアの開発を支援するために
    コンピュータを、 イベントが成立した場合に、プログラムの実行を停止す
    るブレーク信号を発生する手段、 イベントが成立した場合であってもソースプログラムを
    表示したくない領域のアドレスである隠蔽領域アドレス
    と、前記イベントが成立した際の実行アドレスとを比較
    する手段、 前記イベントが成立した際の実行アドレスが、前記隠蔽
    領域アドレス内のアドレスであると判断したら、前記ブ
    レーク信号を保持する手段、 前記隠蔽領域アドレスと、前記イベントが成立した後の
    実行アドレスとを比較する手段、 前記イベントが成立した後の実行アドレスが、前記隠蔽
    領域アドレス外のアドレスになったと判断したら、前記
    ブレーク信号の保持を解除し、実行プログラムを停止す
    る手段、 前記隠蔽領域アドレス外のアドレスになった際の実行ア
    ドレスに対応するソースプログラムを表示する手段、と
    して機能させるためのソフトウェア開発支援プログラム
    を記録したコンピュータ読み取り可能な記録媒体。
  11. 【請求項11】 ソフトウェアの開発を支援するために
    コンピュータを、 イベントが成立した場合であってもソースプログラムを
    表示したくない領域のアドレスである隠蔽領域アドレス
    内に入る前の隠蔽領域前アドレスを保持しておく手段、 イベントが成立した場合に、プログラムの実行を停止す
    るブレーク信号を発生する手段、 前記隠蔽領域アドレスと、前記イベントが成立した際の
    実行アドレスとを比較する手段、 前記イベントが成立した際の実行アドレスが、前記隠蔽
    領域アドレス内のアドレスであると判断したら、実行プ
    ログラムを停止する手段、 前記隠蔽領域前アドレスに対応するソースプログラムを
    表示する手段、として機能させるためのソフトウェア開
    発支援プログラムを記録したコンピュータ読み取り可能
    な記録媒体。
JP2000388952A 2000-12-21 2000-12-21 ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体 Pending JP2002189613A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000388952A JP2002189613A (ja) 2000-12-21 2000-12-21 ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000388952A JP2002189613A (ja) 2000-12-21 2000-12-21 ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JP2002189613A true JP2002189613A (ja) 2002-07-05

Family

ID=18855602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000388952A Pending JP2002189613A (ja) 2000-12-21 2000-12-21 ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JP2002189613A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080118A (ja) * 2005-09-16 2007-03-29 Nec Electronics Corp デバッガ装置及びそのデバッガ装置を使用したデバッグ方法
JP2011514606A (ja) * 2008-03-17 2011-05-06 フリースケール セミコンダクター インコーポレイテッド アドレスに基づく条件付きデバッグ命令を認証するデバッグ方法、制御方法、およびデバッグ装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080118A (ja) * 2005-09-16 2007-03-29 Nec Electronics Corp デバッガ装置及びそのデバッガ装置を使用したデバッグ方法
JP2011514606A (ja) * 2008-03-17 2011-05-06 フリースケール セミコンダクター インコーポレイテッド アドレスに基づく条件付きデバッグ命令を認証するデバッグ方法、制御方法、およびデバッグ装置

Similar Documents

Publication Publication Date Title
JP2795244B2 (ja) プログラムデバッグシステム
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US7353427B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
US6067641A (en) Demand-based generation of symbolic information
US20090199163A1 (en) Debugger assistance for locating values at runtime
JP2004164554A (ja) プログラム実行監視装置および方法
US7624381B1 (en) Portable detection of start and completion of object construction
JP2018156133A (ja) コンパイラプログラム、情報処理装置およびコンパイル方法
JP2005338987A (ja) 例外テスト支援プログラム及び例外テスト支援装置
US6611924B1 (en) Reducing code size of debug output statements
JP2002189613A (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3372106B2 (ja) プログラムデバッグ装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
JP2004287869A (ja) プログラム実行監視装置および方法
JP2003015914A (ja) 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム
JPH05250221A (ja) シミュレータ実行方式
JP2001134464A (ja) 情報処理方法および装置
JP3165105B2 (ja) プログラムのトレーサ、コンパイラ及びリンカー
JP2001022560A (ja) ライブラリ関数バージョンアップ方法
JP3085309B2 (ja) デバッグシステム
JP2795309B2 (ja) プロファイラ用コード追加方式
JP3130421B2 (ja) プログラム解析方法および装置
JP2002073370A (ja) デバッグ支援装置およびその装置によるデバッグ方法