JP2000020349A - プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 - Google Patents

プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体

Info

Publication number
JP2000020349A
JP2000020349A JP10190407A JP19040798A JP2000020349A JP 2000020349 A JP2000020349 A JP 2000020349A JP 10190407 A JP10190407 A JP 10190407A JP 19040798 A JP19040798 A JP 19040798A JP 2000020349 A JP2000020349 A JP 2000020349A
Authority
JP
Japan
Prior art keywords
program
context
time
data
simulation
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
JP10190407A
Other languages
English (en)
Inventor
Noriaki Koyama
徳章 小山
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 JP10190407A priority Critical patent/JP2000020349A/ja
Publication of JP2000020349A publication Critical patent/JP2000020349A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 テスト区間に至るまでのプログラムの動作結
果を、プログラムを最初から再実行せずに復元すること
ができるプログラム開発支援装置を提供する。 【解決手段】 プログラムを実動作環境以外の環境で動
作させるシミュレーション部20と、シミュレーション
部20のコンテキストとプログラムのコンテキストとを
保存するコンテキスト保存部21と、保存されたコンテ
キストを復元するコンテキスト復元部22と、プログラ
ムの論理テストを繰り返し行わせるためのテストデータ
を投入するテストデータ投入部23と、コンテキストを
その保存履歴と共に一定時間保存するヒストリー保存部
24と、保存履歴に基づいてコンテキストを復元するヒ
ストリー復元部25とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチタスクプロ
グラムを実動作環境以外で実行し、特定のプログラム状
態から、異なる入力データを投入して、繰り返し論理テ
ストを実施することにより、プログラムの開発を支援す
るプログラム開発支援装置及びプログラム開発支援方法
に関するものである。
【0002】
【従来の技術】[マルチタスクプログラム]一般に、マ
ルチタスクプログラムは、タスクと呼ばれる独立したプ
ログラム単位を組み合わせて構成される。また、タスク
は、コード領域、書き換え不可能データ領域及び書き換
え可能データ領域から成り、書き換え可能データ領域は
コンテキストと呼ばれる。
【0003】マルチタスクプログラムは、オペレーティ
ングシステム(以下、OSと呼ぶ)と呼ばれるタスク群
のコントロールプログラムと結合して動作させる。ま
た、OSは、タスクの実行順序を制御し、タスク同士の
データ授受と、OSが管理するメモリ、I/O、CPU
資源の割り当てのために、システムコールと呼ばれる関
数群を提供する。
【0004】タスクは、システムコールを使って他のデ
ータ処理を受け持つタスクに処理を依頼し、情報の授受
を行う。また、OSに対して書き換え可能メモリ領域の
確保、I/Oデバイス制御を依頼する。一方、OSは、
複数のタスクから寄せられる処理依頼を、タスクごとに
設定されている実行優先度に従って並び替え、優先度の
高い処理から順次実行していく。また、I/Oなどのハ
ードウェアからのデータ入力処理は、「割り込み」と呼
ばれる特殊な処理として扱い、他の処理に優先して実行
される。このような割り込みの処理部分を、「割り込み
ハンドラ」と呼ぶ。
【0005】また、OSは、ある決まった時間間隔やシ
ステムコールの受け付けタイミングなどで、タスクの優
先順位と実行すべきかどうかの決定を行う。なお、これ
を「スケジューリング」と呼び、OSはタスクのコンテ
キストの一部を使って、スケジューリングのための情報
を格納する。これを、「タスクコンテキストブロック」
と呼ぶ。さらに、OSは、上記スケジューリングの後、
今まで実行していたタスクから次に実行すべきタスクに
処理を切り替える。これを「ディスパッチ」と呼ぶ。こ
のディスパッチによって、実行中のタスクは処理が停止
する。再度ディスパッチが発生し、停止中のタスクに処
理が切り替われば、停止していた場所から処理が再開さ
れる。
【0006】[マルチタスクプログラムの動作]一般的
なシングルタスクプログラムは処理順序が確定的であ
り、たとえ割り込みが発生しても、プログラムされた順
序で処理がなされる。一方、マルチタスクプログラムで
は、システムコールの受け付け時に、上記スケジューリ
ング、ディスパッチが発生するため、プログラム全体の
動作(処理の流れ)は確定的にならない。
【0007】これを具体例で示すと次のようになる。タ
スクA、B、Cがあるとする。今、タスクAが実行中
に、システムコールS1を発行したとする。はじめ、次
に実行要求を出しているタスクがBだけだとすると、O
Sはこのシステムコールによってディスパッチを発生さ
せ、タスクBに処理を切り替える。ところが、タスクA
を実行中に割り込みが発生し、割り込みハンドラによっ
てタスクCの実行要求がOSに出されていたとする。こ
の割り込みハンドラは、タスクAのシステムコールS1
の発行以前に処理が優先されるので、システムコールS
1によって、OSは、タスクBとタスクCの優先度をス
ケジューリングし、もし、タスクBの優先度が高ければ
タスクBを、タスクCの優先度が高ければタスクCを実
行するようディスパッチを発生させる。
【0008】このように、マルチタスクプログラムで
は、各タスクの優先度や状態、割り込みの発生など、様
々な要因によって、次に実行される処理内容が変わり、
確定的ではない。言い換えれば、各タスクにプログラム
された処理手順は確定的であるが、タスクの状態や割り
込みの発生個所によって、非常に多くの処理順序の組み
合わせが考えられるため、プログラムの実行経路(処理
の流れ)を予測することが非常に難しい。
【0009】[論理テスト]「プログラムのテスト」と
は、プログラムを最初から動作させ、テストの対象とな
るプログラム中の特定区間を通過させ、その区間を通過
した後、プログラムの処理結果もしくはプログラムの状
態が、テスト仕様通りであるか否かを確認する作業であ
る。
【0010】この「テスト仕様」の中で、時間制約の要
素を確認するテスト仕様を、「タイミング動作仕様」と
呼ぶ。例えば、「ハードウェアのスイッチを押してか
ら、スイッチが押されたことをプログラムで検出し、ブ
ザー音を生成して、これをスピーカに出力するまでに1
秒以内であること」という仕様は、時間制約の要素が入
っており、ブザー音をスピーカに出力するまでの時間が
「1秒以内」であるかどうかがポイントになっている。
従って、このテスト仕様は「タイミング動作仕様」であ
る。
【0011】一方、時間制約の要素が含まれない仕様
を、「論理動作仕様」と呼ぶ。上述の例では、「ハード
ウェアのスイッチを押してから、スイッチが押されたこ
とをプログラムで検出し、ブザー音を生成して、これを
スピーカに出力すること」という仕様であれば、時間制
約の要素がなく、「ブザー音をスピーカに出力するかど
うか」がポイントになっている。このような論理動作仕
様に基づいて行うテストを、「論理テスト」と呼ぶ。
【0012】このような論理テストでは、一般的に、計
算結果、変数の内容、分岐先(処理の流れの切り替
え)、ハードウェアの挙動を元に、それらが仕様通りか
否かを確認する。例えば、「処理Aに入力値Xを与えれ
ば、Aは条件判断Pによって処理Bへ、入力値Yを与え
れば、Pによって処理Cへ流れる」という論理動作仕様
があれば、処理Bに分岐したか、処理Cに分岐したかを
確認することで、論理テストを実施することができる。
【0013】特に、ある論理テスト仕様を、入力値を変
化させて繰り返し実施することを「リグレッションテス
ト」と呼ぶ。このように、入力値によって条件分岐先が
異なる場合や処理結果が異なる場合には、テスト区間ま
での挙動は同じにして、テスト区間からの挙動の違いを
検査することが多く、論理テストにおいてはリグレッシ
ョンテストが頻繁に実施される。
【0014】[マルチタスクプログラムの論理テスト]
一般に、プログラム中の特定区間の論理テストを実施す
るためには、プログラムを所望の特定区間まで動作させ
る必要がある。しかし、上述した通り、マルチタスクプ
ログラムの動作は確定的ではないため、所望の区間まで
プログラムを動作させるために、様々な経路を通過させ
るなどの処置が必要になり、結果として、非常に長い実
行経路をたどらなければならない場合がある。さらに、
入力値の違いや入力データを投入するタイミングによっ
て、経路Aを辿ってテスト区間に至る場合もあれば、異
なる経路Bを辿ってテスト区間に至る場合もある。
【0015】このため、従来のマルチタスクプログラム
の論理テストは、経路が確定的になる入力値や投入タイ
ミングに対してのみ実施されていた。また、タスク間通
信の値を強制的に書き換えるなどの処置により、確定的
に所望の経路を辿らせるなどの処理がなされていた。
【0016】[スナップショット]「スナップショッ
ト」とは、プログラムの実行中のある時期におけるプロ
グラムコンテキスト、CPUのレジスタ値、スタック値
をすべて記録することである。例えば、以下に説明する
組み込みシステムでは、コード領域、書き換え不可能デ
ータをROM(不揮発メモリ)に、書き換え可能データ
をRAM(揮発メモリ)に格納することが多い。この場
合、RAM領域のデータすべてとCPUのレジスタ値す
べてを外部記憶装置に保存することで、プログラムのあ
る時点での実行状態を記録することができる。
【0017】また、ある時間が経過した後、記録した情
報を元に戻すことによって、プログラムをスナップショ
ットした時点の状態に戻すことが可能である。ただし、
プログラムによって、タイマICやDMAなどの周辺ハ
ードウェアを設定していた場合は、これらの情報は復元
できない。したがって、復元後のプログラムの挙動は、
必ずしも復元前と同じになるとは限らないという問題が
あった。
【0018】[OSシミュレーション]プログラムを、
実際の実行環境で動作させるためには、実際のOSソフ
トや、デバイスドライバ、CPUやメモリ、周辺回路な
どを必要とする。これに対して、OSとデバイスドライ
バを、実際の実行環境とは異なる環境で模擬実行し、ハ
ードウェアの挙動を「スタブ」と呼ばれる擬似アプリケ
ーションで模倣し、プログラムをこれら擬似環境上で動
作させる方式がある。これを、「OSシミュレーショ
ン」と呼び、擬似環境を「OSシミュレータ」と呼ぶ。
【0019】プログラムは、このOSシミュレータを介
して、システムコールなどOSの機能を利用してタスク
間通信を行ったり、スタブを利用してハードウェアのア
クセスを模倣することが可能である。なお、このOSシ
ミュレータは実際の実行環境とは異なるタイミングで動
作するため、タイミング動作仕様は満足しないが、論理
動作仕様は同じになるため、このようなOSシミュレー
タを用いた論理テストが、従来のテスト方式として実施
されている。
【0020】[組み込みシステムのプログラムとデバッ
グ環境]ここで、マルチタスクプログラムの例として、
組み込みシステム向けのソフトウェアについて説明す
る。なお、組み込みシステムとは、家電や産業機器制御
などで利用されるマイクロコンピュータを含めたシステ
ムのことをいう。
【0021】すなわち、図14に示したように、組み込
みシステムのハードウェアは、次の5つのパートから構
成されている。 (1)CPU(中央処理装置)6:プログラムコードを
解釈し、データの処理を行い、I/Oや外部ハードウェ
アを制御するハードウェアである。 (2)ROM10:プログラムコードと書き換え不可能
データ領域が格納されているメモリであり、マルチタス
クプログラムにおいては、タスク群1、タスクの動作を
制御するOS2、タスク群から共通的に呼び出されるラ
イブラリ3、CPUを介してハードウェアから発行され
る割り込み信号に反応して、データ処理を実現する割り
込みハンドラ4、タスクや割り込みハンドラなどのプロ
グラムから呼び出されて、ハードウェアとのデータのや
り取りを実現するデバイスドライバ5から構成されてい
る。 (3)RAM7:書き換え可能データ領域(コンテキス
ト)が格納されているメモリである。 (4)I/O8:外部ハードウェアとCPUとのインタ
フェース用周辺回路である。 (5)外部ハードウェア9:スイッチやモータなど、実
際に外界に影響を及ぼすハードウェアである。
【0022】また、組み込みシステムのプログラムは、
通常、ホストマシンと呼ばれる開発用コンピュータ12
上でコーディングされ、デバッガ11によってROMに
格納される。このようにしてダウンロードされたプログ
ラムは、組み込みシステム上で動作可能となる。
【0023】ところで、プログラムをデバッグするツー
ルやテストするツールは、一般に、組み込みシステム上
では動作しない。このため、組み込みシステムのプログ
ラムをテスト、デバッグする際には、デバッガ11をホ
ストマシン12上で動作させ、デバッガ11と組み込み
システムを通信回線で接続し、デバッガ側からCPUを
直接コントロールして、プログラムを停止させたり、レ
ジスタやROM、RAMの値を読み込み、動作状況を把
握する。
【0024】例えば、スナップショットを実施するため
には、以下のような手順が取られている。 (1)デバッガが通信回線を通してCPUを停止する。 (2)CPUのレジスタ値を、通信回線を通してデバッ
ガ側に吸い上げる。 (3)すべてのRAM領域の値を、通信回線を通してデ
バッガ側に吸い上げる。 (4)デバッガ側で、吸い上げた情報を加工し、表示す
る。
【0025】上記のように構成されているため、RAM
領域のデータ量が多くなると、デバッガとCPU間の通
信量も膨大となり、実時間で動作する組み込みシステム
の挙動に対して、頻繁にスナップショットを実施するこ
とが不可能となる。すなわち、プログラムの実行中の所
定の時期におけるプログラムコンテキストなどを記録す
ることができなくなる。さらに、I/Oや外部ハードウ
ェアの情報までもデバッガ側に送信することは困難であ
るため、スナップショットの情報を正確に復元すること
ができないという問題もあった。このように、従来の組
み込みシステムのテストデバッグ環境では、対象となる
システムと開発環境(ホストマシン)が異なるため、テ
スト、デバッグのための工数が膨大なものとなるといっ
た問題が生じていた。
【0026】
【発明が解決しようとする課題】上述したような従来の
プログラム開発支援装置には、以下に述べるような問題
点があった。すなわち、プログラムの論理テストにおい
て、テスト区間の挙動が仕様通りにならない場合があ
る。このような不具合が発生した場合、その状況を再現
し、レジスタ値やデータ値の変化をステップ・バイ・ス
テップで確認する作業(デバッグ)が発生する。
【0027】しかしながら、上述したように、マルチタ
スクプログラムの論理テストにおいては、特定のテスト
区間に至るまでの経路が複数になる可能性があり、さら
に、テスト区間に至る経路中の処理が、テスト区間の不
具合に影響を及ぼす場合があるため、経路の再現も重要
になってくる。しかし、上述した理由により、マルチタ
スクプログラムの経路の再現は非常に困難である場合が
多い。
【0028】また、特定のテスト区間の前後にブレーク
ポイントを設定し、スナップショットを用いてプログラ
ムコンテキスト等を記録し、これを復元することで、経
路の再現を実現することは理論的には可能であるが、実
際は、ハードウェアの設定情報を保存できないため、プ
ログラムコンテキスト等を復元しても、必ずしも論理的
に正しい動作をするとは限らない。
【0029】また、従来の技術では、テストの度にブレ
ークポイントを毎回設定し直す必要があり、リグレッシ
ョンテストなどを実施する際に、スナップショットをと
るための準備作業工数が問題となっていた。
【0030】さらに、1万回に1回しか発生しないよう
な不具合の場合、通常、事前にスナップショットを設定
しておくことは困難であり、かつこのような状況では、
経路の再現は不可能に近い。
【0031】本発明は、上述したような従来技術の問題
点を解決するために提案されたものであり、その第1の
目的は、テスト区間に至るまでのプログラムの動作結果
を、プログラムを最初から再実行せずに復元することが
できるプログラム開発支援装置及びプログラム開発支援
方法を提供することにある。
【0032】第2の目的は、プログラムをOSシミュレ
ータ上で動作させることにより、ハードウェア設定情報
を保存しなくとも、特定区間におけるプログラムの状態
を完全に復元することができるプログラム開発支援装置
及びプログラム開発支援方法を提供することにある。
【0033】第3の目的は、予め指定したテスト区間に
プログラムが達したとき、自動的にプログラムのスナッ
プショットをとり、論理テストを実施した後、スナップ
ショットをとった状態にプログラムを復元し、入力デー
タを変化させて論理テストを実施するといったリグレッ
ションテストを自動的に行うことができるプログラム開
発支援装置及びプログラム開発支援方法を提供すること
にある。
【0034】第4の目的は、システムコールを発行する
たびに、順次、自動的にスナップショットをとり、コン
テキストをその保存履歴と共に保存し、保存したコンテ
キストを保存履歴に基づいて復元することができるプロ
グラム開発支援装置及びプログラム開発支援方法を提供
することにある。
【0035】
【課題を解決するための手段】上記の目的を達成するた
め、請求項1に記載の発明は、開発対象プログラムをそ
のプログラムを実装する実システムを模擬した環境で動
作させるシミュレーション手段と、前記シミュレーショ
ン手段による開発対象プログラムの動作時のある時点に
おける開発対象プログラムのコンテキストとシミュレー
ション手段のコンテキストとを保存するコンテキスト保
存手段と、コンテキストを保存した時点からある時間が
経過した後に、前記コンテキスト保存手段に保存されて
いるコンテキストを呼び出して、そのコンテキストに基
づいて保存時点におけるシミュレーション手段と開発対
象プログラムの状態を復元し、プログラムを再スタート
させるコンテキスト復元手段と、前記開発対象プログラ
ムにテストデータを投入すると共に、このテストデータ
の投入タイミングと前記コンテキストの保存と復元とを
同調させるデータ投入手段とを備えたことを特徴とす
る。請求項9の発明は、前記請求項1の発明を方法の観
点からとらえたものであって、このプログラム開発支援
方法は、開発対象プログラムをそのプログラムを実装す
る実システムを模擬したシミュレーション環境で動作さ
せ、前記シミュレーション環境における開発対象プログ
ラムの動作時のある時点で、その時点における開発対象
プログラムのコンテキストとシミュレーション環境のコ
ンテキストとを保存し、コンテキストを保存した時点か
らある時間が経過した後に、保存されているコンテキス
トを呼び出して、そのコンテキストに基づいて保存時点
におけるシミュレーション環境と開発対象プログラムの
状態を復元して、その時点から開発対象プログラムを再
スタートさせ、再スタートとした状態から再び開発対象
プログラムのテストを実行することを特徴とする。上記
の構成を有する請求項1または請求項9に記載の発明に
よれば、コンテキストの保存手段及び復元手段によっ
て、テスト区間に至るまでのプログラムの動作結果を、
プログラムを最初から再実行せずとも復元することがで
き、また、プログラムをシミュレーション手段上で動作
させることにより、ハードウェア設定情報を保存しなく
とも、プログラムの特定区間におけるプログラムの状態
を完全に復元することができる。
【0036】請求項2の発明は、前記請求項1の発明に
おけるデータ投入手段が、前記コンテキストの保存時点
を起点として開発対象プログラムの再スタートを繰り返
し実行させ、各再スタート毎に異なったテストデータを
投入するものであることを特徴とする。請求項10の発
明は、前記請求項2の発明を方法の観点からとらえたも
のであって、プログラム開発支援方法は、前記保存時点
を起点とする開発対象プログラムの再スタートを繰り返
し実行させ、各再スタート毎に異なったテストデータを
投入することを特徴とする。請求項12に記載の発明
は、請求項2に記載の発明をコンピュータプログラムを
記録した記録媒体の観点から捉えたものであって、この
媒体は、開発対象プログラムをそのプログラムを実装す
る実システムを模擬したシミュレーション環境で動作さ
せ、前記シミュレーション環境における開発対象プログ
ラムの動作時のある時点で、その時点における開発対象
プログラムのコンテキストとシミュレーション環境のコ
ンテキストとを保存し、コンテキストを保存した時点か
らある時間が経過した後に、保存されているコンテキス
トを呼び出して、そのコンテキストに基づいて保存時点
におけるシミュレーション環境と開発対象プログラムの
状態を復元して、その時点から開発対象プログラムを再
スタートさせ、この前記保存時点を起点とする開発対象
プログラムの再スタートを繰り返し実行させ、各再スタ
ート毎に異なったテストデータを投入することを特徴と
するプログラム開発支援方法を実現するプログラムを記
録したものである。このような構成を有する請求項2、
請求項10または請求項12に記載の発明によれば、開
発対象プログラムのある特定の区間に対して異なったデ
ータを繰り返し投入することにより、リグレッションテ
ストを容易に実行することが可能になる。
【0037】請求項4の発明は、前記請求項1の発明に
おいて、開発対象プログラムがシステムコールを発生す
る都度、その時点におけるシミュレーション手段のコン
テキストと開発対象プログラムのコンテキストを含む履
歴データを順次保存するヒストリー保存手段と、このヒ
ストリー保存手段によって保存された複数の履歴データ
の中から所望の履歴データを復元して、その時点におけ
る開発対象プログラム及びシミュレーション手段の状態
を復元するヒストリー復元手段を備えていることを特徴
とする。請求項11の発明は、前記請求項4の発明を方
法の観点からとらえたものであって、このプログラム開
発支援方法は、開発対象プログラムがシステムコールを
発生する都度、その時点におけるシミュレーション環境
のコンテキストと開発対象プログラムのコンテキストを
含む履歴データを順次保存し、保存された複数の履歴デ
ータの中から所望の履歴データを復元して、その時点に
おける開発対象プログラム及びシミュレーション環境の
状態を復元し、復元した状態から再び開発対象プログラ
ムのテストを実行することを特徴とする。請求項13の
発明は、前記請求項4の発明をコンピュータプログラム
を記録した記録媒体の観点から捉えたものであって、こ
の媒体は、開発対象プログラムがシステムコールを発生
する都度、その時点におけるシミュレーション環境のコ
ンテキストと開発対象プログラムのコンテキストを含む
履歴データを順次保存し、保存された複数の履歴データ
の中から所望の履歴データを復元して、その時点におけ
る開発対象プログラム及びシミュレーション環境の状態
を復元し、復元した状態から再び開発対象プログラムの
テストを実行することを特徴とするプログラム開発支援
方法を実現するプログラムを記録したものである。この
ような構成を有する請求項4、請求項11または請求項
13の発明によれば、開発対象プログラムがシステムコ
ールを発行するたびに、順次、自動的にスナップショッ
トをとり、コンテキストをその保存履歴と共に保存する
ことができ、また、保存したコンテキストを保存履歴を
辿ることによって復元することができるので、プログラ
ムが予測しない状態になったときなど、通常のテストで
はほぼ復元不可能な状態を再現することができる。
【0038】請求項3の発明は、前記請求項1の発明に
おいて、前記データ投入手段が、その実行順序を記述し
たシナリオに従って動作するものであって、前記開発対
象プログラムがシナリオに指示された状態に達した場合
にテストデータを所定のデータ領域に書き込むものであ
ることを特徴とする。この請求項3の発明によれば、シ
ナリオを用意することによって、データ投入手段を自由
に制御することが可能になり、種々のテストを容易に実
行することができる。
【0039】請求項5の発明は、前記ヒストリー保存手
段が、履歴データを外部記憶手段に保存するものであっ
て、かつ前記外部記憶手段におけるデータ格納エリアを
書き込むリングバッファを備え、最新の履歴データから
遡って予め決められた数の履歴データを格納するもので
あることを特徴とする。この請求項5の発明によれば、
大容量の外部記憶手段を利用することで多数の履歴デー
タを保存することができると共に、記憶装置やリングバ
ッファの容量に制限がある場合でも、最新の履歴データ
が保存される利点がある。
【0040】請求項6の発明は、開発対象プログラムの
動作時において前記プログラムをメモリ上の所定の領域
に割り当てるプログラムローダと、前記プログラムの再
スタート時においてプログラムローダの割り当て位置を
修正するためのアドレス値調整手段が設けられているこ
とを特徴とする。この請求項6の発明によれば、保存さ
れたコンテキストを復元して再スタートさせる際に、プ
ログラムを割り当てるメモリ領域が保存時と異なってい
ても、実行状態に復元することが可能となる。
【0041】請求項7の発明は、前記シミュレーション
手段が、その論理動作が開発対象プログラムを実装する
実システム上のOSの論理動作と同じになるように構成
したOSシミュレータと、実システムのハードウェアを
プログラムで代替したスタブを備え、テストの対象とな
る開発対象プログラムを前記シミュレーション手段上の
一つのタスクとして処理することを特徴とする。この請
求項7の発明によれば、開発対象プログラムをソフトウ
ェアによって構成されたOSシミュレータやスタブによ
って動作させることが可能となるので、開発対象プログ
ラムの動作時におけるシミュレーション手段側の状態を
把握することが容易となる。その結果、実システムを構
成するハードウェアの設定情報を保存することなく、プ
ログラムの特定区間におけるプログラムの状態を復元す
ることができる。
【0042】請求項8の発明は、前記シミュレーション
手段が計時手段を備え、この計時手段によって得られた
計時データを前記コンテキスト保存手段がシミュレーシ
ョン手段のコンテキストとして保存することを特徴とす
る。この請求項8の発明によれば、シミュレーション手
段で得られた計時データを利用することにより、周期的
に動作するタスクのような時刻あるいは時間の制御を必
要とする開発対象プログラムをシミュレーション手段上
で動作させることが可能になる。
【0043】
【発明の実施の形態】以下、本発明の実施の形態(以
下、実施形態という)を図面に基づいて、具体的に説明
する。なお、以下に示す実施形態の各機能は、所定のメ
カニズムやソフトウェアがコンピュータ及び周辺機器を
制御することによって実現されるものであり、本明細書
では、各機能や各処理に対応する「…手段」「…部」等
の仮想的回路ブロックを想定して、本発明及び実施形態
を説明している。このため、各ブロックに対して、これ
を実現する各ハードウェア要素やソフトウェア要素は1
対1には対応しない。
【0044】[1.構成] [1−1.全体構成]図1に示したように、本実施形態
のプログラム開発支援装置を実現するコンピュータであ
るホストマシン30は、CPU、メモリ等のハードウェ
ア資源を備えたマシン本体と、この本体に接続されたキ
ーボード、ディスプレイ等の入出力手段(図示せず)、
及びハードディスクなどの外部記憶部27を備えてい
る。
【0045】本実施形態のプログラム開発支援装置は、
ホストマシン30上で動作するシミュレーション部20
を備え、開発対象プログラム34はこのシミュレーショ
ン部20上で動作する。ホストマシン30上には、開発
対象プログラム34の動作過程のある時点におけるシミ
ュレーション部20のコンテキスト26及び開発対象プ
ログラム34のコンテキストを保存するコンテキスト保
存部21と、このコンテキスト保存部21で保存したそ
れぞれのコンテキストを復元して、開発対象プログラム
34を前記コンテキストの保存時点から再スタートさせ
るコンテキスト復元部22が設けられている。
【0046】ホストマシン30上には、前記開発対象プ
ログラム34に対して、シナリオ33に従ってテストデ
ータを投入するテストデータ投入部23が設けられてい
る。このテストデータ投入部23は、前記コンテキスト
保存部21及びコンテキスト復元部22と連係して動作
するものであって、コンテキスト復元部22によって開
発対象プログラム34が再スタートする毎に、開発対象
プログラム34に対して異なったテストデータを投入す
る。
【0047】ホストマシン30上には、開発対象プログ
ラム34がシステムコールを発生する都度、その時点に
おけるシミュレーション部20のコンテキストと開発対
象プログラム34のコンテキストなどから成る履歴デー
タを、外部記憶部27に順次保存するヒストリー保存部
24と、このヒストリー保存部24によって保存された
複数の履歴データの中から所望の履歴データを復元し
て、その時点における開発対象プログラム34及びシミ
ュレーション部20の状態を復元するヒストリー復元部
25が設けられている。
【0048】ホストマシン30はその内部にプロセス制
御部31を備えており、このプロセス制御部31はホス
トマシン上で動作するすべてのプロセスを監視し、必要
に応じてプロセスの起動、停止、再開などを制御するプ
ログラムである。本実施形態において、ホストマシン3
0はマルチタスクオペレーションシステムを利用した実
行環境として構築され、前記シミュレーション部20、
コンテキスト保存部21及び復元部22、テストデータ
投入部23、ヒストリー保存部24及び復元部25は、
それぞれホストマシン30上の一つのプロセスとして動
作する。そのため、これら各部は、前記プロセス制御部
31によって制御される。
【0049】ホストマシン30上には、ホストマシン3
0上で動作させる各種のプログラムをメモリ上の所定の
領域に割り当てるプログラムローダ32が設けられてい
る。このプログラムローダ32は、ホストマシンがプロ
グラムを読み込んだ状態で、リロケータブル(再配置可
能)な部分を、読み込んだメモリの絶対アドレスに合わ
せて再計算し、然るべき絶対アドレスに変換する作業を
行うプログラムである。本実施形態では、このプログラ
ムローダ32の処理を補完するためにアドレス値調整部
35が設けられている。
【0050】[1−2.シミュレーション部]本実施形
態に用いられるシミュレーション部20は、対象システ
ムのハードウェアやCPU、OSの論理動作をホストマ
シン30上で模倣し、プログラムを動作させるものであ
る。すなわち、C言語で記述されているプログラムを、
対象となるシステムのCPU向けのコードに変換するコ
ンパイラと呼ばれるCPU用実行コード生成装置と、ホ
ストマシンのCPU向けの実行コードに変換するコンパ
イラが存在すれば、同じプログラムをシステムのCPU
でも、ホストマシンのCPU上でも実行させることが可
能となる。しかし、実際には、OSやデバイスドライ
バ、割り込みハンドラなどは、CPUの特殊機能に依存
した形になっており、これらの部位は、たとえC言語で
記述されていても、CPUが異なれば実行は不可能であ
る。
【0051】通常、マルチタスクプログラムのタスク群
は、OSのシステムコールを介してタスク間データの授
受を行う。また、タスクが、割り込みハンドラやデバイ
スドライバを関数コールレベルで利用するようにプログ
ラムされていれば、システムコールや関数コールのI/
Fを同じにし、I/F以降の処理の実装は各々のCPU
に合わせることによって、タスク群のプログラムは、対
象システム用CPUでもホストマシンでも実行可能とな
る。ただし、対象システムとホストマシンでは、そもそ
もCPUの性能が異なるため、OSのタイミング動作仕
様は同じにはならない。したがって、OSシミュレータ
上で動作するタスク群は、論理動作仕様のみ検証可能と
なる。
【0052】同じように、割り込みハンドラやデバイス
ドライバ、I/O、ハードウェアについても、関数I/
Fと、論理動作だけが対象システムと同じになるように
プログラムされた「スタブ」と呼ばれるプログラムによ
って、論理動作を模倣させることができる。
【0053】図2は、上記のようなOSシミュレータ及
びスタブを有するシミュレーション部20の一例を示す
ものである。テストの対象となる開発対象プログラム3
4は、このシミュレーション部20上の一つのタスク2
01として処理されるもので、このシミュレーション部
と同様にホストマシン30上で動作するデバッガ36や
テストツール37によって、実システム上で動作させた
ときと同様な状況下でその論理動作が検証される。その
ため、シミュレーション部20は、その論理動作が開発
対象プログラムを実際に組み込むシステム上のOSの論
理動作と同じになるように構成したOSシミュレータ2
02と、後述する一般スタブ203、ハンドラスタブ2
04、I/Oスタブ205及びシミュレータコンテキス
ト206を備えている。
【0054】すなわち、ハードウェアの論理動作はタス
クから見ればI/Oへの値の変化でしかないので、ハー
ドウェアの存在をI/Oで隠蔽して、I/Oとハードウ
ェアの動作を一つのI/Oスタブ205で模倣すること
ができる。ハンドラスタブ204は、ハードウェア割り
込みに応答する処理プログラムであり、論理動作だけを
模倣し、OSシミュレータを経由してタスクへデータを
送信する。一般スタブ203は、タスクやライブラリな
どで、関数I/Fだけは実装されているが、論理動作の
すべては実装されておらず、特定の処理のみを行うプロ
グラムである。
【0055】シミュレーション部20は、OSシミュレ
ータ202、タスク201、スタブ203〜205など
の書き換え可能データ領域を、シミュレータコンテキス
ト206として保有する。このシミュレータコンテキス
ト206は、ホストマシン上のRAM領域に存在し、タ
スクをはじめ、OSシミュレータの動作中の書き換え可
能データ、スタック情報が含まれる。
【0056】このように構成されたシミュレーション部
を利用したプログラム(タスク201)のテスト、デバ
ッグは、前述の実システムによるテスト、デバッグに比
べて、次のような優位点がある。 (1)すべてソフトウェアで構成されているため、デバ
ッガ36やテストツール37から、OSやスタブを制御
しやすい。 (2)シミュレータコンテキスト206を保存すること
で、シミュレーション環境におけるすべての状態を復元
することができる。 (3)データ転送はホストマシン上で実施するので、通
信量が膨大になるという問題はなくなる。 (4)デバッガとしては、実システム向の特別なデバッ
ガでなくとも、シミュレーション部を制御可能な、ホス
トマシン上で動作するツール(例えば、構造解析ツール
や、メモリリーク測定ツールなど)を利用することがで
きる。
【0057】[1−3.コンテキスト保存部]上記シミ
ュレーション部を用いてタスクを動作させ、動作中の特
定時期におけるスナップショットを実施することを可能
とするコンテキスト保存部について説明する。本実施形
態のようにマルチタスクオペレーションシステムを利用
した実行環境においては、前記シミュレーション部20
をはじめとして本実施形態を構成する各手段は、ホスト
マシン30上の1つのプロセスとして動作する。そこ
で、本実施形態においては、シミュレーション部20
が、プロセス制御部31を通じて、コンテキスト保存部
21からのプロセス制御を受け付けるように設定する。
例えば、コンテキスト保存部21から、プロセスの実行
を一時停止するような命令をプロセス制御部31に発行
すると、プロセス制御部31はシミュレーション部20
に対して指示されたプロセス、例えばプログラムの実行
を停止するように処置する。具体的には、CPUの資源
割り当てを停止し、ホストマシン上のOSのスケジュー
リング対象から除外するといった処置を施す。その後、
シミュレーション部のプロセスが使用していたすべての
レジスタ値及びコンテキストを、外部記憶部27に保存
する。
【0058】[1−4.コンテキストの情報]ここで、
コンテキストの情報について説明する。図3は、シミュ
レーション部20のデータ構成の一例を示したものであ
る。すなわち、前記のようにシミュレーション部20
は、開発対象プログラムであるタスク部20a、シミュ
レーションを実現するOSシミュレータ部20b、I/
Oスタブやハンドラスタブなどのスタブ部20cで構成
されている。
【0059】前記タスク部20aは、プログラムコード
部分、書き換え不可能データ領域(固定データ)、書き
換え可能データ領域(コンテキスト)から構成されてい
る。このタスク部20aのコンテキストが請求項に記載
した開発対象プログラムのコンテキストに相当する。同
様に、OSシミュレータ部20bは、プログラムコード
部分、書き換え不可能データ領域(固定データ)、書き
換え可能データ領域(コンテキスト)から構成され、ス
タブ部20cも、プログラムコード部分、書き換え不可
能データ領域(固定データ)、書き換え可能データ領域
(コンテキスト)から構成されている。これらOSシミ
ュレータ部20b及びスタブ部20cのコンテキスト
が、請求項に記載されたシミュレーション手段のコンテ
キストに相当する。
【0060】OSシミュレータ部20bのプログラムコ
ード部分の一部に計時機能部20dが設けられ、また、
コンテキストの一部として計時データ20eが設けられ
ている。この計時機能部20dは、次のようなプログラ
ム動作で利用される。すなわち、タスクの処理の中には
周期的に動作するものがあるが、実際の組み込みシステ
ムにおいては、ホストマシン30上のタイマ用ハードウ
ェア38からの割り込みによって、CPU及びOSが周
期を正確に計時し、周期的に動作すべきタスクを起動あ
るいは停止させる。一方、シミュレーション部20にお
いては、周期の正確さという点では実システムとは異な
るが、「周期的に処理が行われる」という仕様は論理動
作であり、このために周期的に動作させるきっかけを作
り出さなければならない。このため、シミュレーション
部20では、ホストマシン30が持つタイマ用ハードウ
ェア38を利用し、OSシミュレータ部20bのプログ
ラムコード部分でこのタイマ値を使って計時し、タスク
の周期制御を実現している。
【0061】このように、シミュレーション部20にお
いて、唯一計時機能部については実際のハードウェアを
アクセスしているため、例えば、周期が100秒であっ
たとした場合、次の起動まで残り時間が10秒の時点で
スナップショットをとり、ホストマシン30のタイマが
進んでしまった後で復元しても、既に残り時間が過ぎて
いれば、正しく次の周期が掛けられないという問題が生
じる。この問題を解決するために、OSシミュレータ部
20bのプログラムコードの計時機能部20dには、常
に、前回にホストマシンのタイマ用ハードウェアに問い
合わせたときの値を保持し、前回の値との差分を保持す
るような機構が設けられている。すなわち、OS内部
に、「前ホストマシン時刻」変数と、「現ホストマシン
時刻」変数、及び「積算時間」変数を用意し、OSシミ
ュレータ起動時に、 *前ホストマシン時刻=現ホストマシン時刻=ホストマ
シンの時刻 *積算時間=0 に設定する。
【0062】また、OS内部での基準時刻は、OSシミ
ュレータ起動時を0とした線形増加とし、以下のような
手順で計算する。 (1)割り込みを禁止する。 (2)ホストマシン時刻を取得し、現ホストマシン時刻
に代入する。 (3)「差分時間=現ホストマシン時刻−前ホストマシ
ン時刻」を計算する。 (4)前ホストマシン時刻に現ホストマシン時刻を代入
する。 (5)積算時間に差分時間を加える。 (6)割り込みを解除する。
【0063】[1−5.アドレス値調整部]図4は、前
記シミュレーション部のプログラムコード及びコンテキ
ストが、ホストマシン上のメモリに配置される様子を表
す概念図である。上述したように、シミュレーション部
20は、ホストマシン30上では1つのプロセスにすぎ
ない。したがって、ホストマシンを構成する一般的なコ
ンピュータでは、図4に示したように、プログラムコー
ド部分(コードセグメントと呼ぶ)、データ部分(デー
タセグメントと呼ぶ)、スタック部分(スタックセグメ
ントと呼ぶ)にまとめられてメモリに配置される。一般
に、コードセグメント内のデータアクセス命令は、デー
タセグメント内の指定された領域の情報を読み書きす
る。また、一時的なデータ値はスタックセグメントの指
定された領域に保存される。通常、ホストマシンがプロ
グラムをメモリ上に読み込む際には、読み込んだプログ
ラムはコードセグメント及びデータセグメントに展開さ
れる。また、プログラムが実行開始になると、一時的な
データ値がスタックセグメント内にも展開される。
【0064】ところで、組み込みシステムの場合は、プ
ログラムコードセグメントの開始アドレスも、データセ
グメントの開始アドレスも、共に固定され、定まった値
を持っている。しかしながら、シミュレーション部上で
組み込みシステムを実行させる場合においては、シミュ
レーション部自体がホストマシン上で動作するため、通
常、これらホストマシン上で動作するプログラムは、前
記セグメントの開始アドレスが不定である。その理由
は、ホストマシン上では、常に1つのプログラムが動作
しているとは限らず、状況に応じて適当なメモリ領域が
割り当てられるからである。
【0065】このため、ホストマシン上でコンパイルさ
れるプログラムは、通常、コンパイル時に、メモリ上の
絶対番地をアクセスする命令、例えば、メモリ内容をC
PUのレジスタに格納する「ロード命令」や、絶対番地
のサブルーチンを呼び出す「コール命令/ジャンプ命
令」などが、再配置可能(リロケータブルと呼ぶ)状態
で生成される。最も簡単なリロケータブル命令の格納方
式は、プログラムの先頭からのオフセット(バイト数)
で構成される。例えば、コードセグメントの先頭から1
00バイト目にリロケータブル情報があるとすれば、1
00バイト目には「offset 100 from code seg」 といっ
た命令が書き込まれている。さらに、プログラムを実行
する際には、次のような手順がとられる。まず、ホスト
マシン上には、図1に示したように、「プログラムロー
ダ」と呼ばれるユーザプログラムをホストマシンのメモ
リ上に格納するプログラムが存在する。このプログラム
ローダ32は、ユーザプログラムを読み込んだ段階で、
リロケータブルな部分を読み込んだメモリの絶対アドレ
スに合わせて再計算し、然るべき絶対アドレスに変換す
るといった作業を行う。例えば、上述の例で、コードセ
グメントの先頭が12000番地であったとすれば、1
00バイト目の命令は、(12100)と置き換えられ
る。その後、プログラム開始番地へ制御を移し、プログ
ラムを実行させる。
【0066】ホストマシン30上では、このようなプロ
グラムロードの仕掛けがあるため、コンテキスト保存部
21において、データセグメント及びスタックセグメン
トをそのままの形で保存しても、プログラムの復元は不
可能である。例えば、スタックセグメントには、次に実
行すべきサブルーチンの絶対アドレスによって示される
開始アドレス値が含まれているからである。このため、
次のような手順でプログラムをコンパイルするアドレス
値調整部をホストマシンのコンパイラに設ける。
【0067】まず、データセグメントへのデータの格納
と取得については、次の手順を設ける。 (1)データセグメント開始アドレス(d1)から、オ
フセット(d2)の位置にあるデータ領域にデータが格
納されているものとする。 (2)データが格納されている絶対番地(d3)を、ア
ドレスd1+オフセットd2によって計算する。 (3)計算したアドレスd3を用いて、データ格納/取
得命令を発行する。
【0068】一方、アドレス参照命令は、次のように展
開する。 (1)データセグメント開始アドレス(d1)から、オ
フセット(d2)の位置にあるデータ領域にデータが格
納されているものとする。 (2)参照すべきデータは、データが格納されている絶
対番地(d3)ではなく、オフセット値d2を用いる。 (3)実際に格納されているデータへアクセスする場合
は、上述したデータの格納/取得手順に従う。
【0069】次に、関数の呼び出しについては次のよう
なコード展開を行う。 (1)呼び出す関数のオフセット値(c2)と、コード
セグメント開始アドレス(c3)を取得する。 (2)関数の開始アドレスの絶対番地(c4)を、オフ
セット値(c2)と開始アドレス(c3)から計算す
る。 (3)現在実行中のコードのアドレス値(c5)を取得
する。 (4)コードセグメント開始アドレス(c3)と、上記
実行中のコードのアドレス値(c5)との差(c6)を
とる。 (5)計算した差(c6)をスタックエリアに格納す
る。 (6)計算した関数の開始アドレス(c4)への移動命
令を発行する。
【0070】関数からの復帰は、次のようなコード展開
とする。 (1)スタックエリアに格納されたアドレス値(c6)
を取得する。 (2)コードセグメント開始アドレス(c3)を取得す
る。 (3)取り出したアドレス値(c6)と開始アドレス
(c3)を加え、復帰すべきプログラムコードの絶対ア
ドレス(c7)を得る。 (4)復帰すべきアドレス(c7)へ移動命令を発行す
る。
【0071】上記の変換手順を用いて、ソースコードを
実行可能なCPUコードに変換することによって、プロ
グラムはリロケータブルなコードになる。また、データ
セグメント及びスタックセグメント内のアドレス値は、
すべてオフセット値となるため、データセグメント及び
スタックセグメントの内容を保存するだけで、実行状態
の復元が可能となる。
【0072】[1−6.テストデータ投入部]続いて、
図5に基づいて、テストデータ投入部について説明す
る。なお、図5は、図1に示した全体構成から、テスト
データ投入部を中心とした部分を抜粋したものである。
図中、シナリオ33は、テストデータ投入部の実行順序
を記述した指示書であり、「プログラムが所定の状態に
なったら、指示されたデータエリアにデータを書き込
む」といった内容を記述する。また、シンボル情報テー
ブル41は、プログラムをコンパイルした際に、ソース
コードで用いる変数名や関数名が、コードセグメント、
データセグメントのどの位置に該当するかが記載されて
いるデータベースである。
【0073】テストデータ投入部23は、シナリオ33
の内容を解釈し、シンボル情報テーブル41を用いて、
OSシミュレータ42やタスク部20aとして処理され
るプログラム34の動作を監視する。例えば、シナリオ
に「プログラムが関数xyzを呼び出したら、OSのシ
ステムコールabcを呼び出せ」と記載されていた場
合、シンボル情報テーブル41を用いて、xyzに該当
するコードセグメント内の位置を取得し、プログラム3
4の所定位置に、データ投入用コードを埋め込むように
構成されている。
【0074】[1−7.ヒストリー保存部及びヒストリ
ー復元部]続いて、図6に基づいて、ヒストリー保存部
24及びヒストリー復元部25について説明する。ヒス
トリー保存部24は、開発対象プログラムがシステムコ
ールを発生する都度、その時点におけるシミュレーショ
ン部20のコンテキストと開発対象プログラムのコンテ
キストを含む履歴データを順次保存する。そのため、O
Sシミユレータ42には開発対象プログラムがシステム
コールを発したことを検出するシステムコール受付部4
2aが設けられている。そして、ヒストリー保存部24
は、OSシミュレータ42のシステムコール受付部42
aがプログラム34からシステムコールを受け付けた
ら、即座に制御をヒストリー保存部24に移動させるよ
うな制御コードを書き込むように構成されている。そし
て、プログラム34がシステムコールを発行し、制御が
ヒストリー保存部24に移動した場合、ホストマシン3
0のプロセス制御部31及びコンテキスト保存部21を
用いて、プログラム及びOSのコンテキスト(データセ
グメント及びスタックセグメント)及びシステムコール
情報を外部記憶部に保存する。
【0075】また、前記ヒストリー保存部24は、外部
記憶部上においてコンテキスト保存情報及びシステムコ
ール情報が格納されている位置をデータ書き込み指標4
5として書き込むためのリングバッファ44を備えてい
る。このリングバッファ44は、予め複数個の固定値の
データ格納エリアを有しており、例えば、10個のリン
グバッファの場合、11個目のデータは1個目のデータ
に上書きされるように構成されている。
【0076】前記ヒストリー復元部25は、ヒストリー
保存部24によって保存された複数の履歴データの中か
ら所望の履歴データを復元して、その時点における開発
対象プログラム及びシミュレーション手段の状態を復元
するものである。すなわち、ヒストリー復元部25は、
利用者からの指示により、前記リングバッファ44が指
し示すシステムコール情報を取得して、これを利用者に
提示し、選択された値が示すコンテキストを取得する。
そして、取得したコンテキストを、プログラム及びOS
のデータセグメント及びスタックセグメントに復元す
る。
【0077】[2.作用]以下、本発明によるプログラ
ム開発支援装置の作用について、図1に示した各手段ご
とに説明する。
【0078】[2−1.コンテキスト保存処理]本発明
のプログラム開発支援装置において、上述したコンテキ
スト保存部及びコンテキスト情報を用いてコンテキスト
を保存する手順を、図7に示したフローチャートに従っ
て説明する。
【0079】すなわち、コンテキスト保存部から、ホス
トマシンのプロセス制御部を通じて、シミュレーション
部へプログラム停止の指示が発行されると(ステップ8
01)、プロセス制御部がプログラムを停止させる(ス
テップ802)。次に、プロセス制御部は、シミュレー
ション部のプロセスが使用していたすべてのレジスタ値
をホストマシン内で保存する(ステップ803)。この
とき、停止したプログラム位置は、プログラムレジスタ
と呼ばれる特殊なレジスタの値で表される。さらに、プ
ロセス制御部は、このレジスタ値をコンテキスト保存部
へ転送し(ステップ804)、コンテキスト保存部は、
転送されたレジスタ値を外部記憶部に保存する(ステッ
プ805)。
【0080】続いて、プロセス制御部を通じて、コンテ
キスト保存部からシミュレーション部へコンテキスト転
送の指示が発行されると(ステップ806)、プロセス
制御部は、シミュレーション部のデータセグメントとス
タックセグメント部分をすべて取得し(ステップ80
7)、コンテキスト保存部へ転送する(ステップ80
8)。コンテキスト保存部は、転送されたデータセグメ
ントとスタックセグメントの内容を外部記憶部に保存す
る(ステップ809)。
【0081】次に、シミュレーション部のシンボル情報
テーブルから、OSシミュレータの「前ホストマシン時
刻」変数を検索し(ステップ810)、検索した時刻が
格納されているOSコンテキストの格納場所を取得する
(ステップ811)。そして、以下に示すコンテキスト
保存情報を作成し(ステップ812)、この情報を外部
記憶部に保存する(ステップ813)。
【0082】ここで、外部記憶部に保存されるコンテキ
スト保存情報について説明する。なお、保存データの実
体は外部記憶部に格納され、コンテキスト保存情報は、
その格納領域へのインデックスを管理する。すなわち、
図8に示したように、コンテキスト保存情報には、プロ
グラムコードを格納している外部記憶部のインデックス
名称、データセグメント及びスタックセグメントの内容
を格納している外部記憶部のインデックス名称、レジス
タ値の内容を格納している外部記憶部のインデックス名
称、前ホストマシン時刻変数を格納している外部記憶部
のインデックス名称、及びコンテキスト保存情報につけ
られる一意の名称(コンテキスト保存情報名)が含まれ
ている。
【0083】[2−2.コンテキスト復元処理]次に、
保存したコンテキストを復元し、プログラムの実行を再
開する手順について、図9に示したフローチャートに従
って説明する。
【0084】まず、コンテキスト保存部を用いて、復元
すべきコンテキストを保管する保存情報データのコンテ
キスト保存情報名を元に、コンテキスト保存情報が格納
されている外部記憶部から、図8に示したようなコンテ
キスト保存情報を取得する(ステップ1001)。続い
て、コンテキスト保存情報の中から、プログラムコード
を格納している外部記憶部のインデックスを検索し、プ
ログラムコードを取得する(ステップ1002)。そし
て、ホストマシン上のプログラムローダを用いて、ホス
トマシンのメモリへプログラムのコードセグメント及び
データセグメントを展開する(ステップ1003)。
【0085】次に、コンテキスト保存部を用いて、デー
タセグメントの内容を格納している外部記憶部のインデ
ックス名称から、保存していたデータセグメントの内容
を取得し(ステップ1004)、これを、ステップ10
03において展開したデータセグメントの開始アドレス
から順に上書きする(ステップ1005)。続いて、コ
ンテキスト保存部を用いて、スタックセグメントの内容
を格納している外部記憶部のインデックス名称から、ス
タックセグメントの内容を取得し、プログラムのスタッ
クセグメント位置へ上書きする(ステップ1006)。
【0086】さらに、レジスタ値の内容を格納している
外部記憶部のインデックス名称を用いて、レジスタ値の
内容を取得し、プロセス制御部にレジスタ設定命令を発
行する(ステップ1007)。そして、プロセス制御部
は、転送されたレジスタ値をプログラムのレジスタに設
定する(ステップ1008)。これにより、コンテキス
ト保存部によって停止したプログラム位置は、プログラ
ムレジスタと呼ばれる特殊なレジスタに復元される。
【0087】次に、コンテキスト保存部を用いて、前ホ
ストマシン時刻変数格納位置を取得し(ステップ100
9)、データセグメント中のオフセット値を計算する
(ステップ1010)。プロセス制御部によって、現在
のホストマシン時刻を取得し(ステップ1011)、O
Sシミュレータの「前ホストマシン時刻」変数データ位
置に現在値を書き込む(ステップ1012)。プロセス
制御部を用いて、読み込んだプログラムレジスタが示す
プログラム位置から動作を再開するような命令を発行す
る(ステップ1013)。
【0088】以上の手順により、プログラムレジスタに
は、コンテキストを保存する直前まで実行していたプロ
グラム位置が復元される。また、コードセグメント、デ
ータセグメント、スタックセグメントのそれぞれの開始
位置は、コンテキストを保存した時期とは異なる場合が
あるが、これらは、アドレス値調整部によってプログラ
ム実行時に調整される。また、OS内部時間は、再開し
た段階のホストマシン時刻に修正されるので、OS内部
のタイマなどが狂うことはない。
【0089】[2−3.テストデータ投入処理]続い
て、テストデータ投入部23の動作手順を、図10に示
したフローチャートに従って説明する。
【0090】テストデータ投入部はシナリオを解釈し、
データを投入すべきプログラム位置を取得する(ステッ
プ1101)。そして、プログラムの状態に応じて、デ
ータを投入するというシナリオの場合、停止すべきプロ
グラム位置が、コードセグメントのどの位置にあるかを
計算し、これをs1とする(ステップ1102)。ステ
ップ1102で求めたコード位置s1に、プログラムの
制御を一旦テストデータ投入部へ移動する制御コードを
書き込む(ステップ1103)。なお、この時、一意な
制御番号も同時にテストデータ投入部へ送られるように
しておく。
【0091】ホストマシンが制御コードを解釈した段階
で、制御がテストデータ投入部に移動する(ステップ1
104)。テストデータ投入部では、制御番号を用い
て、プログラム中のどの位置で制御が移ってきたかを判
断し、シナリオに記載されたデータ値を、指定のデータ
セグメント内に書き込む(ステップ1105)。
【0092】次に、プロセス制御部に、データの書き換
え命令を発行する(ステップ1106)。これにより、
データの書き込みやシステムコールの発行は、プロセス
制御部を経由して、プログラムやOSのコードセグメン
ト及びデータセグメントを直接操作することで実施され
る。プロセス制御部が、所定の位置に、シナリオに記載
されたデータを書き込んだ後(ステップ1107)、制
御をプログラムに移し、プログラムの動作を再開させる
(ステップ1108)。続いて、すべてのシナリオが終
了したか否かが判断され(ステップ1109)、終了し
ていない場合には、ステップ1101に戻り、上記の動
作を繰り返す。一方、すべてのシナリオが終了した場合
には、テストデータ投入処理を終了する。
【0093】[2−4.データ投入とコンテキスト保存
/復元の同期処理]続いて、上記テストデータ投入部を
用いたデータ投入とコンテキスト保存/復元の同期手順
について、図11に示したフローチャートに従って説明
する。なお、ここでは、プログラムのある区間につい
て、投入するデータ値を変化させ、その挙動が予定した
挙動と一致するかどうかを検査するリグレッションテス
トを例にとって説明する。
【0094】リグレッションテストでは、テスト区間の
開始位置及び終了位置において条件を設定し、これら条
件をシナリオに記載する。いま、「プログラムが特定の
状態になったら、処理xyzを実施する」という内容の
シナリオが記述されているとする。そして、プログラム
の動作条件が、シナリオに記載された条件に当てはまっ
た場合、プログラムの動作は停止し、外部からデータを
投入するような処理が実行される。なお、シナリオで設
定した条件には、予め名称をつけておく。
【0095】まず、シナリオを解釈し(ステップ120
1)、上記テストデータ投入処理にしたがって、テスト
区間の開始位置及び終了位置に、制御をテストデータ投
入部へ移動させる制御コードを書き込み(ステップ12
02)、プログラムを実行する(ステップ1203)。
そして、プログラムがシナリオに記述された条件に当て
はまった場合、すなわち、テスト区間の開始位置に到達
した場合(ステップ1204)、上記テストデータ投入
処理にしたがって、シミュレーション部の制御は、一旦
テストデータ投入部へ移動する(ステップ1205)。
【0096】テストデータ投入部は、コンテキスト保存
部とプロセス制御部を用いて、プログラム及びOSのコ
ンテキスト(データセグメント及びスタックセグメン
ト)を保存する(ステップ1206)。コンテキスト保
存の際には、シナリオで設定した条件に予めつけておい
た名称を利用し、さらに一意な番号を付加して、他のコ
ンテキスト保存情報と区別する(ステップ1207)。
なお、一意な番号は、一度保存する度に1つずつ増やし
ていくものとする。
【0097】テストデータ投入部によって、シナリオに
記載されているデータを投入する(ステップ120
8)。プロセス制御部にプログラムの動作再開を命令
し、プログラムの動作を再開させる(ステップ120
9、1210)。プログラムがテスト区間の終了位置に
到達した場合(ステップ1211)、再び制御がテスト
データ投入部に移動する(ステップ1212)。
【0098】続いて、テスト区間終了時のプログラム中
の状態が、シナリオに記載した予定している状態と同じ
かどうかを調べ(ステップ1213)、もし、同じであ
れば、「当該テスト項目は合格」として記録し(ステッ
プ1214)、異なれば、「テスト不合格」として記録
する(ステップ1215)。
【0099】そして、すべてのテスト項目が終了したか
否かを判断し(ステップ1216)、リグレッションテ
スト項目がすべて終了し、投入すべきデータがなくなっ
たら、リグレッションテストを終了する。一方、リグレ
ッションテスト項目が残っている場合には、データ復元
部を用いて、プログラム及びOSのデータセグメント及
びスタックセグメントを復元し(ステップ1217)、
ステップ1201に戻る。なお、引き続きリグレッショ
ンテストを実行する場合は、すでにメモリ上にコードセ
グメント内容が存在するため、コードセグメント内容は
復元しない。
【0100】ここで、テスト区間終了時のプログラム中
の状態が、シナリオに記載した予定している状態と同じ
かどうかを調べるステップについて、具体例を用いて説
明する。例えば、プログラム状態を表すために、特定の
変数値を利用している場合については次のように検査す
る。まず、シナリオに記載されている変数名と、シンボ
ル情報テーブルから、プログラムのデータセグメント中
の変数値格納位置(y1)を計算する。次にプロセス制
御部を利用して、計算した位置(y1)のデータ値(y
2)を取得し、これをテストデータ投入部へ転送する。
テストデータ投入部にて、受け取ったデータ値(y2)
を、シナリオに記載されている変数値(y3)と比較す
る。もし、比較結果が正しければ、「当該テスト項目は
合格」として記録し、比較結果が正しくなければ、「テ
スト不合格」として記録する。
【0101】上述したように、本実施形態のプログラム
開発支援装置によれば、テストデータの投入、テスト結
果の比較というリグレッションテストを実施する場合、
コンテキスト保存部とコンテキスト復元部によって、テ
スト区間までのプログラムの実行結果を、自動的に指定
した回数だけ再現することが可能となる。このように、
テスト区間に至るまでのプログラムの動作結果を、プロ
グラムを最初から再実行せずに復元することができるの
で、プログラムの開発作業の効率が大幅に向上する。
【0102】[2−5.コンテキストヒストリー保存処
理]続いて、ヒストリー保存部の動作手順を、図12に
示したフローチャートに従って説明する。
【0103】図6に示したヒストリー保存部24は、O
Sシミュレータ42のシステムコール受け付け部分42
aに、システムコールを受け付けたら、即座に、制御を
ヒストリー保存部24に移動させるような制御コードを
書き込む(ステップ1301)。プログラムを実行し
(ステップ1302)、プログラムがシステムコールを
発行した場合には(ステップ1303)、制御がヒスト
リー保存部に移動する(ステップ1304)。
【0104】ヒストリー保存部24は、プロセス制御部
31及びコンテキスト保存部21を用いて、プログラム
及びOSのコンテキスト(データセグメント及びスタッ
クセグメント)を保存する(ステップ1305)。ヒス
トリー保存部24は、プロセス制御部31に対して、シ
ステムコールを発行したタスク識別子、システムコール
の引き数値及びシステムコール名を取得する命令を発行
する(ステップ1306)。続いて、ヒストリー保存部
24は、プロセス制御部31を通してOSから取得した
タスク識別子、システムコールの引数及びシステムコー
ル名を、システムコール情報として外部記憶部に保存す
る(ステップ1307)。
【0105】ヒストリー保存部24は、リングバッファ
44のデータ書き込み指標45が示す位置に、外部記憶
部上においてコンテキスト保存情報46が格納されてい
る位置と、システムコール情報47が格納されている位
置を書き込む(ステップ1308)。なお、リングバッ
ファ44は、予め複数個の固定値のデータ格納エリアを
持っている。例えば、10個のリングバッファの場合、
11個目のデータは1個目のデータに上書きされる。続
いて、データ書き込み指標を1つ進める(ステップ13
09)。プログラムがすべて終了した場合には、コンテ
キストヒストリー保存処理は終了し、プログラムがすべ
て終了していない場合には、ステップ1302に戻り、
上記の動作をシステムコールが発行されるたびに実施す
る(ステップ1310)。
【0106】[2−6.ヒストリー復元処理]次に、ヒ
ストリー復元部の動作手順を、図13に示したフローチ
ャートに従って説明する。
【0107】図6に示したように、ヒストリー復元部2
5は利用者からの指示により、リングバッファ44が指
し示すシステムコール情報47を取得し、これを利用者
に提示する(ステップ1401)。利用者は提示された
情報から1つを選択し、ヒストリー復元部25に選択し
た値を入力する(ステップ1402)。ヒストリー復元
部25は、与えられた選択値が示すコンテキスト46を
取得する(ステップ1403)。取得したコンテキスト
を、コンテキスト復元部22によって、プログラム及び
OSのデータセグメント及びスタックセグメントに復元
する。
【0108】上述したように、本実施形態のプログラム
開発支援装置によれば、ヒストリー保存部24及びヒス
トリー復元部25によって、システムコールが発行され
る度に、自動的にコンテキストを固定個だけ保存するこ
とができるので、プログラムが予測しない状態になった
ときなど、コンテキストの保存履歴を辿ることによっ
て、通常のテストではほぼ復元不可能な状態を再現する
ことができる。
【0109】[3.効果]以上述べたように、本実施形
態のプログラム開発支援装置によれば、テスト区間に至
るまでのプログラムの動作結果を、プログラムを最初か
ら再実行せずとも復元することができ、また、プログラ
ムをOSシミュレータ上で動作させることにより、ハー
ドウェア設定情報を保存しなくとも、プログラムの特定
区間におけるプログラムの状態を完全に復元することが
できる。
【0110】さらに、プログラムが予め指定したテスト
区間に到達したとき、自動的にプログラムのスナップシ
ョットをとり、論理テストを実施した後、プログラムを
スナップショットをとった状態に復元し、入力データを
変化させて論理テストを実施するといったリグレッショ
ンテストを自動的に行うことができるので、利用者のリ
グレッションテストに掛ける工数を大幅に削減すること
ができる。
【0111】また、プログラムがシステムコールを発行
するたびに、順次、自動的にスナップショットをとり、
コンテキストをその保存履歴と共に保存することがで
き、また、保存したコンテキストを保存履歴を辿ること
によって復元することができるので、プログラムが予測
しない状態になったときなど、通常のテストではほぼ復
元不可能な状態を再現することができる。
【0112】[4.他の実施形態]本発明は、上述した
実施形態に限定されるものではなく、プログラム開発支
援装置を、シミュレーション部20、コンテキスト保存
部21、コンテキスト復元部22及びテストデータ投入
部23とから構成することもできる。なお、この場合
は、コンテキストをその保存履歴と共に保存することは
できないが、テスト区間に至るまでのプログラムの動作
結果を、プログラムを最初から再実行せずとも復元する
ことができ、また、プログラムをシミュレーション手段
上で動作させることにより、ハードウェア設定情報を保
存しなくとも、プログラムの特定区間におけるプログラ
ムの状態を完全に復元することができる。さらに、リグ
レッションテストを自動的に行うこともできるので、利
用者のリグレッションテストに掛ける工数を大幅に削減
することができる。
【0113】
【発明の効果】以上説明したように、本発明のプログラ
ム開発支援装置及びプログラム開発支援方法によれば、
テスト区間に至るまでのプログラムの動作結果を、プロ
グラムを最初から再実行せずに復元することができるプ
ログラム開発支援装置及びプログラム開発支援方法を提
供することができる。また、プログラムをシミュレーシ
ョン手段上で動作させることにより、ハードウェア設定
情報を保存しなくとも、特定区間におけるプログラムの
状態を完全に復元することができるプログラム開発支援
装置及びプログラム開発支援方法を提供することができ
る。
【0114】さらに、予め指定したテスト区間にプログ
ラムが達したとき、自動的にプログラムのスナップショ
ットをとり、論理テストを実施した後、スナップショッ
トをとった状態にプログラムを復元し、入力データを変
化させて論理テストを実施するといったリグレッション
テストを自動的に行うことができるプログラム開発支援
装置及びプログラム開発支援方法を提供することができ
る。
【0115】また、システムコールを発行するたびに、
順次、自動的にスナップショットをとり、コンテキスト
をその保存履歴と共に保存し、保存したコンテキストを
保存履歴に基づいて復元することができるプログラム開
発支援装置及びプログラム開発支援方法を提供すること
ができる。
【図面の簡単な説明】
【図1】本発明のプログラム開発支援装置の一実施形態
の構成を示すブロック図
【図2】シミュレーション部の構成を示す概略図
【図3】コンテキストのデータ内容の一例を示す図
【図4】シミュレーション部のプログラムコード、及び
コンテキストがホストマシン上のメモリに配置される様
子を示す概念図
【図5】テストデータ投入部の構成を示す概略図
【図6】ヒストリー保存部及びヒストリー復元部の構成
を示す概略図
【図7】コンテキスト保存部の動作を示すフローチャー
【図8】コンテキスト保存情報の一例を示す図
【図9】コンテキスト復元部の動作を示すフローチャー
【図10】テストデータ投入部の動作を示すフローチャ
ート
【図11】テストデータ投入とコンテキスト保存/復元
の同期手順を示すフローチャート
【図12】ヒストリー保存部の動作を示すフローチャー
【図13】ヒストリー復元部の動作を示すフローチャー
【図14】組み込みシステムの一例を示す図
【符号の説明】
20…シミュレーション部 21…コンテキスト保存部 22…コンテキスト復元部 23…テストデータ投入部 24…ヒストリー保存部 25…ヒストリー復元部 26…コンテキスト 27…外部記憶部 30…ホストマシン 31…プロセス制御部 32…プログラムローダ 33…シナリオ 34…プログラム 35…アドレス値調整部

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 開発対象プログラムをそのプログラムを
    実装する実システムを模擬した環境で動作させるシミュ
    レーション手段と、 前記シミュレーション手段による開発対象プログラムの
    動作時のある時点における開発対象プログラムのコンテ
    キストとシミュレーション手段のコンテキストとを保存
    するコンテキスト保存手段と、 コンテキストを保存した時点からある時間が経過した後
    に、前記コンテキスト保存手段に保存されているコンテ
    キストを呼び出して、そのコンテキストに基づいて保存
    時点におけるシミュレーション手段と開発対象プログラ
    ムの状態を復元し、プログラムを再スタートさせるコン
    テキスト復元手段と、 前記開発対象プログラムにテストデータを投入すると共
    に、このテストデータの投入タイミングと前記コンテキ
    ストの保存と復元とを同調させるデータ投入手段とを備
    えたことを特徴とするプログラム開発支援装置。
  2. 【請求項2】 前記データ投入手段が、前記コンテキス
    トの保存時点を起点として開発対象プログラムの再スタ
    ートを繰り返し実行させ、各再スタート毎に異なったテ
    ストデータを投入するものである請求項1記載のプログ
    ラム開発支援装置。
  3. 【請求項3】 前記テストデータ投入手段が、その実行
    順序を記述したシナリオに従って動作するものであっ
    て、前記開発対象プログラムがシナリオに指示された状
    態に達した場合にテストデータを所定のデータ領域に書
    き込むものである請求項1記載のプログラム開発支援装
    置。
  4. 【請求項4】 開発対象プログラムがシステムコールを
    発生する都度、その時点におけるシミュレーション手段
    のコンテキストと開発対象プログラムのコンテキストを
    含む履歴データを順次保存するヒストリー保存手段と、
    このヒストリー保存手段によって保存された複数の履歴
    データの中から所望の履歴データを復元して、その時点
    における開発対象プログラム及びシミュレーション手段
    の状態を復元するヒストリー復元手段を備えていること
    を特徴とする請求項1記載のプログラム開発支援装置。
  5. 【請求項5】 前記ヒストリー保存手段が、履歴データ
    を外部記憶手段に保存するものであって、かつ前記外部
    記憶手段におけるデータ格納エリアを書き込むリングバ
    ッファを備え、最新の履歴データから遡って予め決めら
    れた数の履歴データを格納するものである請求項4記載
    のプログラム開発支援装置。
  6. 【請求項6】 開発対象プログラムの動作時において前
    記プログラムをメモリ上の所定の領域に割り当てるプロ
    グラムローダと、前記プログラムの再スタート時におい
    てプログラムローダの割り当て位置を修正するためのア
    ドレス値調整手段が設けられていることを特徴とする請
    求項1または請求項4記載のプログラム開発支援装置。
  7. 【請求項7】 前記シミュレーション手段が、その論理
    動作が開発対象プログラムを実装する実システム上のO
    Sの論理動作と同じになるように構成したOSシミュレ
    ータと、実システムのハードウェアをプログラムで代替
    したスタブを備え、テストの対象となる開発対象プログ
    ラムを前記シミュレーション手段上の一つのタスクとし
    て処理することを特徴とする請求項1または請求項4記
    載のプログラム開発支援装置。
  8. 【請求項8】 前記シミュレーション手段が計時手段を
    備え、この計時手段によって得られた計時データを前記
    コンテキスト保存手段がシミュレーション手段のコンテ
    キストとして保存することを特徴とする請求項7記載の
    プログラム開発支援装置。
  9. 【請求項9】 開発対象プログラムをそのプログラムを
    実装する実システムを模擬したシミュレーション環境で
    動作させ、 前記シミュレーション環境における開発対象プログラム
    の動作時のある時点で、その時点における開発対象プロ
    グラムのコンテキストとシミュレーション環境のコンテ
    キストとを保存し、 コンテキストを保存した時点からある時間が経過した後
    に、保存されているコンテキストを呼び出して、そのコ
    ンテキストに基づいて保存時点におけるシミュレーショ
    ン環境と開発対象プログラムの状態を復元して、その時
    点から開発対象プログラムを再スタートさせ、 再スタートとした状態から再び開発対象プログラムのテ
    ストを実行することを特徴とするプログラム開発支援方
    法。
  10. 【請求項10】 前記保存時点を起点とする開発対象プ
    ログラムの再スタートを繰り返し実行させ、各再スター
    ト毎に異なったテストデータを投入することを特徴とす
    る請求項9記載のプログラム開発支援方法。
  11. 【請求項11】 開発対象プログラムがシステムコール
    を発生する都度、その時点におけるシミュレーション環
    境のコンテキストと開発対象プログラムのコンテキスト
    を含む履歴データを順次保存し、 保存された複数の履歴データの中から所望の履歴データ
    を復元して、その時点における開発対象プログラム及び
    シミュレーション環境の状態を復元し、 復元した状態から再び開発対象プログラムのテストを実
    行することを特徴とする請求項9または請求項10記載
    のプログラム開発支援方法。
  12. 【請求項12】 開発対象プログラムをそのプログラム
    を実装する実システムを模擬したシミュレーション環境
    で動作させ、 前記シミュレーション環境における開発対象プログラム
    の動作時のある時点で、その時点における開発対象プロ
    グラムのコンテキストとシミュレーション環境のコンテ
    キストとを保存し、 コンテキストを保存した時点からある時間が経過した後
    に、保存されているコンテキストを呼び出して、そのコ
    ンテキストに基づいて保存時点におけるシミュレーショ
    ン環境と開発対象プログラムの状態を復元して、その時
    点から開発対象プログラムを再スタートさせ、 この前記保存時点を起点とする開発対象プログラムの再
    スタートを繰り返し実行させ、各再スタート毎に異なっ
    たテストデータを投入することを特徴とするプログラム
    開発支援方法を実現するプログラムを記録した媒体。
  13. 【請求項13】 開発対象プログラムがシステムコール
    を発生する都度、その時点におけるシミュレーション環
    境のコンテキストと開発対象プログラムのコンテキスト
    を含む履歴データを順次保存し、 保存された複数の履歴データの中から所望の履歴データ
    を復元して、その時点における開発対象プログラム及び
    シミュレーション環境の状態を復元し、 復元した状態から再び開発対象プログラムのテストを実
    行することを特徴とする請求項12記載のプログラム開
    発支援方法を実現するプログラムを記録した媒体。
JP10190407A 1998-07-06 1998-07-06 プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 Pending JP2000020349A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10190407A JP2000020349A (ja) 1998-07-06 1998-07-06 プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10190407A JP2000020349A (ja) 1998-07-06 1998-07-06 プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体

Publications (1)

Publication Number Publication Date
JP2000020349A true JP2000020349A (ja) 2000-01-21

Family

ID=16257640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10190407A Pending JP2000020349A (ja) 1998-07-06 1998-07-06 プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体

Country Status (1)

Country Link
JP (1) JP2000020349A (ja)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007039387A1 (en) * 2005-09-26 2007-04-12 International Business Machines Corporation Circuit design verification using checkpointing
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
JP2009129133A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、ソフトウェア部分テスト方法およびソフトウェア部分テスト用プログラム
JP2009129132A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、それに用いる方法およびプログラム
JP2010015596A (ja) * 2002-10-21 2010-01-21 Fisher Rosemount Syst Inc シミュレーションシステムのスナップショットを取得する方法
JP2010102372A (ja) * 2008-10-21 2010-05-06 Toyota Motor Corp データ処理装置、検証システム、データ処理装置検証方法
US7885806B2 (en) 2002-08-19 2011-02-08 Semiconductor Technology Academic Research Center Simulation method and simulation system of instruction scheduling
JP2011100300A (ja) * 2009-11-06 2011-05-19 Mitsubishi Electric Corp 計算機装置及び情報処理方法及びプログラム
JP2011129028A (ja) * 2009-12-21 2011-06-30 Internatl Business Mach Corp <Ibm> 総テスト時間を最小にするようにテストシナリオを最適化するテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラム
JP2013120440A (ja) * 2011-12-06 2013-06-17 Nec Corp テストシステム、テスト方法、及び、プログラム
JP2013196361A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置および時間調整方法
JP2014059909A (ja) * 2008-10-02 2014-04-03 International Business Maschines Corporation 仮想処理環境内のデータの収集を容易にするためのコンピュータ・プログラム、コンピュータによって実行される方法、およびコンピュータ・システム
JP2014510960A (ja) * 2011-01-19 2014-05-01 アルゴトゥチップ コーポレーション ツール・ジェネレータ
WO2015087509A1 (ja) * 2013-12-11 2015-06-18 日本電気株式会社 状態保存復元装置、状態保存復元方法、および、記憶媒体
US9158543B2 (en) 2008-10-02 2015-10-13 International Business Machines Corporation Query sampling information instruction
JP2020021173A (ja) * 2018-07-30 2020-02-06 東芝情報システム株式会社 ディジタル検証支援装置及びディジタル検証支援用プログラム
JP7410004B2 (ja) 2020-09-30 2024-01-09 株式会社日立ソリューションズ シミュレーション方法およびシミュレーションプログラム

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7885806B2 (en) 2002-08-19 2011-02-08 Semiconductor Technology Academic Research Center Simulation method and simulation system of instruction scheduling
JP2010015596A (ja) * 2002-10-21 2010-01-21 Fisher Rosemount Syst Inc シミュレーションシステムのスナップショットを取得する方法
JP2009510554A (ja) * 2005-09-26 2009-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション チェックポインティングを用いた回路設計検証
WO2007039387A1 (en) * 2005-09-26 2007-04-12 International Business Machines Corporation Circuit design verification using checkpointing
JP4848424B2 (ja) * 2005-09-26 2011-12-28 インターナショナル・ビジネス・マシーンズ・コーポレーション チェックポインティングを用いた回路設計検証
CN101273359B (zh) * 2005-09-26 2010-06-16 国际商业机器公司 使用检验指示的电路设计校验
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
US8725485B2 (en) 2007-02-26 2014-05-13 Spansion Llc Simulation method and simulation apparatus
JP2009129132A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、それに用いる方法およびプログラム
JP2009129133A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、ソフトウェア部分テスト方法およびソフトウェア部分テスト用プログラム
US10620877B2 (en) 2008-10-02 2020-04-14 International Business Machines Corporation Managing a collection of data
US10394488B2 (en) 2008-10-02 2019-08-27 International Business Machines Corporation Managing a collection of data
US9880785B2 (en) 2008-10-02 2018-01-30 International Business Machines Corporation Managing a collection of data
US9158543B2 (en) 2008-10-02 2015-10-13 International Business Machines Corporation Query sampling information instruction
JP2014059909A (ja) * 2008-10-02 2014-04-03 International Business Maschines Corporation 仮想処理環境内のデータの収集を容易にするためのコンピュータ・プログラム、コンピュータによって実行される方法、およびコンピュータ・システム
US9652383B2 (en) 2008-10-02 2017-05-16 International Business Machines Corporation Managing a collection of data
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
JP2010102372A (ja) * 2008-10-21 2010-05-06 Toyota Motor Corp データ処理装置、検証システム、データ処理装置検証方法
JP2011100300A (ja) * 2009-11-06 2011-05-19 Mitsubishi Electric Corp 計算機装置及び情報処理方法及びプログラム
US8584095B2 (en) 2009-12-21 2013-11-12 International Business Machines Corporation Test support system, method and computer program product, which optimize test scenarios to minimize total test time
JP2011129028A (ja) * 2009-12-21 2011-06-30 Internatl Business Mach Corp <Ibm> 総テスト時間を最小にするようにテストシナリオを最適化するテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラム
JP2014510960A (ja) * 2011-01-19 2014-05-01 アルゴトゥチップ コーポレーション ツール・ジェネレータ
JP2013120440A (ja) * 2011-12-06 2013-06-17 Nec Corp テストシステム、テスト方法、及び、プログラム
JP2013196361A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置および時間調整方法
WO2015087509A1 (ja) * 2013-12-11 2015-06-18 日本電気株式会社 状態保存復元装置、状態保存復元方法、および、記憶媒体
JPWO2015087509A1 (ja) * 2013-12-11 2017-03-16 日本電気株式会社 状態保存復元装置、状態保存復元方法、および、プログラム
JP2020021173A (ja) * 2018-07-30 2020-02-06 東芝情報システム株式会社 ディジタル検証支援装置及びディジタル検証支援用プログラム
JP7180043B2 (ja) 2018-07-30 2022-11-30 東芝情報システム株式会社 ディジタル検証支援装置及びディジタル検証支援用プログラム
JP7410004B2 (ja) 2020-09-30 2024-01-09 株式会社日立ソリューションズ シミュレーション方法およびシミュレーションプログラム

Similar Documents

Publication Publication Date Title
JP2000020349A (ja) プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体
US5870607A (en) Method and apparatus for selective replay of computer programs
US7409330B2 (en) Method and system for software debugging using a simulator
JP3654910B2 (ja) コンピュータ・システムにおけるエラー訂正方法および装置
US8468501B2 (en) Partial recording of a computer program execution for replay
US6539501B1 (en) Method, system, and program for logging statements to monitor execution of a program
US6668339B1 (en) Microprocessor having a debug interruption function
TWI410864B (zh) 在一處理環境中控制指令執行
US20120011491A1 (en) Efficient recording and replaying of the execution path of a computer program
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
US20010027387A1 (en) Debugging supporting apparatus, debugging supporting method and recording medium readable by computer with its programs recorded thereon
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
JP2008135008A (ja) プログラムモジュール検証方式
JPH1078887A (ja) デバッグシステム及びデバッグ方法
TWI417786B (zh) 幫助一處理環境中之指令執行的方法、系統及程式產品
JPH04112344A (ja) データベースの疑似更新方式
JP4503203B2 (ja) 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム
CN111324948A (zh) 模拟方法及模拟系统
JPS6349851A (ja) シミユレ−シヨンシステム
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JPH05282160A (ja) リアルタイム・シミュレーション開発機構
Wang et al. An effective reversible debugger of cross platform based on virtualization
JP3685288B2 (ja) マイクロプロセッサのエミュレーション方法およびエミュレータ装置
SE524799C2 (sv) Förfarande och dataprogram för debuggning av en programkod
JP2004013506A (ja) プロセッサのダウンロード装置及びその制御方法