JPH03225533A - Copy-on-write reverse execution check system - Google Patents

Copy-on-write reverse execution check system

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
Japanese (ja)
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/en
Publication of JPH03225533A publication Critical patent/JPH03225533A/en
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

PURPOSE:To obtain the copy-on-write reverse execution check system which enables reverse execution by checking altered data, page by page, by using a copy-on-write system. CONSTITUTION:A user selects 21 a check point to obtain an entry from a check point list 22 being outputted currently. The altered data is obtained 23 from an entry result and compared 25 with data in a program 24 to check whether or not the data is requested data. When not, the check point is not a desired check point, so the pointer of a check pointer list 22 is moved, one by one, until the requested check pointer is obtained. Then the user repeats this opera tion until the altered data that the user requests. Namely, a debugger searches a check point list 22. Thus, pages which contain the altered at each constant period are generated to obtain a history of variation of the data in the program.

Description

【発明の詳細な説明】 〔概  要〕 プログラムの難しいミスを効率よく発見するためのコピ
ーオンライト逆実行チェックポイント方式に関し、 −a的な汎用コンピュータ上で稼働されるプログラム言
語のデバッグ、特にReverse Executio
nを可能とするものであって、その為に仮想記憶方式に
基づいて、ページ毎の書き替え、すなわち、コピーオン
ライト方式を用いてページ毎に変更のあったデータをチ
ェックすることによって逆実行を可能とするコピーオン
ライト逆実行チェックポイント方式を提供することを目
的とし、記憶空間を固定されたサイズのページ毎に分割
し、フィジカルなメモリには要求されたページのみを置
き、残りのページは外部記憶装置に退避することにより
、ページ単位毎のスワップを可能とする仮想記憶システ
ムにおいて、プログラムの特定なロケーションにチェッ
クポイントを挿入し、各チェックポイント毎に、適当な
レジスタの内容を退避し、さらにメモリページをコピー
オンライト方式に従ってコピーすると同時にそのチェッ
クポイントをチェックポイントリストに登録する登録手
段と、プログラムを実行した後該チェックポイント毎に
前記登録手段によってコピーされたページとプログラム
が実行された後の同じページの情報とを比較する比較手
段と、前記比較手段の結果生じた変更データをチェック
ポイント毎に前記チェックポイントリストに退避する変
更データ登録手段を有するように構成する。
[Detailed Description of the Invention] [Summary] This invention relates to a copy-on-write reverse execution checkpoint method for efficiently discovering difficult mistakes in programs, and is particularly useful for debugging programming languages run on general-purpose computers such as Reverse. Execution
For this purpose, based on the virtual memory method, it is possible to rewrite each page, that is, reverse execution by checking the changed data for each page using the copy-on-write method. The purpose is to provide a copy-on-write reverse execution checkpointing method that allows for In a virtual memory system that allows page-by-page swapping by saving it to an external storage device, checkpoints are inserted at specific locations in the program, and the contents of appropriate registers are saved at each checkpoint. , further comprising a registration means for copying a memory page according to a copy-on-write method and simultaneously registering the checkpoint in a checkpoint list; and after executing the program, the page and program copied by the registration means are executed for each checkpoint. and a change data registration means for saving changed data generated as a result of the comparing means in the checkpoint list for each checkpoint.

〔産業上の利用分野〕[Industrial application field]

本発明はデバッグクールに係り、更に詳しくはプログラ
ムの難しいミスを効率よく発見するためのコピーオンラ
イト逆実行チェックポイント方式新しいデバッグシステ
ムを供給するためには、実行の進行方向に対して、逆方
向の実行を行うべき、逆実行(Reverse Exe
cution )が重要となる・また、実行の履歴を選
択的にサーチする方式や、データの入れ換え、あるいは
部分的なプログラムの実行を行う事なども重要となる。
The present invention relates to a debugging system, and more specifically, a copy-on-write reverse execution checkpoint method for efficiently discovering difficult mistakes in programs.In order to provide a new debugging system, it is necessary to Reverse Execution (Reverse Execution)
In addition, methods for selectively searching the execution history, data replacement, or partial program execution are also important.

この様な新しいデバッグシステムを構築する場合、もと
もとのオペレーティングシステムを、大きく変更したり
、コストも掛かるようでは意味がない。また、最近のシ
ステム、特にワークステーションではマルチウィンドウ
やメニューを駆動し易いグラフィカルインターフェース
が供給されており、デバッガもこの様なインターフェー
スに整合する形のものであるべきである。そして、適当
なブレイクポイントを設けることによって、実行のフロ
ーを変更することができ、適当なプログラムの領域をト
レースすることが出来、特に逆実行が出来ることが重要
となる。
When building such a new debugging system, there is no point in making major changes to the original operating system or incurring costs. Furthermore, recent systems, especially workstations, are provided with graphical interfaces that facilitate multi-window and menu operation, and debuggers should also be compatible with such interfaces. By setting appropriate breakpoints, the flow of execution can be changed, appropriate areas of the program can be traced, and it is particularly important to be able to perform reverse execution.

〔従来の技術〕[Conventional technology]

従来、このような逆実行はいくつかのプロローグシステ
ムの中では、可能であったけれども、汎用的なデバッグ
システムを目的したものに対しては、全く実行されてい
ないのが現状である。
Conventionally, such reverse execution has been possible in some prologue systems, but currently it has not been performed at all in systems intended as general-purpose debugging systems.

従来のデバッグシステムは、5INGLE−THREA
Dなどのデバッグシステムであって、Reverse 
Executionすなわち、逆実行を実行出来るデバ
ッグシステムはなかった。
The conventional debug system is 5INGLE-THREA
A debug system such as D, Reverse
There was no debugging system that could perform execution, that is, reverse execution.

〔発明が解決しようとする課題〕[Problem to be solved by the invention]

本発明は、−船釣な汎用コンピュータ上で稼働されるプ
ログラム言語のデバッグ、特にReverseExec
utionを可能とするものであって、その為に仮想記
憶方式に基づいて、ページ毎の書き替え、すなわち、コ
ピーオンライト方式を用いてページ毎に変更のあったデ
ータをチェックすることによって逆実行を可能とするコ
ピーオンライト逆実行チェックポイント方式を提供する
ことを目的とする。
The present invention provides debugging of a program language running on a general-purpose computer, especially ReverseExec.
Therefore, based on the virtual memory method, it is possible to rewrite each page, that is, reverse execution by checking the changed data for each page using the copy-on-write method. The purpose of this paper is to provide a copy-on-write reverse execution checkpoint method that enables the following.

〔課題を解決するための手段〕[Means to solve the problem]

本発明は、記憶空間を固定されたサイズのページ毎に分
割し、フィジカルなメモリには要求されたページのみを
置き、残りのページは外部記憶装置に退避することによ
り、ページ単位毎のスワップを可能とする仮想記憶シス
テムを前提とする。
The present invention divides the storage space into pages of a fixed size, stores only the requested pages in physical memory, and saves the remaining pages to an external storage device, thereby eliminating swapping for each page. It is assumed that a virtual memory system is available.

まず、プログラムの特定なロケーションにチェックポイ
ントを挿入し、各チェックポイント毎に、適当なレジス
タの内容を退避し、さらにメモリページをコピーオンラ
イト方式に従ってコピーすると同時にそのチェックポイ
ントをチェックポイントリストに登録する登録手段を有
する。
First, checkpoints are inserted at specific locations in the program, the contents of appropriate registers are saved for each checkpoint, and the memory page is copied using the copy-on-write method, at the same time the checkpoint is registered in the checkpoint list. have a registration means to do so.

次に、プログラムを実行した後該チェックポイント毎に
登録手段によってコピーされたページとプログラムが実
行された後の同じページの情報とを比較する比較手段を
有する。
Next, it has comparison means for comparing the page copied by the registration means for each checkpoint after the program is executed with the information of the same page after the program is executed.

更に、比較手段の結果生じた変更データをチェックポイ
ント毎に前述のチェックポイントリストに退避する変更
データ登録手段を有する。
Furthermore, it has a changed data registration means for saving changed data generated as a result of the comparing means into the aforementioned checkpoint list for each checkpoint.

〔作   用〕[For production]

本発明は仮想記憶システムにおけるページ毎の仮想記憶
システムを用いることにより、チェックポイントを挿入
し、チェックポイント毎のプログラムの実行状態を退避
し、ページ毎のプログラムの実行に対する実行前と後の
比較により、変化したデータを退避すると同時にチェッ
クポイントリストをサーチすることにより、プログラム
上のデータがどのように変化したかという履歴情報をペ
ージ毎にチェックすることを可能とする。
The present invention uses a virtual memory system for each page in the virtual memory system to insert checkpoints, save the execution state of the program at each checkpoint, and compare the before and after execution of the program for each page. By searching the checkpoint list at the same time as saving changed data, it is possible to check historical information on how the data on the program has changed for each page.

〔実  施  例〕〔Example〕

次に本発明の実施例を図面を参照して説明する。 Next, embodiments of the present invention will be described with reference to the drawings.

もし、プログラムが例えば参照してはいけないメモリ領
域にアクセスしたり、あるいは演算においてOで割算す
る場合、異常停止に陥る。この場合、例えばUNIXオ
バレーション・システムなどにおいては、コアイメージ
(CORE  IMAGE)と呼ばれるメモリダンプを
行うことが可能となり、これによりプログラムの状態、
例えばCPU内のワーキングレジスタの内容、あるいは
スタティックな変数のスタック状態などを知ることが可
能となる。従って、ユーザとしてはコアイメージの状態
にあるプログラムを再スタート、すなわちリスタートさ
せることが重要となる。しかも、インテム(INTER
IM)なステイト、すなわち中間状態からりスタートさ
せすることが重要となる。このことは、死んでしまって
いるプログラムを生き返すという概念に基づいて、色々
な中間ポイントからそのプログラムのリバイバルを可能
にすることであり、何処でアブノーマルなターミネーシ
ョンになったかを部分的な領域の実行を行って調べるこ
とである。また、この場合中間ポイントにおける実行状
態を退避することが重要となり、その為には、プログラ
ム上にチェックポイントを挿入することが特に重要とな
る。
If, for example, the program accesses a memory area that should not be referenced or divides by O in an operation, it will stop abnormally. In this case, for example, in UNIX override systems, it is possible to perform a memory dump called a core image, which allows you to check the state of the program,
For example, it is possible to know the contents of the working register in the CPU or the stack status of static variables. Therefore, it is important for the user to restart the program in the core image state. Moreover, INTER
It is important to start from an intermediate state, that is, an intermediate state. This is based on the concept of reviving a dead program, allowing the program to be revived from various intermediate points, and identifying where the abnormal termination occurred in a partial area. It's about doing it and finding out. Furthermore, in this case, it is important to save the execution state at intermediate points, and for this purpose, it is particularly important to insert checkpoints on the program.

本発明はこのチェックポイントを挿入するという概念に
基づき、更に、仮想記憶の概念であるコピーオンライト
の方式に基づいて、ページ毎にチェックポイントを挿入
し、チェックポイント間の実行を、逆実行的に可能にす
るものである。例えば、本発明においては、オプシゴナ
リにチェックポイント挿入時間の間隔を変更することが
可能であり、例えば1/100秒毎にチェックポイント
を挿入することが可能となる。この様な場合、UNIX
システムでは、CCというC言語コンパイラを用いてC
言語で書かれたソースプログラムをオブジェクトファイ
ルにする段階において、チェックポイントを挿入し、し
かもその時間タイミングを1/100秒にするようにセ
ットする。そして、変数変化の履歴の検査時において、
ユーザは、例えばそのソースプログラムのメイン(MA
 I N)の関数内にある特定な変数の値を調べたい場
合には、チェックポイント毎の変数の値をデイスプレィ
上に出すようにすればよいことになる。例えば、そのメ
インプログラムの中の変数Xの値としては、チェックポ
イント#0での値、チェックポイント#1での値、チェ
ックポイント#2におけるXの値などのようにチェック
ポイント毎の値と、そのチェックポイントにおける実行
時間、例えば、ブログラムの実際の実行時間、ユーザが
使ったCPUタイム、あるいはシステムが使ったCPU
タイム等を表示するようにすればよい。このとき、特に
バックアップと再スタートを可能にするように、例えば
、Xという変数が値1000という値になっているとこ
ろから、実行出来るようにする。そのためには、チェッ
クポイントにおける情報を作成することが重要であるり
、しかもチェックポイントにおける逆実行を可能にする
ことが重要となる。
The present invention is based on the concept of inserting checkpoints, and further based on the copy-on-write method, which is a concept of virtual memory, inserts checkpoints for each page, and performs execution between checkpoints in a reverse execution manner. It makes it possible to For example, in the present invention, it is possible to optionally change the checkpoint insertion time interval, and for example, it is possible to insert a checkpoint every 1/100 seconds. In this case, UNIX
The system uses a C language compiler called CC.
At the stage of converting a source program written in a language into an object file, a checkpoint is inserted and the time timing thereof is set to 1/100 seconds. Then, when inspecting the history of variable changes,
The user may, for example, select the main (MA) of the source program.
If you want to check the value of a specific variable within the function I N), you can display the value of the variable at each checkpoint on the display. For example, the value of variable X in the main program includes values for each checkpoint, such as the value at checkpoint #0, the value at checkpoint #1, the value of The execution time at that checkpoint, e.g. the actual execution time of the program, the CPU time used by the user, or the CPU used by the system.
It may be possible to display the time etc. At this time, in order to specifically enable backup and restart, for example, the variable X is set to a value of 1000, so that it can be executed. To this end, it is important to create information at checkpoints, and moreover, it is important to enable reverse execution at checkpoints.

そこで、本発明では実行時にその実行状態を一連のファ
イルに周期的に書き込んでいくという登録機能を持たせ
ている。この登録時に、もしチェックポイントファイル
が非常に大きくなってしまうということは好ましくない
ことであるが、幸い、このファイルの成長は極めて遅い
。中間状態を効率良く退避するためには、本発明では、
まず仮想記憶の概念に類似した考え方をデバッグシステ
ムに導入することにある。
Therefore, the present invention provides a registration function that periodically writes the execution state to a series of files during execution. It would be undesirable if the checkpoint file became very large during this registration, but fortunately this file grows very slowly. In order to efficiently save the intermediate state, in the present invention,
The first step is to introduce an idea similar to the concept of virtual memory into the debugging system.

仮想記憶では、プログラムメモリを固定サイズという単
位に分割し、数ページのみをフィジカルなメモリに置い
て、他の殆どのページを2次記憶装置に格納しておくと
いう概念である。そして、必要になったページのみをフ
ィジカルなメモリに動的に持ってくると同時に、不必要
となったページをその2次記憶装置に持っていくという
コピーオンライトの概念である。
Virtual memory is a concept in which program memory is divided into units of fixed size, with only a few pages stored in physical memory and most other pages stored in secondary storage. The concept of copy-on-write is to dynamically bring only the pages that are needed to the physical memory, and at the same time bring the pages that are no longer needed to the secondary storage device.

このようなコピーオンライトのシステムにおいては、チ
ェックポイントを作り、中間的な実行状態をページ毎の
単位で退避する機能を設けることにより、信転性のある
コンピュータシステムを構築することが出来る。しかも
、そのようなシステムは高度なトランゲアクションシス
テムやデータ・ベースシステムに使用することが可能で
あり、周期的な時間内において変更のあったデータを以
下に示すような簡単な方式を用いてバックアップするこ
とが可能となる。そして、必要なときにはいつでも、変
数の前の状態に戻すことが可能となり、また異常の発生
したエラーの状態からリカバリすることを可能とする。
In such a copy-on-write system, a reliable computer system can be constructed by creating checkpoints and providing a function to save intermediate execution states on a page-by-page basis. Furthermore, such a system can be used in sophisticated transient action systems and data-based systems, where data that has changed in periodic time can be analyzed using a simple method such as the one shown below. It is possible to back up. Then, whenever necessary, it becomes possible to return to the previous state of the variable, and it is also possible to recover from an error state where an abnormality has occurred.

すなわち、プログラムのデバッグ時において、ユーザは
プログラムのローテーションを定義し、そこから逆実行
することができるようにこのプログラムのローテーショ
ンにあたるチェックポイントを設けることが重要である
That is, when debugging a program, it is important for the user to define the rotation of the program and provide a checkpoint corresponding to the rotation of the program so that the program can be executed in reverse from there.

・、第1図は本発明のチェックポイント情報を作成する
ためのフローチャートである。
- FIG. 1 is a flowchart for creating checkpoint information according to the present invention.

まず、チェックポイントを挿入するために、デバッグあ
るいはデバッガの初期時においてプログラムの実行を行
い、挿入されたチェックポイントにおいて、すべてのレ
ジスタ内容を退避するとともに、仮想記憶の概念を使っ
て全てのメモリページをコピーオンライトシステムに従
ってマークする。そして、チェックポイントに関する情
報をFI F O(First In First 0
ut)のリストに入れる。
First, in order to insert a checkpoint, the program is executed during debugging or at the initial stage of the debugger, and at the inserted checkpoint, all register contents are saved, and all memory pages are saved using the concept of virtual memory. Mark according to the copy-on-write system. Then, the information about the checkpoint is stored in FIFO (First In First 0).
ut) list.

そして、プログラムをノーマルな状態で実行する。Then, run the program in normal state.

これがステップSlとステップS2である。尚、全ての
メモリページをマークする場合、コピーオンライトシス
テムの仮想記憶システムを用いると、現在の実行プロセ
スにおけるメモリのロケーションが変化したとしてもペ
ージ毎の管理システムに従って、チェックポイント間の
ページを再実行させることが当然可能となる。そして、
ステップS3において全てのコピーされたページの同定
を取ることも仮想記憶の概念に従って出来るので、コピ
ーされたメモリページと元のページとの比較を行う。す
なわち、プログラムの実行前のページと実行後のページ
との比較をチェックポイント内におけるページ毎に行う
。この比較に従って、変更のあったデータが判るので、
これを変更データとし、チェックポイントリストの中に
退避する。従って、ステップ31.S2,33を繰り返
す事によってチェックポイント内にあるページ毎に変更
のあったデータをセーブすることが可能となる。
These are step Sl and step S2. Note that when marking all memory pages, if you use a copy-on-write virtual memory system, the pages between checkpoints will be rewritten according to the page-by-page management system even if the memory location in the currently executing process changes. Of course, it is possible to execute it. and,
In step S3, all the copied pages can be identified according to the concept of virtual memory, so the copied memory pages and the original pages are compared. That is, a comparison is made between the page before the program is executed and the page after the program is executed for each page within the checkpoint. According to this comparison, you can see which data has changed, so
This is treated as changed data and saved in the checkpoint list. Therefore, step 31. By repeating S2 and S33, it becomes possible to save changed data for each page within the checkpoint.

第2図はチェックポイント情報に基づいて、逆実行を行
うためのフローチャートである。
FIG. 2 is a flowchart for performing reverse execution based on checkpoint information.

第2図に示されるように、ユーザからのバックアップす
べきチェックポイントの要求に従って(S4)、まずチ
ェックポイントリストからエントリーを獲得する(S5
)。このエントリー内容からデータを引き出しくS6)
、これがもし望まれるチェックポイントであるならば(
S7)、そこから引き出し、そうでない場合に次のチェ
ックポイントからのエントリーを抜き出す動作に戻るこ
とになる。このようなルーチンを繰り返すことにより、
望まれたチェックポイントにおける要求されたデータを
引き出すことが出来る。これが逆実行の原理である。
As shown in FIG. 2, in accordance with the user's request for checkpoints to be backed up (S4), an entry is first acquired from the checkpoint list (S5).
). Pull out data from this entry content S6)
, if this is the desired checkpoint (
S7), and if not, return to the operation of extracting the entry from the next checkpoint. By repeating this routine,
The requested data at the desired checkpoint can be retrieved. This is the principle of reverse execution.

第3図はチェックポイント情報を生成するためのシステ
ムのブロック図である。
FIG. 3 is a block diagram of a system for generating checkpoint information.

同図において1はプログラム、2はデバッガであり、こ
の内部はレジスタのセーブする部分3、全てのメモリペ
ージをコピーオンライトでセットする部分4、チェック
ポイントをチェックリストに入れる部分5がある。そし
て、第3図に示されるように、チェックポイント毎にレ
ジスタ内容をセーブしコピーオンライト方式に従って全
てのメモリページをマークし、チェックポイントをチェ
ックポイントリストに入れた後、プログラムを実行し、
その後チェックポイント毎にコピーされたページ毎に実
行後のオリジナルページとを比較する。その為にプログ
ラムとマージ6し、その結果によって変化のあったデー
タをチェックポイント毎に退避する処理が必要となる。
In the figure, 1 is a program, and 2 is a debugger, which includes a part 3 for saving registers, a part 4 for setting all memory pages by copy-on-write, and a part 5 for putting checkpoints in a checklist. Then, as shown in Fig. 3, the register contents are saved at each checkpoint, all memory pages are marked according to the copy-on-write method, and the checkpoint is placed in the checkpoint list, and then the program is executed.
Thereafter, each page copied at each checkpoint is compared with the original page after execution. For this reason, it is necessary to perform a process of merging 6 the program and saving data that has changed depending on the result at each checkpoint.

また、チェックポイントリストアにチェックポイントの
位置8のデータを退避し、チェックポイント毎にコピー
されたメモリページを見つけ9、メモリページすなわち
プログラムを実行した後のページとを比較し10、変更
された変更データをチェックポイントリストにセーブす
る11゜下側のシステムは、オペレーティングシステム
であり、これがページ毎に管理する仮想記憶システムで
あり、ページ毎のスワップを行う為のO3である。
Also, save the data at checkpoint position 8 to checkpoint restore, find the memory page copied for each checkpoint, compare it with the memory page, that is, the page after executing the program, and check the changes that have been made. The system at the bottom of 11 degrees that saves data in the checkpoint list is the operating system, which is a virtual storage system that manages each page, and O3 for performing swaps for each page.

第4図はチェックポイント情報に基づくチェック方式の
ブロック図ある。
FIG. 4 is a block diagram of a checking method based on checkpoint information.

同図において全ての部分はデバッグシステム内に存在す
る。まず、ユーザはチェックポイントを選択21する。
In the figure, all parts exist within the debug system. First, the user selects 21 a checkpoint.

そして、現在出力されているチェックポイントリスト2
2からのエントリーを取得し、そのエントリー結果から
変更データを引き出す23ことにより、そのデータとプ
ログラム24上でのデータとを比較25して要求データ
であるかどうかをチェックする。チェックしたデータが
要求されたデータでなければ、それは望まれるチェック
ポイントでないので、要求されたチェックポイントにな
るまで、チェックポイントリストのポインタを1つずつ
移動させ、ユーザが要求した変更データを見つけるまで
繰り返すことになる。
And the currently output checkpoint list 2
By acquiring the entry from 2 and extracting changed data 23 from the entry result, the data is compared 25 with the data on the program 24 to check whether it is the requested data. If the checked data is not the requested data, it is not the desired checkpoint, so move the pointer in the checkpoint list one by one until you reach the requested checkpoint, until you find the changed data requested by the user. It will be repeated.

すなわち、デバッガはチェックポイントリストをサーチ
することになる。
That is, the debugger will search the checkpoint list.

このように本発明では、一定周期毎に変化したデータを
含んでいるページを生成することが可能である。従って
、本発明ではプログラム上でのデータの変化に対する履
歴をとることが可能となる。
In this way, according to the present invention, it is possible to generate a page that includes data that changes at regular intervals. Therefore, according to the present invention, it is possible to keep a history of changes in data on a program.

〔発明の効果〕〔Effect of the invention〕

本発明によれば、プログラム上のエラーが観測された後
、完全かつ高速なデバッグを実行することヲ可能とし、
しかも、エラーが生じる前のポイントからバックアップ
することを可能とするような、プログラムの逆実行を可
能とする。このことにより、エラーの原因が何であった
かを即座に見つけることが可能となる。
According to the present invention, it is possible to perform complete and high-speed debugging after an error in a program is observed.
Moreover, it allows for reverse execution of the program, allowing backup from a point before the error occurred. This makes it possible to immediately find out what was the cause of the error.

【図面の簡単な説明】[Brief explanation of drawings]

第1図は、チェックポイント情報生成のフローチャート
を示す図、 第2図は、チェックポイント情報に基づいた逆実行のた
めのフローチャートを示す図、第3図は、チェックポイ
ント情報生成のブロック図、 第4図は、チェックポイント情報による逆実行のブロッ
ク図である。 1・・・プログラム、 2・・・デバッガ。
FIG. 1 is a flowchart for generating checkpoint information, FIG. 2 is a flowchart for reverse execution based on checkpoint information, and FIG. 3 is a block diagram for generating checkpoint information. FIG. 4 is a block diagram of reverse execution using checkpoint information. 1...Program, 2...Debugger.

Claims (1)

【特許請求の範囲】 1)記憶空間を固定されたサイズのページ毎に分割し、
フィジカルなメモリには要求されたページのみを置き、
残りのページは外部記憶装置に退避することにより、ペ
ージ単位毎のスワップを可能とする仮想記憶システムに
おいて、 プログラムの特定なロケーションにチェックポイントを
挿入し、各チェックポイント毎に、適当なレジスタの内
容を退避し、さらにメモリページをコピーオンライト方
式に従ってコピーすると同時にそのチェックポイントを
チェックポイントリストに登録する登録手段と、 プログラムを実行した後該チェックポイント毎に前記登
録手段によってコピーされたページとプログラムが実行
された後の同じページの情報とを比較する比較手段と、 前記比較手段の結果生じた変更データをチェックポイン
ト毎に前記チェックポイントリストに退避する変更デー
タ登録手段を有することを特徴とするコピーオンライト
逆実行チェックポイント方式。 2)ユーザからの要求に従って要求されたチェックポイ
ントに対して、前記チェックポイントリストからエント
リーを獲得し、前記エントリー内のデータを読み出すデ
ータ読み出し手段と、前記読み出したデータが望まれる
チェックポイントのデータであるかどうかをチェックす
るチェック手段と、 前記チェックポイントがユーザによって要求されたチェ
ックポイントでない場合には、前記チェックポイントリ
ストのエントリーを得る動作を実行し、更にそのエント
リーからデータを読み出す動作を繰り返し実行し、もし
前記チェック手段において望まれるチェックポイントで
あれば、その読み出されたデータが指定チェックポイン
トにおけるデータと判断する判断手段を有し、チェック
ポイントの情報に基づいて逆実行を行うことを可能とす
るコピーオンライト逆実行チェックポイント方式。
[Claims] 1) Divide the storage space into pages of fixed size,
Only the requested pages are placed in physical memory,
In a virtual memory system that enables page-by-page swapping by saving the remaining pages to an external storage device, checkpoints are inserted at specific locations in the program, and the contents of appropriate registers are inserted at each checkpoint. a registration means for saving a memory page according to a copy-on-write method and registering the checkpoint in a checkpoint list at the same time; and a page and program copied by the registration means for each checkpoint after executing the program. The present invention is characterized by comprising: a comparison means for comparing information on the same page after the above has been executed; and a change data registration means for saving changed data resulting from the comparison means into the checkpoint list for each checkpoint. Copy-on-write reverse checkpoint method. 2) data reading means for acquiring an entry from the checkpoint list and reading data in the entry for a checkpoint requested in accordance with a request from a user; and the readout data is data of a desired checkpoint. checking means for checking whether there is a checkpoint, and if the checkpoint is not the checkpoint requested by the user, repeatedly performing an operation of obtaining an entry in the checkpoint list and further reading data from the entry. However, if the checkpoint is a desired checkpoint in the checking means, it has a judgment means that judges that the read data is data at the specified checkpoint, and it is possible to perform reverse execution based on the checkpoint information. Copy-on-write reverse execution checkpoint method.
JP2019222A 1990-01-31 1990-01-31 Copy-on-write reverse execution check system Pending JPH03225533A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019222A JPH03225533A (en) 1990-01-31 1990-01-31 Copy-on-write reverse execution check system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019222A JPH03225533A (en) 1990-01-31 1990-01-31 Copy-on-write reverse execution check system

Publications (1)

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

Family

ID=11993343

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019222A Pending JPH03225533A (en) 1990-01-31 1990-01-31 Copy-on-write reverse execution check system

Country Status (1)

Country Link
JP (1) JPH03225533A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250208A (en) * 1992-03-10 1993-09-28 Fujitsu Ltd Program reexecution processing system
JP2010539577A (en) * 2007-09-14 2010-12-16 エアバス オペレーションズ (エスアーエス) Method for processing the amount of information handled during the debug phase of airborne operations software and device for implementing the method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250208A (en) * 1992-03-10 1993-09-28 Fujitsu Ltd Program reexecution processing system
JP2010539577A (en) * 2007-09-14 2010-12-16 エアバス オペレーションズ (エスアーエス) Method for processing the amount of information handled during the debug phase of airborne operations software and device for implementing the method

Similar Documents

Publication Publication Date Title
US11243871B2 (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
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
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
US6678883B1 (en) Apparatus and method for creating a trace file for a trace of a computer program based on loaded module information
US6988263B1 (en) Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
US6981243B1 (en) Method and apparatus to debug a program from a predetermined starting point
US8752020B2 (en) System and process for debugging object-oriented programming code leveraging runtime metadata
Johnson Some requirements for architectural support of software debugging
US20050125776A1 (en) Determining the possibility of adverse effects arising from a code change
Napper et al. A fault-tolerant java virtual machine
US6738778B1 (en) Method and apparatus for monitoring the execution of a program
US6256751B1 (en) Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US8819641B1 (en) Program state reversing software development tool
CA2492367C (en) Data processing system
JPH03225533A (en) Copy-on-write reverse execution check system
Sudsee et al. An improvement of a checkpoint-based distributed testing technique on a big data environment
Lynd Living with the 2-digit year-Year 2000 maintenance using a procedural solution
JP2001166966A (en) Method for managing execution environment of program to be tested in debugger
Banda Design of a nominterfering debugger for embedded real-time
Widjaja et al. Visualisation of Concurrent and Object-Oriented Programs
Alpern et al. A Debugging Platform for Java Server Applications