JPH05181712A - スタック履歴作成方式 - Google Patents

スタック履歴作成方式

Info

Publication number
JPH05181712A
JPH05181712A JP3358089A JP35808991A JPH05181712A JP H05181712 A JPH05181712 A JP H05181712A JP 3358089 A JP3358089 A JP 3358089A JP 35808991 A JP35808991 A JP 35808991A JP H05181712 A JPH05181712 A JP H05181712A
Authority
JP
Japan
Prior art keywords
stack
stack pointer
procedure
pointer
monitor
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
JP3358089A
Other languages
English (en)
Inventor
Makoto Tsuda
誠 津田
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 Solution Innovators Ltd
Original Assignee
NEC Software Hokuriku 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 Software Hokuriku Ltd filed Critical NEC Software Hokuriku Ltd
Priority to JP3358089A priority Critical patent/JPH05181712A/ja
Publication of JPH05181712A publication Critical patent/JPH05181712A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 モニタのスタック履歴作成方式においてモニ
タの個々のプロシージャの呼び出し毎に確保されるスタ
ックの境界を示すスタックポインタを別途登録してい
き、モニタの試験プログラム実行中に問題が生じてスタ
ックのデータを調査する際のプロシージャ毎のブロック
を判断するためのデータとして利用する。 【構成】 スタック領域の先頭を指すレジスタであるス
タックポインタの内容を保存するスタックポインタテー
ブル2と、スタックデータを格納するスタック領域3
と、スタックポインタテーブル内の有効なスタックポイ
ンタを指すテーブルインデックス4と、プロシージャ呼
び出し時か呼び出し元への戻り時なのかを意味するコー
ドを格納する状態表示5と、プロシージャ呼び出し時で
スタック領域にスタックを確保した時にスタックポイン
タの内容をスタックポインタテーブルに保存するスタッ
クポインタ保存手段11と、スタックポインタテーブル
で有効なスタックポインタの位置を指示するスタックポ
インタ指示手段12とを有する試験プログラムモニタの
スタック履歴作成方式。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、情報処理システムにお
けるスタック管理方式に関し、特にスタックポインタの
履歴情報の作成方式に関する。
【0002】
【従来の技術】従来、スタック情報はスタック領域に書
き出されたスタックデータのみであった。したがって、
試験プログラムモニタ(以下モニタと略す)で試験プロ
グラムの実行中に生じた問題を解決するための手段とし
てスタックデータを利用する場合には、モニタをある特
定の命令で停止させてスタック領域内のデータを採取
し、このデータを解析していた。スタックデータを採取
した時点でのスタックの先頭を指すスタックポインタ
(具体的にはTレジスタを指す)の内容を手掛りに、ス
タックの内容をプロシージャ毎に追跡し、解析してい
た。
【0003】従来のモニタにおけるスタック領域の使用
方法を図3に示すスタック領域3を用いて説明する。モ
ニタがプロシージャ呼び出しを行う際には、呼び出しが
行われた時点のスタックポインタの指すアドレスから新
たなスタック情報のブロック(以下、スタックフレーム
と呼ぶ)が確保される。今プロシージャ呼び出し前のス
タックポインタが、図2のスタックフレームBの次のア
ドレス(スタックポインタB)を指している。呼び出し
たプロシージャへ実行が移ってしまった時点では、スタ
ックポインタは更新されて新たに確保されたスタックフ
レームCの次のアドレス(スタックポインタC)を指し
ている。呼び出したプロシージャから呼び出し元のプロ
シージャに戻る時、スタックポインタはスタックポイン
タCからスタックポインタBに戻され、スタックフレー
ムCは無効となる。
【0004】
【発明が解決しようとする課題】上述した従来のスタッ
ク管理方式は、使用されているスタック領域の先頭アド
レスのみをレジスタに保持しているというものであっ
た。したがって、スタックのデータを解析するために
は、スタック領域の先頭アドレスを手掛かりに各プロシ
ージャで確保されたスタックフレームの境界の追跡を行
なって各プロシージャ毎のレジスタの内容や局部変数の
内容を入手しなければならず、経験が浅い場合にはフレ
ームの境界の追跡を誤り易いといった問題があった。
【0005】本発明の目的はモニタのスタックの使用状
況がスタックポインタテーブルを見れば経験に頼らなく
ても簡単に把握でき、かつスタックフレームが幾重にも
重ね書きされていてもスタックフレームの境界を誤るこ
となく認識でき、スタックデータの解析を容易にでき
る、スタック履歴作成方式を提供することにある。
【0006】
【課題を解決するための手段】本発明のスタック履歴作
成方式は、スタック領域の先頭を指すレジスタであるス
タックポインタの内容を保存するスタックポインタテー
ブルと、スタックデータを格納するスタック領域と、前
記スタックポインタテーブル内の有効なスタックポイン
タを指すテーブルインデックスと、プロシージャ呼び出
し時か呼び出し元への戻り時なのかを意味するコードを
格納する状態表示と、プロシージャ呼び出しで前記スタ
ック領域にスタックを確保したときにスタックポインタ
の内容を前記スタックポインタテーブルに保存するスタ
ックポインタ保存手段と、前記スタックポインタテーブ
ルで有効なスタックポインタの位置を指示するスタック
ポインタ指示手段とを備えることを特徴とする試験プロ
グラムモニタのスタック履歴作成方式である。
【0007】
【実施例】次に本発明について図面を参照して詳細に説
明する。
【0008】第1図は、本特許の一実施例を示すスタッ
ク履歴を作成するシステムの構成図である。モニタ1と
スタックポインタテーブル2とテーブルインデックス4
から構成される。モニタ1はスタックポインタ保存手段
11とスタックポインタ指示手段12とを有する。
【0009】第2図は、第1図に示すスタックポインタ
テーブル2の形式を示す。
【0010】第3図は、第1図に示すスタック領域3の
形式を示す。
【0011】第4図は、第1図に示すスタックポインタ
保存手段11の処理概要を示す流れ図である。
【0012】第5図は、第1図に示すスタックポインタ
指示手段12の処理概要を示す流れ図である。
【0013】まず本特許のモニタのスタックポインタテ
ーブルの作成、及び更新過程を図を用いて説明する。
【0014】第1図に示す試験プログラムを実行するモ
ニタのシステムにおいて、モニタ1がプロシージャ呼び
出しを行う際には、それまで実行されていたプロシージ
ャで使用されていた局部変数やレジスタの内容をスタッ
ク領域3に第3図に示すようにスタックフレームを形成
して保存する。ここで個々のスタックフレームはそれぞ
れのプロシージャに1対1に対応している。
【0015】今、第3図のスタックフレームBまでが使
用されているものとする。すなわち、スタックポインタ
はスタックポインタBと同値である。第1図のスタック
ポインタテーブル2にはスタックポインタAとスタック
ポインタBの値が現時点において有効なものとして登録
されている。ここでモニタ1が新たにプロシージャ呼び
出しを行い、第3図に示すようにスタックフレームCを
確保すると、続いて第1図に示すスタックポインタ保存
手段11を起動する。
【0016】まず、第4図の処理41が実行され、第3
図のスタックフレームCの確保完了時のスタックポイン
タの内容、すなわちスタックポインタCの指すアドレス
が取り込まれる。次に第4図の処理42が実行され、処
理41で取り込んだスタックポインタを第1図に示すス
タックポインタテーブル2に第2図の形式で格納する。
さらに第4図の処理43が実行されプロシージャ呼び出
し時を意味する状態コード(呼び出し)を第1図の状態
表示5に格納し、第4図の処理44によりスタックポイ
ンタ指示手段12を起動する。スタックポインタ指示手
段12は第5図の処理51により第1図の状態表示5を
参照して、スタックポインタ指示手段12がプロシージ
ャ呼び出し時に起動されたのか、プロシージャからの戻
り時に起動されたのかを判断する。スタックポインタ指
示手段12がプロシージャ呼び出し時に起動された場合
は、第4図の処理43でプロシージャ呼び出し時を意味
するコード(呼び出し)が格納されているので、第5図
の処理52により第1図のテーブルインデックス4の内
容にスタックポインタのサイズを足し込む。プロシージ
ャからの戻り時に起動された場合は、第5図の処理53
により第1図のテーブルインデックス4の内容からスタ
ックポインタのサイズを引く。今の場合はプロシージャ
呼び出し時に第1図のスタックポインタ指示手段12が
起動されているため、第5図の処理52が実行されてテ
ーブルインデックスにスタックポインタのサイズが足し
込まれ、処理54により第1図の状態表示5をプロシー
ジャからの戻り時を意味する状態コード(戻り)を格納
してスタックポインタ指示手段12を終了する。スタッ
クポインタ指示手段12が終了した時点での第1図のス
タックポインタテーブル2は、第2図に示すような状態
をとっており、第1図のテーブルインデックス4は第2
図のスタックポインタCの次のアドレスを指している。
【0017】次に、呼ばれたプロシージャから呼び出し
元へ戻る場合の一連の処理の流れについて図を用いて説
明する。呼ばれたプロシージャから呼び出し元へ戻る時
には、直接第1図のスタックポインタ指示手段12を起
動する。スタックポインタ指示手段12が起動される
と、第5図の処理51により第1図の状態表示5を参照
して、プロシージャ呼び出し時と同様にスタックポイン
タ指示手段12がプロシージャ呼び出し時に起動された
のか、プロシージャからの戻り時に起動されたのかを判
断する。ここでは初期値、すなわちプロシージャからの
戻り時を意味する状態コード(戻り)が格納されている
ので、第5図の処理53が実行され第1図のテーブルイ
ンデックス4の内容からスタックポインタのサイズが引
かれる。さらにプロシージャ呼び出し時と同様に、第5
図の処理54により第1図の状態表示5にプロシージャ
からの戻り時を意味する状態コード(戻り)を格納して
スタックポインタ指示手段12を終了する。スタックポ
インタ指示手段12が終了した時点でスタックポインタ
テーブル2は、第2図の状態を継続したままであるが、
第1図のテーブルインデックス4は第2図に示すスタッ
クポインタBの次のアドレスを指しているので、この時
点で有効なスタックポインタはスタックポインタA、及
びスタックポインタBの2つまでとなる。つまりここで
はスタックポインタCの内容は無効であるということに
なる。
【0018】以上のようにして、第1のスタックポイン
タテーブル2、及びテーブルインデックス4がモニタ1
のプロシージャ呼び出しの時、及び呼び出し元への戻り
の時に更新されていく。スタックデータを解析するよう
な場合は、スタックポインタテーブル2、及びテーブル
インデックス4も併せて入手してデータ解析に利用す
る。
【0019】
【発明の効果】以上説明したように、本発明はモニタの
スタックの使用状況がスタックポインタテーブルを見れ
ば経験に頼らなくても簡単に把握できることにある。ま
た、スタックフレームが幾重にも重ね書きされていても
スタックフレームの境界を誤ることなく認識することが
でき、スタックデータの解析が容易となる効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例を示す試験プログラムを実行
するモニタムの構成図である。
【図2】スタックポインタテーブル2の形式を示す。
【図3】スタック領域3のスタックの使用状況を示す。
【図4】スタックポインタ保存手段11の処理概要を示
す流れ図である。
【図5】スタックポインタ指示手段12の処理概要を示
す流れ図である。
【符号の説明】
1 試験プログラムモニタ 11 スタックポインタ保存手段 12 スタックポインタ指示手段 2 スタックポインタテーブル 3 スタック領域 4 テーブルインデックス 5 状態表示

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 スタック領域の先頭を指すレジスタであ
    るスタックポインタの内容を保存するスタックポインタ
    テーブルと、スタックデータを格納するスタック領域
    と、前記スタックポインタテーブル内の有効なスタック
    ポインタを指すテーブルインデックスと、プロシージャ
    呼び出し時か呼び出し元への戻り時なのかを意味するコ
    ードを格納する状態表示と、プロシージャ呼び出しで前
    記スタック領域にスタックを確保したときにスタックポ
    インタの内容を前記スタックポインタテーブルに保存す
    るスタックポインタ保存手段と、前記スタックポインタ
    テーブルで有効なスタックポインタの位置を指示するス
    タックポインタ指示手段とを備えることを特徴とする試
    験プログラムモニタのスタック履歴作成方式。
JP3358089A 1991-12-27 1991-12-27 スタック履歴作成方式 Pending JPH05181712A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3358089A JPH05181712A (ja) 1991-12-27 1991-12-27 スタック履歴作成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3358089A JPH05181712A (ja) 1991-12-27 1991-12-27 スタック履歴作成方式

Publications (1)

Publication Number Publication Date
JPH05181712A true JPH05181712A (ja) 1993-07-23

Family

ID=18457488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3358089A Pending JPH05181712A (ja) 1991-12-27 1991-12-27 スタック履歴作成方式

Country Status (1)

Country Link
JP (1) JPH05181712A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756766A (ja) * 1993-08-10 1995-03-03 Nec Corp トレース装置
JP2008233192A (ja) * 2007-03-16 2008-10-02 Hoya Corp メモリを備えた交換レンズ及びカメラシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756766A (ja) * 1993-08-10 1995-03-03 Nec Corp トレース装置
JP2008233192A (ja) * 2007-03-16 2008-10-02 Hoya Corp メモリを備えた交換レンズ及びカメラシステム

Similar Documents

Publication Publication Date Title
US6694457B2 (en) System and method for monitoring execution of privileged instructions
US10691571B2 (en) Obtaining application performance data for different performance events via a unified channel
US8171340B2 (en) Software performance counters
US7844971B2 (en) Method and apparatus for detecting cross-thread stack access in multithreaded programs
US8286192B2 (en) Kernel subsystem for handling performance counters and events
RU2003115617A (ru) Способ и устройство обработки данных для сохранения возвратного состояния
CN110955598A (zh) 一种内核态程序的断点处理方法及装置
US6735774B1 (en) Method and apparatus for system call management
JPH05181712A (ja) スタック履歴作成方式
US7086054B2 (en) Method and device for reconstructing the process sequence of a control program
EP0417916B1 (en) Procedure state descriptor system for digital data processors
JP3339708B2 (ja) イベント記録方式
JP2815638B2 (ja) デバッグ装置
JPH03225535A (ja) プログラムトレース方式
JP2798364B2 (ja) アプリケーションの評価方法及びシステム
JP2000076095A (ja) プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JPH08286950A (ja) 情報処理装置及びトレース情報格納方法
JPS60238948A (ja) 計算機システムの処理時間測定装置
JPH06202841A (ja) アイコンの表示方法
JP2002318712A (ja) プログラム実行履歴解析方法
JPH03257525A (ja) プログラムの実行世代管理方式
JP2019125134A (ja) 検証支援プログラム、検証支援方法、および情報処理装置
JPH07295814A (ja) データ入力のアドレス管理方法
JPH0272440A (ja) プログラム実行ステップ観測方式
Hallsteinsen Source level debuggers: Experience from the design and implementation of chillscope