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