JP2001154878A - デバッグ用プログラム生成方法及び生成・実行方法 - Google Patents

デバッグ用プログラム生成方法及び生成・実行方法

Info

Publication number
JP2001154878A
JP2001154878A JP34029799A JP34029799A JP2001154878A JP 2001154878 A JP2001154878 A JP 2001154878A JP 34029799 A JP34029799 A JP 34029799A JP 34029799 A JP34029799 A JP 34029799A JP 2001154878 A JP2001154878 A JP 2001154878A
Authority
JP
Japan
Prior art keywords
statement
program
error processing
block
source program
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.)
Withdrawn
Application number
JP34029799A
Other languages
English (en)
Inventor
Kozo Asano
浩三 淺野
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.)
NEC IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems Co Ltd
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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP34029799A priority Critical patent/JP2001154878A/ja
Publication of JP2001154878A publication Critical patent/JP2001154878A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 システムリソース不足ではない環境下で、シ
ステムリソース不足時のプログラムの動作を確認する。 【解決手段】 入力装置1は、ユーザの入力11を記憶
装置2内にエラー処理識別子202として入力し、これ
によりデバッグ対象ソースプログラムのテストすべき箇
所を指定する。デバッグ用プログラム生成部3は、上記
指定された箇所に位置するデバッグ対象ソースプログラ
ムの条件付き分岐文を、当該条件付き分岐文に含まれる
論理式の論理を反転させて成る条件付き分岐文で置き換
えたデバッグ用のソースプログラムを生成してエラー処
理チェック用ソース203として出力する。上記デバッ
グ用のソースプログラム203は、コンパイラ4801
で実行形式プログラムに変換され、実行部402で実行
されてテストされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デバッグ用プログ
ラム生成方法及び生成・実行方法に関し、特に、システ
ムリソース不足時のソースプログラムに書かれた処理を
テストするためのデバッグ用プログラムを生成するデバ
ッグ用プログラム生成方法及び生成・実行方法に関す
る。
【0002】
【従来の技術】従来、ストアードプログラム方式のコン
ピュータシステム上で動作するプログラムは、メモリや
ハードディスクなどの記憶装置やCPUなどの演算処理
装置を使いながらその処理を行なっている。
【0003】しかし、記憶装置の容量や、演算処理装置
の駆動能力といったシステムリソースが不足すると、プ
ログラムは処理を継続できなくなる。例えば、ワークス
テーションやパソコンなどの、複数の利用者が同時に使
用可能であったり、複数のプログラムを平行して実行さ
せ得るシステムにおいては、その内の1つのプログラム
がシステムリソースの不足を引き起こすと、同時に動作
している他のプログラムの処理まで継続できなくなるな
どの弊害を生む恐れがある。
【0004】このため、上記複数のプログラムの各々を
実行するコンピュータシステム上において、システムリ
ソースが不足する可能性がある場合には、実際にシステ
ムリソースが不足した時に、例えば、処理を中断するな
どの特別な処理を行なうように上記複数のプログラムの
各々を作っておく必要がある。
【0005】ここで、上記の事情により、システムリソ
ース不足時には特別な処理を行なうように作り込まれた
プログラムに対して、システムリソース不足時の動作を
確認するためには、基本的にはそのプログラムが実行さ
れている時に、システム上でシステムリソース不足の状
態を再現しなければならない。しかしながら、システム
リソース不足の状態を発生させるならば、そのシステム
上で動作している他のプログラムにまで影響を与えてし
まう恐れがあるので、システムリソース不足時の処理の
確認を行なうには、他のプログラムに影響を与えないよ
うに別の環境下で実行しなければならない。
【0006】また、プログラムに作り込まれたシステム
リソース不足時の処理の確認を行なうためには、丁度、
そのプログラムがシステムリソース不足であるかどうか
の判定を行うタイミングで、システムリソース不足の状
態を動的に再現しなければならず、極めて困難な作業と
なる。
【0007】図13は、従来の、システムリソース不足
時のプログラムの処理の確認を行うためのデバッギング
システムの構成を示すブロック図である。
【0008】デバッグ対象プログラムであるソースプロ
グラム131は、コンパイラ132にてコンパイルさ
れ、実行形式のプログラム133に変換されている。上
記プログラム133は、デバッガ135の制御下でテス
トされるが、この時、デバッガ135には、テスト用入
力データ134が入力され、さらに、入力装置137を
介してユーザの入力138が入力される。
【0009】従来は、上記の問題を解決する手段とし
て、図13に示すとおり、デバッガ135を用いてステ
ップ実行を行ない、ユーザの入力138により、該当す
るシステムリソース不足を判定するエラーフラグを直接
設定し、その結果を見ることにより、システムリソース
不足時の処理の確認を行なっていた。
【0010】
【発明が解決しようとする課題】しかし、上記の従来技
術では、ソースプログラム131の規模が大きくなるほ
ど、デバッガ135上でシステムリソース不足時の処理
を行なっている部分を検索するための処理が困難となっ
たり、検索に多大の実行時間を取られるために、上記の
デバッグ作業を容易に実施できないという問題点があっ
た。
【0011】本発明は、以上のような従来のデバッギン
グシステムにおける問題点に鑑みてなされたものであ
り、システムリソース不足ではない環境下で、システム
リソース不足時のプログラムの動作を確認することがで
きるソースプログラム開発システム及びその方法を提供
することを目的とする。
【0012】
【課題を解決するための手段】本発明によるデバッグ用
プログラム生成方法は、デバッグ対象ソースプログラム
よりデバッグ用ソースプログラムを生成するデバッグ用
プログラム生成方法において、前記デバッグ対象ソース
プログラムのテストすべき命令文をエラー処理識別子と
して入力する入力ステップと、前記デバッグ対象ソース
プログラムに含まれる前記エラー処理識別子を含むIF
文ブロックのIF文を、当該IF文に含まれる論理式の
論理を反転させて成るIF文で置き換える置き換えステ
ップと、を有することを特徴とする。
【0013】また、本発明によるデバッグ用プログラム
生成方法は、上記のデバッグ用プログラム生成方法にお
いて、前記命令文は、システムリソース不足時に対応し
た処理を行う命令の命令文であることを特徴とする。
【0014】更に、本発明によるデバッグ用プログラム
生成方法は、上記のデバッグ用プログラム生成方法にお
いて、前記デバッグ対象ソースプログラムがSWITC
H文を含む場合に、前記置き換えステップを実行する前
に、前記SWITCH文を前記SWITCH文と等価な
IF文に展開するステップを更に有することを特徴とす
る。
【0015】更に、本発明によるデバッグ用プログラム
生成方法は、上記のデバッグ用プログラム生成方法にお
いて、前記論理式にAND演算子が含まれる場合に、前
記置き換えステップを実行する前に、前記AND演算子
で結合された2つの論理式の一方を含む第1のIF文
と、他方を含む第2のIF文とを生成し、第1のIF文
のブロックに第2のIF文のブロックが入る入れ子構造
と、第2のIF文のブロックに第1のIF文のブロック
が入る入れ子構造を生成するステップを更に有すること
を特徴とする。
【0016】更に、本発明によるデバッグ用プログラム
生成方法は、上記のデバッグ用プログラム生成方法にお
いて、前記論理式にOR演算子が含まれる場合に、前記
置き換えステップを実行する前に、前記OR演算子で結
合される2つの論理式の一方を含むIF文のブロック
と、他方を含むIF文のブロックとを生成するステップ
を更に有することを特徴とする。
【0017】本発明によるデバッグ用プログラム生成・
実行方法は、上記のデバッグ用プログラム生成方法の各
ステップと、前記生成されたデバッグ用ソースプログラ
ムをコンパイルしてデバッグ用実行形式プログラムを得
るステップと、前記得られたデバッグ用実行形式プログ
ラムを実行して実行結果を得るステップと、を有するこ
とを特徴とする。
【0018】本発明によるコンピュータ読み取り可能な
記録媒体は、上記の方法をコンピュータに実行させるた
めのプログラムを記録したことを特徴とする。
【0019】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照して説明する。
【0020】(第1の実施の形態)図1は、本発明の第
1の実施の形態に係るソースプログラム開発システムの
構成を示すブロック図である。
【0021】本実施の形態に係るソースプログラム開発
システムは、キーボード等の入力装置1と、情報を記憶
する記憶装置2と、デバッグ用プログラム生成部3と、
デバッグ用プログラム生成部3により出力された情報を
処理するデータ処理装置4と、テストの実行結果を格納
する出力装置5を含む。
【0022】記憶装置2は、デバッグ対象プログラムで
あるソースプログラム201と、ユーザの入力データ1
1から入力装置1を介して入力されたエラー処理識別子
の集合であるエラー処理識別子202と、ソースプログ
ラム201が部分的にエラー処理用の論理に変換されて
成るエラー処理チェック用ソース203と、エラー処理
チェック用ソース203をコンパイルして実行形式に変
換した実行形式エラー処理チェック用ソース204を記
憶する。
【0023】エラー処理識別子202は、例えばエラー
発生時に処理される、”ABORT_FUNC”で例示される中
断手続き関数名などの文字列である。
【0024】エラー処理チェック用ソース203は、デ
バッグ用プログラム生成部3により出力されるソースプ
ログラムであり、一つのソースプログラム201に対応
して複数本数が作成され得る。
【0025】エラー処理チェック用実行形式204は、
データ処理装置4により出力される実行形式プログラム
であり、エラー処理チェック用ソース203をコンパイ
ルした結果である。
【0026】デバッグ用プログラム生成部3は、エラー
処理識別子読み込み部301と、ソースプログラム読み
込み部(1)302と、エラー処理識別子検出部303
と、エラー処理チェック用ソース生成部304を含み、
記憶装置2に記憶されているソースプログラム201と
エラー処理識別子202を読み込み、エラー処理チェッ
ク用ソース203を出力する。
【0027】エラー処理識別子読み込み部301は、エ
ラー処理識別子202を読み込む。
【0028】ソースプログラム読み込み部(1)302
は、ソースプログラム201を、例えばIF文のような条
件分岐を行なうブロックの単位で逐次読み込みを行な
う。
【0029】エラー処理識別子検出部303は、ソース
プログラム読み込み部(1)302により読み込まれた
ブロック中に、エラー処理識別子読み込み部301によ
り読み込まれたエラー処理識別子が含まれているか否か
を検出する。上記ブロックについては、もしもエラー処
理識別子が検出された場合には、エラー処理チェック用
ソース生成部304による処理が行われるが、エラー処
理識別子が検出されなかった場合には、エラー処理チェ
ック用ソース生成部304による処理は行なわれない。
【0030】エラー処理チェック用ソース生成部304
は、ソースプログラム読み込み部(2)305と、分岐
条件論理反転部306と、エラー処理チェック用ソース
出力部307を含み、ソースプログラム読み込み部
(2)305にてソースプログラム201を1行単位で
逐次読み込みを行ない、エラー処理チェック用ソース出
力部307によりエラー処理チェック用ソース203を
出力する。この時、エラー処理識別子検出部303によ
り検出された上記のエラー処理識別子が含まれている条
件分岐ブロックの条件分岐の論理を反転させる。
【0031】データ処理装置4は、エラー処理チェック
用ソース203をコンパイルするためのコンパイラ40
1と、実行形式エラー処理チェック用ソース204の動
作を実行してテストするための実行テスト部402を含
む。
【0032】コンパイラ401は、複数存在し得るエラ
ー処理チェック用ソース203の各々をコンパイルし、
各々に対応するエラー処理チェック用実行形式204を
生成する。エラー処理チェック用実行形式204の各々
を実行する実行テスト部402では、各々のエラー処理
チェック用実行形式204を実行し、対応する実行結果
501を出力装置5に出力する。
【0033】出力装置5は、実行テスト部402が動作
して生じる実行結果501を含む。
【0034】図1において、入力装置1で入力されるエ
ラー処理識別子202の要素(即ちエラー処理識別子)
は、例えば、システムリソース不足時にコールされる中
断手続き関数名といった、システムリソース不足時の処
理フロー中に出現する文字列である。
【0035】以下、本実施の形態に係るデバッグ用プロ
グラム生成システムの基本原理を説明する。
【0036】デバッグ用プログラム生成部3は、ソース
プログラム読み込み部(1)302によりソースプログ
ラム201を読み込み、他方、上記入力されたエラー処
理識別子202をエラー処理識別子読み込み部301に
より読み込み、エラー処理識別子検出部303にて、上
記読み込まれたソースプログラム201の中から、エラ
ー処理識別子202に含まれるいずれかの要素と一致す
るエラー処理識別子を検出する。
【0037】一度、エラー処理識別子202のいずれか
の要素と一致するエラー処理識別子が検出されたなら、
エラー処理チェック用ソース生成部304により、元の
ソースプログラム中で上記検出した個所のみの分岐条件
の論理を反転して成るエラー処理チェック用ソース20
3を一つ出力する。
【0038】上記出力されたエラー処理チェック用ソー
ス203は、元のソースプログラム201と比べて、上
記の一個所だけが、条件分岐の論理が反転したものとな
る。
【0039】エラー処理識別子検出部303は、上記読
み込まれたソースプログラム201中から上記読み込ま
れたエラー処理識別子202の全ての要素を検出するま
で、上記の一連の処理を繰り返す。
【0040】上記の分岐条件が反転したために実行され
る部分は、システムリソース不足時に実行される処理
(すなわち、デバッグすべき処理)であるから、エラー
処理チェック用ソース203のコンパイル結果であるエ
ラー処理チェック用実行形式204は、実行テスト部4
において、システムリソース不足ではない条件でシステ
ムリソース不足時の処理が実行され、その結果、実行結
果501には、あたかもシステムリソース不足時の処理
を行ったのと同じ結果が出力される。
【0041】このようにして、システムリソース不足で
はない環境下で、システムリソース不足時のプログラム
の動作を確認してデバッグすることが可能となる。
【0042】図2は、本発明の第1の実施の形態に係る
ソースプログラム開発システムのデバッグ用プログラム
生成部3の動作を示すフローチャートである。
【0043】以下、図1を参照しつつ、図2に示すフロ
ーチャートを使用して本実施の形態に係るソースプログ
ラム開発システムのデバッグ用プログラム生成部3の動
作を説明する。
【0044】まず、ステップS501では、エラー処理
識別子読み込み部301が、入力装置1から入力されて
エラー処理識別子202に含まれる全てのエラー処理識
別子を、エラー処理識別子検出部303に読み込み、そ
の後、S502にて、カウンタを帰零する。
【0045】他方、ステップS503では、ソースプロ
グラム読み込み部(1)302が、ソースプログラム2
01を、エラー処理識別子検出部303に1ブロック分
だけ読み込む。上記の1ブロックは、後述する図3に示
すソースプログラムにおける分岐条件ブロックの例のよ
うに、例えば、IF文のような分岐条件を行なうブロッ
クである。
【0046】ステップS504では、エラー処理識別子
検出部303が、上記ブロックを、後述する図4に示す
文字列の切り出し例に準じる文字列単位の切り出し方
で、1単位分の文字列を切り出す。
【0047】ステップS505では、エラー処理識別子
検出部303が、上記切り出した文字列が、ステップS
501で読み込んだエラー処理識別子のいずれかと等し
いか否かを検証して判断する。
【0048】上記の切り出した1単位の文字列が、上記
エラー処理識別子のいずれかと等しい場合には、エラー
処理識別子検出部303は、ステップS507にて、上
記カウンタを1だけ増加させる。また、ステップS50
8にて、ステップS503で読み込んだブロックの分岐
条件がソースプログラム201中の何行目にあるのかを
記憶する。その後、ステップS509にて、制御の流れ
をエラー処理チェック用ソース生成部304に移す。こ
こで、エラー処理チェック用ソース生成部304からの
戻り先は、ステップS510である。
【0049】ステップS505の判断で、ステップS5
04で切り出した1単位の文字列が、エラー処理識別子
202と等しくない場合は、ステップS506にて、ブ
ロック中の全ての文字列単位が切り出されたか否かを判
断し、未だ残っている文字列単位が存在すれば、ステッ
プS504に戻って、ステップS504以下の一連の処
理をブロックの終端まで反復し、完了するとステップS
510の処理に移る。
【0050】ステップS510では、ソースプログラム
201の全てのブロックの読み込みを完了したか否かを
判断し、未だ残りのブロックが存在すれば、制御の流れ
をステップS503に戻し、ステップS503以下の一
連の処理を反復する。
【0051】エラー処理チェック用ソース生成部304
での処理は、まず、ステップS520にて、ステップS
507で設定されているカウンタに対応した位置に書き
込みファイル名を設定する(上記の位置は、接頭辞の位
置+カウンタとなる)。
【0052】次に、ステップS521では、ソースプロ
グラム読み込み部(2)305が、ソースプログラム2
01を1行単位で読み込む。
【0053】ステップS522では、上記読み込まれた
1行がステップS508で記憶していた位置であるかを
判断する。その結果、上記読み込まれた1行がステップ
S508で記憶していた位置でなければ、そのままステ
ップS524に移る。上記読み込まれた1行がステップ
S508で記憶していた位置であれば、ステップS52
3にて、分岐条件論理反転部306が、上記位置で示さ
れる分岐条件の論理を反転させる。
【0054】ステップS524では、ステップS520
で設定された書き込みファイル名のファイルに上記1行
分の内容を出力する。(従って、上記読み込まれた1行
分のデータがステップS508で記憶していた位置でな
い場合、すなわち、該データに分岐条件が含まれていな
かった場合には、上記読み込まれた内容がそのまま上記
ファイルのファイルデータとして書き込まれることにな
る。)図3は、本発明の第1の実施の形態に係るソース
プログラム開発システムのデバッグ対象となるソースプ
ログラムの具体例を示す説明図である。
【0055】図4は、本発明の第1の実施の形態に係る
ソースプログラム開発システムのデバッグ対象となるソ
ースプログラムのブロック中の文字列の切り出し方を例
示する説明図である。
【0056】図5は、本発明の第1の実施の形態に係る
ソースプログラム開発システムのデバッグ対象となるソ
ースプログラムのブロック中の文字列に、検出すべきエ
ラー識別子を含む例を示す説明図である。
【0057】図6は、本発明の第1の実施の形態に係る
ソースプログラム開発システムの出力ファイルに含まれ
るエラー処理チェック用ソースプログラムの具体例を示
す説明図である。
【0058】図7は、本発明の第1の実施の形態に係る
ソースプログラム開発システムの出力ファイルに含まれ
るエラー処理チェック用ソースプログラムの他の具体例
を示す説明図である。
【0059】以下、図1,図4〜7を参照しつつ、図2
に示すフローチャートを使用して、本実施の形態に係る
ソースプログラム開発システムの図3に示すソースプロ
グラムを対象としたデバッグ用プログラム生成部3の動
作を説明する。
【0060】今、エラー処理識別子202には、入力装
置1から文字列ABORT_FUNCだけが入力されたものとす
ると、まず、ステップS501では、エラー処理識別子
読み込み部301が、上記の文字列ABORT_FUNCを、エ
ラー処理識別子検出部303に読み込み、その後、S5
02にて、カウンタを帰零する。
【0061】次に、ステップS503からステップS5
10までの一連の処理で、まず、ソースプログラムが1
ブロックづつエラー処理識別子検出部303に読み込ま
れ、これにより、図3に示すブロック1、ブロック2、
ブロック3が逐次読み込まれることになる。
【0062】上記読み込まれた任意の1つのブロック
は、ステップS504によるブロック中の文字列切り出
し処理で、図4に示すように文字列の単位に切り出され
る。
【0063】上記の文字列は、例えば上記ソースプログ
ラムがC言語であれば、空白文字、”(“、”)”、”
{“、”}”、”;”などの文や節、段落を区切る文字
により切り出される。
【0064】上記切り出された文字列の各々は、ステッ
プS505にて、エラー処理識別子202(この場合
は、文字列ABORT_FUNC)と等しいか否かが判定され
る。
【0065】例えば、図3に示すブロック1が読み込ま
れた場合には、図4に示す文字列の切り出し方によりブ
ロック1から切り出された文字列には、図5に示すよう
にエラー処理識別子202として上記の文字列ABORT_F
UNCが存在するので、ステップS505の判断処理によ
り、制御の流れは、ステップS507〜ステップS50
9に進む。
【0066】ステップS507では、エラー処理識別子
検出部303が、カウンタを1だけ増加させるので、初
期値零であったカウンタが、1に設定される。
【0067】ステップS508では、エラー処理識別子
検出部303が、読み込まれたブロック1の条件分岐が
存在する位置、すなわち、”if ( ERROR_FLAG == ON )
{“が記述されている位置を記憶する。
【0068】ステップS509では、制御の流れがエラ
ー処理チェック用ソースプログラムの生成部304に移
り、ステップS520では、エラー処理チェック用ソー
スプログラムの生成部304の初期設定部(図示は省
略)が、例えば”outfile_0001”のような書き出しフ
ァイル名のファイルを設定する。ステップS521で
は、ソースプログラム読み込み部305が、元のソース
プログラムS201をファイルの先頭から行単位で1行
分だけ読み込み、ステップS524にて、上記の書き出
しファイル名”outfile_0001”のファイルに、その内
容を出力する。
【0069】上記の行単位の読み込み処理の過程で、読
み込まれるデータの位置が、ステップS508にて記憶
していた分岐条件の位置、すなわち、図3に示す”ブロ
ック1におけるif ( ERROR_FLAG == ON ){“が書かれ
ている位置にまで到達したならば、ステップS523に
て、分岐条件論理反転部306が、上記読み込んだ1行
分のデータに書き込まれている分岐条件の論理を反転さ
せ、すなわち、”if (! ERROR_FLAG == ON ){“なる
表現に変換してから、該変換結果を、エラー処理チェッ
ク用ソース出力部にて、上記の”outfile_0001”なる
ファイル名のファイルに出力する。その結果、上記ファ
イルの内容は、図6に示すエラー処理チェック用ソース
の例(1)のようになる。
【0070】その後、ブロック2,ブロック3を、図3
に示すブロック1の処理と同様に、順次に処理する。
【0071】但し、ブロック2は、エラー処理識別子2
02である文字列ABORT_FUNCを含まないので、ステッ
プS507〜ステップS509の処理は行なわれない。
【0072】また、ブロック3は、文字列ABORT_FUNC
を含むので、ステップS507で、カウンタが2にな
り、ブロック1の処理と同様にステップS509の処理
が実行され、その結果、図7に示すファイル名”outfil
e_0002”を持つファイルが出力される。
【0073】このように、デバッグ用プログラム生成部
3により、図3に示すソースプログラム201から、図
6、図7に示すエラー処理チェック用ソース203がそ
れぞれ生成される。
【0074】(第2の実施の形態)本発明の第2の実施
の形態に係るソースプログラム開発システムの全体構成
は、本発明の第1の実施の形態に係るデバッグ用プログ
ラム生成システムの全体構成に同じである。しかし、デ
バッグ用プログラム生成部3で実行される処理の内容が
異なる。
【0075】図8は、本発明の第2の実施の形態に係る
ソースプログラム開発システムのデバッグ用プログラム
生成部3の動作を示すフローチャートである。
【0076】図9は、本発明の第2の実施の形態に係る
ソースプログラム開発システムの動作を示すフローチャ
ートの続き部分である。
【0077】以下、図1を参照しつつ、図8,図9に示
すフローチャートを使用して本実施の形態に係るソース
プログラム開発システムのデバッグ用プログラム生成部
3の動作を説明する。
【0078】図2と、図8及び図9とを比較すると、本
実施の形態に係るソースプログラム開発システムのデバ
ッグ用プログラム生成部3の動作は、図8のステップA
501〜ステップA506及びステップA10の処理に
ついては、図2におけるステップS501〜ステップS
506及びステップS10とそれぞれ同じであるが、図
2におけるステップS507〜ステップS509の処理
に相当する部分が、図9のステップB601〜ステップ
B610までの処理になっている点で異なる。
【0079】ステップB601では、エラー処理チェッ
ク用ソース生成部304が、ステップA503で読み込
まれていたブロックの分岐条件が、SWITCHのような選択
分岐形式になっているかどうかを調べ、SWITCH文による
条件分岐であるならばステップB608以下の処理に示
すSWITCH文の要素切り出し処理を行ない、そうでなけれ
ば、ステップB602に示すようにステップA503で
読み込まれていたブロックの分岐条件の論理式がANDま
たはORで結合されたものであるかどうかを調べ、上記の
論理式がANDまたはORで結合されたものであれば、ステ
ップB604の処理に示すとおり、分岐条件をANDまた
はORの単位で切り出し(この部分については後述す
る)、論理式がANDまたはORで結合されたものでなけれ
ば、ステップB603に示すエラー処理チェック用プロ
グラム生成処理を行なう。
【0080】ステップB608にてSWITCH文の要素を切
り出した後は、エラー処理チェック用ソース生成部30
4は、ステップB609にて、上記切り出されたSWITCH
文の要素をIF文に変換する。より具体的には、分岐部の
条件となっている要素毎にIF、ELSEブロックを生成し、
各々に応じた分岐条件ブロックを複写する。次に、ステ
ップB610では、ステップB609によりSWITCH文を
IF文に置き換えたものに対して、サブルーチンのエラー
処理チェック用プログラム生成処理部の処理を行なう。
【0081】ステップB604における分岐条件の論理
のAND又はORにおける切り出しでは、まず、AND又はORに
より結合された論理式の切り出しを行ない、各々切り出
された論理式ごとに、ステップB605に示す分岐条件
ブロックの加工と複写処理を行い、切り出された論理式
のすべてについて処理されるまでステップB605〜ス
テップB606の処理を行なう。ステップB605にお
ける分岐条件ブロックの加工と複写処理は、もしも条件
文中の論理式を結合していた論理演算子がANDであれ
ば、まず現在処理している一つの論理式に関するひとつ
のIF文を生成し、そのIF文ブロックの中に、それ以外の
論理式を用いたIF文を入れ子にする。上記条件文中の他
の論理式についても同様である。もしも条件文中の論理
式を結合していた論理演算子がORであれば、単に、現在
処理している一つの論理式だけを含む一つのIF文を生成
するに留め、上記の入れ子は含めない。上記条件文中の
他の論理式についても同様である。ステップB605に
より生成されたIF文及びIF文ブロックについて、ステッ
プB606で示すエラー処理チェックプログラム生成処
理部を実行する。上記のステップB604〜ステップB
606の処理は、ステップB604での分岐条件の論理
の切り出しが完了するまで行なう。
【0082】図10は、IF文に含まれる条件文中の論理
式がAND で結合されている場合の論理の切り出し方の具
体例を示す説明図である。
【0083】図11は、IF文に含まれる条件文中の論理
式がORで結合されている場合の論理の切り出し方の具体
例を示す説明図である。
【0084】図12は、SWITCH文からIF文を生成する方
法の具体例を示す説明図である。
【0085】以下、図1,図10〜図12を参照しつ
つ、図8,図9に示すフローチャートを使用して本実施
の形態に係るソースプログラム開発システムのデバッグ
用プログラム生成部3の動作を説明する。
【0086】図12のSWITCH文の要素の切り出し例は、
図9におけるステップB608によるSWITCH文の要素切
り出しと、上記切り出された後の、ステップB609に
おけるIF文の生成とブロックの複写処理を行なった結果
を示している。IF文が生成された後、ステップB606
におけるエラー処理チェック用プログラム生成処理部に
より、”if ( ERROR_FLAG == ON ) {“部の論理を反
転したエラー処理チェック用ソースプログラムが生成さ
れる。図10に示すIF文に含まれる条件文中の論理式が
AND(&&)で結合された場合の論理の切り出し例は、図9
におけるステップB604と、ステップB605での分
岐条件ブロックの加工と複写処理を行なった結果の一例
を示している。これは、結合された論理演算子がAND演
算子の場合の例であり、1つ目に切り出された論理式”
ERROR_FLAG_A == ON”と、それ以外の論理式(”ERRO
R_FLAG_B == ON”)を入れ子にしたもの、2つ目に切
り出された論理式”ERROR_FLAG_B == ON”と、それ以
外の論理式(“ERROR_FLAG_A == ON”)を入れ子にした
ものとの、計2つの条件ブロックを生成し、上記条件プ
ロックの各々について、ステップB606におけるエラ
ー処理チェック用プログラム生成処理部により、それぞ
れ該当する分岐条件式の論理を反転したエラー処理チェ
ック用ソースプログラムを生成する。
【0087】2つの条件のANDを判定するif文のブロ
ックを2つの2重の入れ子構造のif文のブロックに展開
する。エラー処理チェック用プログラム生成処理では、
一方の入れ子構造の一方のif文(入れ子が深い方)のif
条件を反転し、他方の入れ子構造の一方のif文(入れ子
が深い方)のif条件を反転するので、それらのネスト構
造のうち、少なくとも一方はリソースが不足した場合の
if文を含んだ者となる。
【0088】なお、AND論理演算子が2個以上有る場
合には、1つのAND論理演算子毎に上記の操作を繰り
返す。
【0089】図11に示すIF文に含まれる条件文中の論
理式がORで結合されている場合の論理の切り出し例は、
図9におけるステップB604と、ステップB605に
おける分岐条件ブロックの加工と複写処理を行なった結
果の一例を示している。これは、結合された論理演算子
がOR演算子の場合の例であり、1つ目に切り出された論
理式”ERROR_FLAG_A == ON”に関するIF文と、2つ目
に切り出された論理式”ERROR_FLAG_B == ON”に関す
るIF文との計2つの条件ブロックを生成し、上記条件ブ
ロックの各々についてステップB606におけるエラー
処理チェック用プログラム生成処理部により、それぞれ
該当する分岐条件式の論理を反転したエラー処理チェッ
ク用ソースプログラムを生成する。
【0090】2つの条件のORを判定するif文のブロッ
クを2つのif文のブロックに展開することにより、エラ
ー処理チェック用プログラム生成処理で、一方のif条件
を反転したif文のブロックと他方のif条件を反転したif
文のブロックが生成される。それらのif文のブロックの
うち、少なくとも一方はリソースが不足した場合のif文
のブロックとなる。
【0091】なお、OR論理演算子が2個以上有る場合
には、1つのOR論理演算子毎に上記の操作を繰り返
す。
【0092】なお、図2,8,9のフローチャートで示
した処理を実行するプログラムなど、処理装置に上記の
処理を行わせるためのプログラムは、CD−ROMや磁
気テープなどのコンピュータ読み取り可能な記録媒体に
格納して配付してもよい。そして、少なくともマイクロ
コンピュータ,パーソナルコンピュータ,汎用コンピュ
ータを範疇に含むコンピュータが、上記の記録媒体から
上記プログラムを読み出して、実行するものとしてもよ
い。
【0093】
【発明の効果】以上説明した本発明によれば、デバッグ
対象のソースプログラムから、システムリソース不足時
に真となる条件分岐の論理を1個所だけ反転したエラー
処理チェック用ソースを生成し、そのコンパイル結果で
ある実行形式プログラムを使用してデバッグすることに
より、実際にはシステムリソース不足ではない状態であ
っても、上記実行形式プログラムが動作する環境上にシ
ステムリソース不足を再現させることなく、あたかもシ
ステムリソース不足が発生したかのようにして、デバッ
グ対象プログラムのシステムリソース不足時の動作を確
認することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るソースプログ
ラム開発システムの構成を示すブロック図である。
【図2】本発明の第1の実施の形態に係るソースプログ
ラム開発システムのデバッグ用プログラム生成部3の動
作を示すフローチャートである。
【図3】本発明の第1の実施の形態に係るソースプログ
ラム開発システムのデバッグ対象となるソースプログラ
ムの具体例を示す説明図である。
【図4】本発明の第1の実施の形態に係るソースプログ
ラム開発システムのデバッグ対象となるソースプログラ
ムのブロック中の文字列の切り出し方を例示する説明図
である。
【図5】本発明の第1の実施の形態に係るソースプログ
ラム開発システムのデバッグ対象となるソースプログラ
ムのブロック中の文字列に、検出すべきエラー識別子を
含む例を示す説明図である。
【図6】本発明の第1の実施の形態に係るソースプログ
ラム開発システムの出力ファイルに含まれるエラー処理
チェック用ソースプログラムの具体例を示す説明図であ
る。
【図7】本発明の第1の実施の形態に係るソースプログ
ラム開発システムの出力ファイルに含まれるエラー処理
チェック用ソースプログラムの他の具体例を示す説明図
である。
【図8】本発明の第2の実施の形態に係るソースプログ
ラム開発システムのデバッグ用プログラム生成部3の動
作を示すフローチャートである。
【図9】本発明の第2の実施の形態に係るソースプログ
ラム開発システムの動作を示すフローチャートの続き部
分である。
【図10】IF文に含まれる条件文中の論理式がAND で結
合されている場合の論理の切り出し方の具体例を示す説
明図である。
【図11】IF文に含まれる条件文中の論理式がORで結合
されている場合の論理の切り出し方の具体例を示す説明
図である。
【図12】SWITCH文からIF文を生成する方法の具体例を
示す説明図である。
【図13】従来の、システムリソース不足時のプログラ
ムの処理の確認を行うためのデバッギングシステムの構
成を示すブロック図である。
【符号の説明】
1 入力装置 2 記憶装置 3 デバッグ用プログラム生成部 4 データ処理装置 5 出力装置 11 ユーザの入力データ 201 ソースプログラム 202 エラー処理識別子 203 エラー処理チェック用ソース 204 実行形式エラー処理チェック用ソース 301 エラー処理識別子読み込み部 302 ソースプログラム読み込み部(1) 303 エラー処理識別子検出部 304 エラー処理チェック用ソース生成部 305 ソースプログラム読み込み部(2) 306 分岐条件論理反転部 307 エラー処理チェック用ソース出力部 401 コンパイラ 402 実行テスト部 501 実行結果

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 デバッグ対象ソースプログラムよりデバ
    ッグ用ソースプログラムを生成するデバッグ用プログラ
    ム生成方法において、 前記デバッグ対象ソースプログラムのテストすべき命令
    文をエラー処理識別子として入力する入力ステップと、 前記デバッグ対象ソースプログラムに含まれる前記エラ
    ー処理識別子を含むIF文ブロックのIF文を、当該I
    F文に含まれる論理式の論理を反転させて成るIF文で
    置き換える置き換えステップと、 を有することを特徴とするデバッグ用プログラム生成方
    法。
  2. 【請求項2】 前記命令文は、システムリソース不足時
    に対応した処理を行う命令の命令文であることを特徴と
    する請求項1記載のデバッグ用プログラム生成方法。
  3. 【請求項3】 前記デバッグ対象ソースプログラムがS
    WITCH文を含む場合に、前記置き換えステップを実
    行する前に、前記SWITCH文を前記SWITCH文
    と等価なIF文に展開するステップを更に有することを
    特徴とする請求項1または請求項2記載のデバッグ用プ
    ログラム生成方法。
  4. 【請求項4】 前記論理式にAND演算子が含まれる場
    合に、前記置き換えステップを実行する前に、前記AN
    D演算子で結合された2つの論理式の一方を含む第1の
    IF文と、他方を含む第2のIF文とを生成し、第1の
    IF文のブロックに第2のIF文のブロックが入る入れ
    子構造と、第2のIF文のブロックに第1のIF文のブ
    ロックが入る入れ子構造を生成するステップを更に有す
    ることを特徴とする請求項1乃至3のいずれか1項に記
    載のデバッグ用プログラム生成方法。
  5. 【請求項5】 前記論理式にOR演算子が含まれる場合
    に、前記置き換えステップを実行する前に、前記OR演
    算子で結合される2つの論理式の一方を含むIF文のブ
    ロックと、他方を含むIF文のブロックとを生成するス
    テップを更に有することを特徴とする請求項1乃至4の
    いずれか1項に記載のデバッグ用プログラム生成方法。
  6. 【請求項6】 請求項1乃至5のいずれか1項に記載の
    デバッグ用プログラム生成方法の各ステップと、前記生
    成されたデバッグ用ソースプログラムをコンパイルして
    デバッグ用実行形式プログラムを得るステップと、前記
    得られたデバッグ用実行形式プログラムを実行して実行
    結果を得るステップと、 を有することを特徴とするデバッグ用プログラム生成・
    実行方法。
  7. 【請求項7】 請求項1乃至6のいずれか1項に記載の
    方法をコンピュータに実行させるためのプログラムを記
    録したことを特徴とするコンピュータ読み取り可能な記
    録媒体。
JP34029799A 1999-11-30 1999-11-30 デバッグ用プログラム生成方法及び生成・実行方法 Withdrawn JP2001154878A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34029799A JP2001154878A (ja) 1999-11-30 1999-11-30 デバッグ用プログラム生成方法及び生成・実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34029799A JP2001154878A (ja) 1999-11-30 1999-11-30 デバッグ用プログラム生成方法及び生成・実行方法

Publications (1)

Publication Number Publication Date
JP2001154878A true JP2001154878A (ja) 2001-06-08

Family

ID=18335604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34029799A Withdrawn JP2001154878A (ja) 1999-11-30 1999-11-30 デバッグ用プログラム生成方法及び生成・実行方法

Country Status (1)

Country Link
JP (1) JP2001154878A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100751159B1 (ko) 2005-03-14 2007-08-22 세이코 엡슨 가부시키가이샤 소프트웨어 인증 시스템, 소프트웨어 인증 방법 및소프트웨어 인증 프로그램을 기록한 컴퓨터 판독 가능한기록 매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100751159B1 (ko) 2005-03-14 2007-08-22 세이코 엡슨 가부시키가이샤 소프트웨어 인증 시스템, 소프트웨어 인증 방법 및소프트웨어 인증 프로그램을 기록한 컴퓨터 판독 가능한기록 매체

Similar Documents

Publication Publication Date Title
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US20080250231A1 (en) Program code conversion apparatus, program code conversion method and recording medium
US6067415A (en) System for assisting a programmer find errors in concurrent programs
JP2009169828A (ja) テストケース生成装置及びテストケース生成プログラム
CN110286912B (zh) 代码检测方法、装置及电子设备
US6381736B1 (en) Method for compile-time type-checking of arguments for externally-specified format strings
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JPH0736680A (ja) 並列化プログラム開発支援装置
JP2001154878A (ja) デバッグ用プログラム生成方法及び生成・実行方法
JP3641090B2 (ja) プログラミング支援装置とその方法
JP2002288004A (ja) プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
JP2004133630A (ja) プログラム作成方法、プログラム変換装置、プログラム及び記憶媒体
JP5343840B2 (ja) プログラムの解析装置及び解析方法
JP2005316710A (ja) ソフトウェア試験支援装置
EP1122660A2 (en) CPU core development support system, method for development support and recording medium storing a development support program thereof
JPH0926897A (ja) プログラム解析装置及びプログラム解析方法
JP3278588B2 (ja) プログラム開発支援装置及びプログラム開発支援方法
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
Chisolm et al. The use of computer language compilers in legacy code migration
JPH10312313A (ja) C言語の計算機プログラム検査処理方法およびプログラム記憶媒体
JP2000242485A (ja) プログラミング言語変換プログラム開発支援システム、方法及び記録媒体
JP2005141406A (ja) コンパイラ検査システムおよび同プログラム
JPS6261130A (ja) テストカバレツジ自動図示処理方式

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20040511

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070206