JPH03225533A - コピーオンライト逆実行チェックポイント方式 - Google Patents

コピーオンライト逆実行チェックポイント方式

Info

Publication number
JPH03225533A
JPH03225533A JP2019222A JP1922290A JPH03225533A JP H03225533 A JPH03225533 A JP H03225533A JP 2019222 A JP2019222 A JP 2019222A JP 1922290 A JP1922290 A JP 1922290A JP H03225533 A JPH03225533 A JP H03225533A
Authority
JP
Japan
Prior art keywords
checkpoint
data
page
program
copy
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
JP2019222A
Other languages
English (en)
Inventor
Maaku Fuerudoman
フェルドマン・マーク
Shinji Sumimoto
真司 住元
Mitsuhiro Kishimoto
岸本 光弘
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019222A priority Critical patent/JPH03225533A/ja
Publication of JPH03225533A publication Critical patent/JPH03225533A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概  要〕 プログラムの難しいミスを効率よく発見するためのコピ
ーオンライト逆実行チェックポイント方式に関し、 −a的な汎用コンピュータ上で稼働されるプログラム言
語のデバッグ、特にReverse Executio
nを可能とするものであって、その為に仮想記憶方式に
基づいて、ページ毎の書き替え、すなわち、コピーオン
ライト方式を用いてページ毎に変更のあったデータをチ
ェックすることによって逆実行を可能とするコピーオン
ライト逆実行チェックポイント方式を提供することを目
的とし、記憶空間を固定されたサイズのページ毎に分割
し、フィジカルなメモリには要求されたページのみを置
き、残りのページは外部記憶装置に退避することにより
、ページ単位毎のスワップを可能とする仮想記憶システ
ムにおいて、プログラムの特定なロケーションにチェッ
クポイントを挿入し、各チェックポイント毎に、適当な
レジスタの内容を退避し、さらにメモリページをコピー
オンライト方式に従ってコピーすると同時にそのチェッ
クポイントをチェックポイントリストに登録する登録手
段と、プログラムを実行した後該チェックポイント毎に
前記登録手段によってコピーされたページとプログラム
が実行された後の同じページの情報とを比較する比較手
段と、前記比較手段の結果生じた変更データをチェック
ポイント毎に前記チェックポイントリストに退避する変
更データ登録手段を有するように構成する。
〔産業上の利用分野〕
本発明はデバッグクールに係り、更に詳しくはプログラ
ムの難しいミスを効率よく発見するためのコピーオンラ
イト逆実行チェックポイント方式新しいデバッグシステ
ムを供給するためには、実行の進行方向に対して、逆方
向の実行を行うべき、逆実行(Reverse Exe
cution )が重要となる・また、実行の履歴を選
択的にサーチする方式や、データの入れ換え、あるいは
部分的なプログラムの実行を行う事なども重要となる。
この様な新しいデバッグシステムを構築する場合、もと
もとのオペレーティングシステムを、大きく変更したり
、コストも掛かるようでは意味がない。また、最近のシ
ステム、特にワークステーションではマルチウィンドウ
やメニューを駆動し易いグラフィカルインターフェース
が供給されており、デバッガもこの様なインターフェー
スに整合する形のものであるべきである。そして、適当
なブレイクポイントを設けることによって、実行のフロ
ーを変更することができ、適当なプログラムの領域をト
レースすることが出来、特に逆実行が出来ることが重要
となる。
〔従来の技術〕
従来、このような逆実行はいくつかのプロローグシステ
ムの中では、可能であったけれども、汎用的なデバッグ
システムを目的したものに対しては、全く実行されてい
ないのが現状である。
従来のデバッグシステムは、5INGLE−THREA
Dなどのデバッグシステムであって、Reverse 
Executionすなわち、逆実行を実行出来るデバ
ッグシステムはなかった。
〔発明が解決しようとする課題〕
本発明は、−船釣な汎用コンピュータ上で稼働されるプ
ログラム言語のデバッグ、特にReverseExec
utionを可能とするものであって、その為に仮想記
憶方式に基づいて、ページ毎の書き替え、すなわち、コ
ピーオンライト方式を用いてページ毎に変更のあったデ
ータをチェックすることによって逆実行を可能とするコ
ピーオンライト逆実行チェックポイント方式を提供する
ことを目的とする。
〔課題を解決するための手段〕
本発明は、記憶空間を固定されたサイズのページ毎に分
割し、フィジカルなメモリには要求されたページのみを
置き、残りのページは外部記憶装置に退避することによ
り、ページ単位毎のスワップを可能とする仮想記憶シス
テムを前提とする。
まず、プログラムの特定なロケーションにチェックポイ
ントを挿入し、各チェックポイント毎に、適当なレジス
タの内容を退避し、さらにメモリページをコピーオンラ
イト方式に従ってコピーすると同時にそのチェックポイ
ントをチェックポイントリストに登録する登録手段を有
する。
次に、プログラムを実行した後該チェックポイント毎に
登録手段によってコピーされたページとプログラムが実
行された後の同じページの情報とを比較する比較手段を
有する。
更に、比較手段の結果生じた変更データをチェックポイ
ント毎に前述のチェックポイントリストに退避する変更
データ登録手段を有する。
〔作   用〕
本発明は仮想記憶システムにおけるページ毎の仮想記憶
システムを用いることにより、チェックポイントを挿入
し、チェックポイント毎のプログラムの実行状態を退避
し、ページ毎のプログラムの実行に対する実行前と後の
比較により、変化したデータを退避すると同時にチェッ
クポイントリストをサーチすることにより、プログラム
上のデータがどのように変化したかという履歴情報をペ
ージ毎にチェックすることを可能とする。
〔実  施  例〕
次に本発明の実施例を図面を参照して説明する。
もし、プログラムが例えば参照してはいけないメモリ領
域にアクセスしたり、あるいは演算においてOで割算す
る場合、異常停止に陥る。この場合、例えばUNIXオ
バレーション・システムなどにおいては、コアイメージ
(CORE  IMAGE)と呼ばれるメモリダンプを
行うことが可能となり、これによりプログラムの状態、
例えばCPU内のワーキングレジスタの内容、あるいは
スタティックな変数のスタック状態などを知ることが可
能となる。従って、ユーザとしてはコアイメージの状態
にあるプログラムを再スタート、すなわちリスタートさ
せることが重要となる。しかも、インテム(INTER
IM)なステイト、すなわち中間状態からりスタートさ
せすることが重要となる。このことは、死んでしまって
いるプログラムを生き返すという概念に基づいて、色々
な中間ポイントからそのプログラムのリバイバルを可能
にすることであり、何処でアブノーマルなターミネーシ
ョンになったかを部分的な領域の実行を行って調べるこ
とである。また、この場合中間ポイントにおける実行状
態を退避することが重要となり、その為には、プログラ
ム上にチェックポイントを挿入することが特に重要とな
る。
本発明はこのチェックポイントを挿入するという概念に
基づき、更に、仮想記憶の概念であるコピーオンライト
の方式に基づいて、ページ毎にチェックポイントを挿入
し、チェックポイント間の実行を、逆実行的に可能にす
るものである。例えば、本発明においては、オプシゴナ
リにチェックポイント挿入時間の間隔を変更することが
可能であり、例えば1/100秒毎にチェックポイント
を挿入することが可能となる。この様な場合、UNIX
システムでは、CCというC言語コンパイラを用いてC
言語で書かれたソースプログラムをオブジェクトファイ
ルにする段階において、チェックポイントを挿入し、し
かもその時間タイミングを1/100秒にするようにセ
ットする。そして、変数変化の履歴の検査時において、
ユーザは、例えばそのソースプログラムのメイン(MA
 I N)の関数内にある特定な変数の値を調べたい場
合には、チェックポイント毎の変数の値をデイスプレィ
上に出すようにすればよいことになる。例えば、そのメ
インプログラムの中の変数Xの値としては、チェックポ
イント#0での値、チェックポイント#1での値、チェ
ックポイント#2におけるXの値などのようにチェック
ポイント毎の値と、そのチェックポイントにおける実行
時間、例えば、ブログラムの実際の実行時間、ユーザが
使ったCPUタイム、あるいはシステムが使ったCPU
タイム等を表示するようにすればよい。このとき、特に
バックアップと再スタートを可能にするように、例えば
、Xという変数が値1000という値になっているとこ
ろから、実行出来るようにする。そのためには、チェッ
クポイントにおける情報を作成することが重要であるり
、しかもチェックポイントにおける逆実行を可能にする
ことが重要となる。
そこで、本発明では実行時にその実行状態を一連のファ
イルに周期的に書き込んでいくという登録機能を持たせ
ている。この登録時に、もしチェックポイントファイル
が非常に大きくなってしまうということは好ましくない
ことであるが、幸い、このファイルの成長は極めて遅い
。中間状態を効率良く退避するためには、本発明では、
まず仮想記憶の概念に類似した考え方をデバッグシステ
ムに導入することにある。
仮想記憶では、プログラムメモリを固定サイズという単
位に分割し、数ページのみをフィジカルなメモリに置い
て、他の殆どのページを2次記憶装置に格納しておくと
いう概念である。そして、必要になったページのみをフ
ィジカルなメモリに動的に持ってくると同時に、不必要
となったページをその2次記憶装置に持っていくという
コピーオンライトの概念である。
このようなコピーオンライトのシステムにおいては、チ
ェックポイントを作り、中間的な実行状態をページ毎の
単位で退避する機能を設けることにより、信転性のある
コンピュータシステムを構築することが出来る。しかも
、そのようなシステムは高度なトランゲアクションシス
テムやデータ・ベースシステムに使用することが可能で
あり、周期的な時間内において変更のあったデータを以
下に示すような簡単な方式を用いてバックアップするこ
とが可能となる。そして、必要なときにはいつでも、変
数の前の状態に戻すことが可能となり、また異常の発生
したエラーの状態からリカバリすることを可能とする。
すなわち、プログラムのデバッグ時において、ユーザは
プログラムのローテーションを定義し、そこから逆実行
することができるようにこのプログラムのローテーショ
ンにあたるチェックポイントを設けることが重要である
・、第1図は本発明のチェックポイント情報を作成する
ためのフローチャートである。
まず、チェックポイントを挿入するために、デバッグあ
るいはデバッガの初期時においてプログラムの実行を行
い、挿入されたチェックポイントにおいて、すべてのレ
ジスタ内容を退避するとともに、仮想記憶の概念を使っ
て全てのメモリページをコピーオンライトシステムに従
ってマークする。そして、チェックポイントに関する情
報をFI F O(First In First 0
ut)のリストに入れる。
そして、プログラムをノーマルな状態で実行する。
これがステップSlとステップS2である。尚、全ての
メモリページをマークする場合、コピーオンライトシス
テムの仮想記憶システムを用いると、現在の実行プロセ
スにおけるメモリのロケーションが変化したとしてもペ
ージ毎の管理システムに従って、チェックポイント間の
ページを再実行させることが当然可能となる。そして、
ステップS3において全てのコピーされたページの同定
を取ることも仮想記憶の概念に従って出来るので、コピ
ーされたメモリページと元のページとの比較を行う。す
なわち、プログラムの実行前のページと実行後のページ
との比較をチェックポイント内におけるページ毎に行う
。この比較に従って、変更のあったデータが判るので、
これを変更データとし、チェックポイントリストの中に
退避する。従って、ステップ31.S2,33を繰り返
す事によってチェックポイント内にあるページ毎に変更
のあったデータをセーブすることが可能となる。
第2図はチェックポイント情報に基づいて、逆実行を行
うためのフローチャートである。
第2図に示されるように、ユーザからのバックアップす
べきチェックポイントの要求に従って(S4)、まずチ
ェックポイントリストからエントリーを獲得する(S5
)。このエントリー内容からデータを引き出しくS6)
、これがもし望まれるチェックポイントであるならば(
S7)、そこから引き出し、そうでない場合に次のチェ
ックポイントからのエントリーを抜き出す動作に戻るこ
とになる。このようなルーチンを繰り返すことにより、
望まれたチェックポイントにおける要求されたデータを
引き出すことが出来る。これが逆実行の原理である。
第3図はチェックポイント情報を生成するためのシステ
ムのブロック図である。
同図において1はプログラム、2はデバッガであり、こ
の内部はレジスタのセーブする部分3、全てのメモリペ
ージをコピーオンライトでセットする部分4、チェック
ポイントをチェックリストに入れる部分5がある。そし
て、第3図に示されるように、チェックポイント毎にレ
ジスタ内容をセーブしコピーオンライト方式に従って全
てのメモリページをマークし、チェックポイントをチェ
ックポイントリストに入れた後、プログラムを実行し、
その後チェックポイント毎にコピーされたページ毎に実
行後のオリジナルページとを比較する。その為にプログ
ラムとマージ6し、その結果によって変化のあったデー
タをチェックポイント毎に退避する処理が必要となる。
また、チェックポイントリストアにチェックポイントの
位置8のデータを退避し、チェックポイント毎にコピー
されたメモリページを見つけ9、メモリページすなわち
プログラムを実行した後のページとを比較し10、変更
された変更データをチェックポイントリストにセーブす
る11゜下側のシステムは、オペレーティングシステム
であり、これがページ毎に管理する仮想記憶システムで
あり、ページ毎のスワップを行う為のO3である。
第4図はチェックポイント情報に基づくチェック方式の
ブロック図ある。
同図において全ての部分はデバッグシステム内に存在す
る。まず、ユーザはチェックポイントを選択21する。
そして、現在出力されているチェックポイントリスト2
2からのエントリーを取得し、そのエントリー結果から
変更データを引き出す23ことにより、そのデータとプ
ログラム24上でのデータとを比較25して要求データ
であるかどうかをチェックする。チェックしたデータが
要求されたデータでなければ、それは望まれるチェック
ポイントでないので、要求されたチェックポイントにな
るまで、チェックポイントリストのポインタを1つずつ
移動させ、ユーザが要求した変更データを見つけるまで
繰り返すことになる。
すなわち、デバッガはチェックポイントリストをサーチ
することになる。
このように本発明では、一定周期毎に変化したデータを
含んでいるページを生成することが可能である。従って
、本発明ではプログラム上でのデータの変化に対する履
歴をとることが可能となる。
〔発明の効果〕
本発明によれば、プログラム上のエラーが観測された後
、完全かつ高速なデバッグを実行することヲ可能とし、
しかも、エラーが生じる前のポイントからバックアップ
することを可能とするような、プログラムの逆実行を可
能とする。このことにより、エラーの原因が何であった
かを即座に見つけることが可能となる。
【図面の簡単な説明】
第1図は、チェックポイント情報生成のフローチャート
を示す図、 第2図は、チェックポイント情報に基づいた逆実行のた
めのフローチャートを示す図、第3図は、チェックポイ
ント情報生成のブロック図、 第4図は、チェックポイント情報による逆実行のブロッ
ク図である。 1・・・プログラム、 2・・・デバッガ。

Claims (1)

  1. 【特許請求の範囲】 1)記憶空間を固定されたサイズのページ毎に分割し、
    フィジカルなメモリには要求されたページのみを置き、
    残りのページは外部記憶装置に退避することにより、ペ
    ージ単位毎のスワップを可能とする仮想記憶システムに
    おいて、 プログラムの特定なロケーションにチェックポイントを
    挿入し、各チェックポイント毎に、適当なレジスタの内
    容を退避し、さらにメモリページをコピーオンライト方
    式に従ってコピーすると同時にそのチェックポイントを
    チェックポイントリストに登録する登録手段と、 プログラムを実行した後該チェックポイント毎に前記登
    録手段によってコピーされたページとプログラムが実行
    された後の同じページの情報とを比較する比較手段と、 前記比較手段の結果生じた変更データをチェックポイン
    ト毎に前記チェックポイントリストに退避する変更デー
    タ登録手段を有することを特徴とするコピーオンライト
    逆実行チェックポイント方式。 2)ユーザからの要求に従って要求されたチェックポイ
    ントに対して、前記チェックポイントリストからエント
    リーを獲得し、前記エントリー内のデータを読み出すデ
    ータ読み出し手段と、前記読み出したデータが望まれる
    チェックポイントのデータであるかどうかをチェックす
    るチェック手段と、 前記チェックポイントがユーザによって要求されたチェ
    ックポイントでない場合には、前記チェックポイントリ
    ストのエントリーを得る動作を実行し、更にそのエント
    リーからデータを読み出す動作を繰り返し実行し、もし
    前記チェック手段において望まれるチェックポイントで
    あれば、その読み出されたデータが指定チェックポイン
    トにおけるデータと判断する判断手段を有し、チェック
    ポイントの情報に基づいて逆実行を行うことを可能とす
    るコピーオンライト逆実行チェックポイント方式。
JP2019222A 1990-01-31 1990-01-31 コピーオンライト逆実行チェックポイント方式 Pending JPH03225533A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019222A JPH03225533A (ja) 1990-01-31 1990-01-31 コピーオンライト逆実行チェックポイント方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019222A JPH03225533A (ja) 1990-01-31 1990-01-31 コピーオンライト逆実行チェックポイント方式

Publications (1)

Publication Number Publication Date
JPH03225533A true JPH03225533A (ja) 1991-10-04

Family

ID=11993343

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019222A Pending JPH03225533A (ja) 1990-01-31 1990-01-31 コピーオンライト逆実行チェックポイント方式

Country Status (1)

Country Link
JP (1) JPH03225533A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250208A (ja) * 1992-03-10 1993-09-28 Fujitsu Ltd プログラム再実行処理方式
JP2010539577A (ja) * 2007-09-14 2010-12-16 エアバス オペレーションズ (エスアーエス) 航空機搭載のオペレーション・ソフトウェアのデバッグ・フェーズ中に扱われる情報の量を処理するための方法およびその方法を実施するためのデバイス

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250208A (ja) * 1992-03-10 1993-09-28 Fujitsu Ltd プログラム再実行処理方式
JP2010539577A (ja) * 2007-09-14 2010-12-16 エアバス オペレーションズ (エスアーエス) 航空機搭載のオペレーション・ソフトウェアのデバッグ・フェーズ中に扱われる情報の量を処理するための方法およびその方法を実施するためのデバイス

Similar Documents

Publication Publication Date Title
US12346238B2 (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
Feldman et al. Igor: A system for program debugging via reversible execution
US6854108B1 (en) Method and apparatus for deterministic replay of java multithreaded programs on multiprocessors
US5603020A (en) Method for detecting file names by informing the task of the identification of the directory antecedent to the file
US7150006B2 (en) Techniques for managed code debugging
EP0250847B1 (en) Managing log data in a transaction-oriented system
US6981243B1 (en) Method and apparatus to debug a program from a predetermined starting point
US6047390A (en) Multiple context software analysis
CN101446918B (zh) 一种实现用户态调试器调试单个函数的方法及系统
US6766511B1 (en) Apparatus and method for performing symbolic resolution of modules using static representations of a trace
US5799143A (en) Multiple context software analysis
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
US8752020B2 (en) System and process for debugging object-oriented programming code leveraging runtime metadata
Johnson Some requirements for architectural support of software debugging
US6256751B1 (en) Restoring checkpointed processes without restoring attributes of external data referenced by the processes
JPH03225533A (ja) コピーオンライト逆実行チェックポイント方式
Sudsee et al. An improvement of a checkpoint-based distributed testing technique on a big data environment
JP2001166966A (ja) デバッガにおける被テストプログラムの実行環境管理方法
CN120848982A (zh) 一种基于脚本引擎的可视化api应用接口热加载方法及系统
Widjaja et al. Visualisation of Concurrent and Object-Oriented Programs
Banda Design of a nominterfering debugger for embedded real-time
Riesen 2 Questions About Memory Models and Consistency
Marndani il~ HTZt: er
JPH05189276A (ja) 排他制御履歴取得方式
JPS63189950A (ja) アボ−トダンプ解析処理方式