JPH11203166A - スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 - Google Patents
スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体Info
- Publication number
- JPH11203166A JPH11203166A JP10007614A JP761498A JPH11203166A JP H11203166 A JPH11203166 A JP H11203166A JP 10007614 A JP10007614 A JP 10007614A JP 761498 A JP761498 A JP 761498A JP H11203166 A JPH11203166 A JP H11203166A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- code
- stack
- marker
- 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.)
- Granted
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
るスタックの使用状況が正確に把握できるスタックポイ
ンタトレース装置及びスタックポインタトレース方法を
提供することである。 【解決手段】 命令変更手段31は、解析対象のプログ
ラム内の命令コードのうち、スタックポインタを変更す
る命令コードを命令記憶部51に記録し、該命令コード
のあるアドレスに、ブレーク例外コードを埋め込む。解
析対象のプログラムが実行中、該プログラムが使用する
スタック領域の変更が命令されると解析データ記憶手段
32が呼び出され、解析データ記憶手段32は、以後使
用するスタック領域を示す情報を解析データ記憶部52
に記録する。解析対象のプログラムが実行中にブレーク
例外が発生すると解析手段33が本来のスタックポイン
タの値を求め、解析データ記憶部52のデータと一緒に
トレースデータ記憶部53に記録する。
Description
行中におけるスタック領域の使用状況を検証する装置及
び方法に関する。
開発する上では、生成したプログラムのプログラムコー
ドに含まれる誤りを発見して修正する過程、すなわちデ
バッグが不可欠である。そして、デバッグにおいては、
通常、プログラムがデータを記憶するために確保する領
域であるスタック領域が正しく使用されているか否かを
検証する過程が必要である。また、プログラムが使用す
るメモリ容量を節約するためには、スタック領域のサイ
ズを必要最小限に抑えることが必要である。そして、ス
タック領域の必要最小限のサイズを知るためには、スタ
ック領域の使用状況を検証することが必要である。
は、プログラムが実行される前にスタック領域に任意の
値を埋め込んでおき、一定程度プログラムが実行されて
からスタック領域を参照し、埋め込まれた値が変更され
ているか否かを判別することによってスタックの使用状
況を確認する手法が考えられる。
は、プログラムが一定程度実行された後のスタックの使
用結果が把握されるに過ぎず、正確な使用状況を把握す
ることができないという問題が生じる。また、この手法
では、スタック領域外など不当なアドレスへのアクセス
を行っているか否かの情報が得られないという問題もあ
る。
えば、特開平4−131937に開示されているもの
や、特開平5−113902に開示されているものが考
えられる。
手法においては、スタック領域の使用状況を検証する対
象の実行プログラムが実行される前に、そのスタック領
域(結果退避情報格納部)に、その実行プログラムが正
常に実行された場合に読み出されるべき値(正解退避情
報)が予め埋め込まれる。そして、その実行プログラム
の処理が一定程度進行してから、その実行プログラムが
結果退避情報格納部に退避したデータの内容を確認する
ことにより、結果退避情報格納部の使用状況を検証す
る。
手法においては、マイクロプログラムを実行するマイク
ロプロセッサがサブルーチンをコールすると、スタック
ファイルにマイクロプログラムアドレスがプシュダウン
され、さらに、マイクロプログラムアドレスと、該マイ
クロプログラムアドレスの格納位置を示すスタックポイ
ンタがトレーサに格納される。そして、サブルーチンか
ら元のルーチンにリターンするときは、スタックファイ
ルからマイクロプログラムアドレスがポップアップさ
れ、ポップアップされた当該マイクロプログラムアドレ
スは、該マイクロプログラムアドレスが格納されていた
位置を示すスタックポインタと共に、トレーサに格納さ
れる。
よった場合、予め正解退避情報が明らかになっている必
要がある。このため、予め正解退避情報を知ることが困
難な処理の場合は、この手法を用いることが困難であ
る。また、プログラムが、本来読み出すべきアドレスか
ら正解退避情報を読み出さないというバグを含む場合、
正解退避情報は正しく読み出されないので、そのプログ
ラムによる処理は所期の通りに進行しないこととなる。
は、プシュダウン及びポップアップされたデータのスタ
ックファイル内における配置が明らかとなるに過ぎず、
それらのデータが、どのマイクロプログラムのいかなる
処理の結果プシュダウン及びポップアップされたもので
あるかを知ることができない。
で、プログラムを実行中に、そのプログラムによるスタ
ックの使用状況が正確に把握できるスタックポインタト
レース装置及びスタックポインタトレース方法を提供す
ることを目的とする。
め、この発明の第1の観点にかかるスタックポインタト
レース装置は、スタック領域にアクセスしてデータを読
み書きするプログラムが実行される間に、前記データを
読み書きする位置を指示するスタックポインタの指示先
を示すアドレスを記録するためのスタックポインタトレ
ース装置であって、前記プログラムのプログラムコード
を記憶するプログラム記憶手段と、前記プログラム記憶
手段が記憶する前記プログラムコード上における、前記
スタックポインタの指示先を変更する命令が記述されて
いる位置を特定し、該命令を所定のマーカに置換する命
令変更手段と、前記命令変更手段により前記マーカに置
換された前記命令コードと、該命令コードが記述されて
いた前記プログラムコード上の位置を示す情報とを、互
いに対応付けて記憶する被置換命令記憶手段と、前記被
置換命令変更手段により前記命令が前記マーカに置換さ
れた前記プログラムコードに含まれる前記命令コードを
逐次実行しつつ前記マーカを検出し、該マーカが記述さ
れている前記プログラムコード上の位置を特定して、該
位置を示す情報を出力するプログラム実行手段と、前記
プログラム実行手段より、前記プログラム実行手段が検
出した前記マーカの位置を示す情報を取得して、前記命
令記憶手段に記憶されている前記命令コードのうち、取
得した前記マーカの位置に記述されていたものを特定す
る被置換命令検索手段と、前記スタックポインタが現に
指示している箇所と、前記被置換命令検索手段により特
定された前記命令コードとに基づいて、該命令コードが
実行された場合において前記スタックポインタが指示す
べき箇所を特定し、特定された前記箇所を示すアドレス
を記録する解析手段とを備え、前記プログラム実行手段
は、前記被置換命令特定手段により特定された前記命令
コードを前記被置換命令特定手段より取得して実行し、
該命令コードに続いて実行されるべき命令コードを逐次
実行する手段を備える、ことを特徴とする。
によれば、スタックポインタの指示先のアドレスが変更
される度に、該アドレスが前記解析手段により蓄積され
る。また、スタックポインタの指示先のアドレスを変更
する命令を示す命令コードは、前記被置換命令検索手段
により特定されるので、スタックポインタの指示先のア
ドレスが変更された原因も特定される。
ている前記プログラムが使用する対象の前記スタック領
域を識別する識別情報を記憶する手段を備え、前記解析
手段は、特定の前記スタック領域を識別する識別情報を
記憶する手段と、前記プログラム実行手段より、前記プ
ログラム実行手段が記憶している前記識別情報を取得し
て、該識別情報が、自らが記憶する前記識別情報と実質
的に同一のスタック領域を示すか否かを判別し、示すと
判別されたとき、前記被置換命令検索手段により特定さ
れた前記命令コードが実行された場合においてスタック
ポインタが指示先すべきアドレスを特定する手段とを備
えるものであってもよい。これにより、スタックポイン
タの指示先のアドレスの変更のうち、特定のプログラム
により行われた分が特定されるので、スタックポインタ
の指示先のアドレスがどのプログラムによりどのように
変更されたかを示す情報が得られる。
得る前記スタック領域を特定するスタック領域情報を記
憶するスタック領域記憶手段と、該解析手段自身により
特定された前記アドレスが、前記スタック領域情報が示
すスタック領域上にあるか否かを判別し、ないと判別さ
れた場合に判別結果を外部に通知する異常アクセス通知
手段とを備えるものであってもよい。これにより、プロ
グラムが使用し得ないアドレスをスタックポインタが指
示した場合、該プログラムの異常が通知される。このた
め、この通知を受けた操作者等により前記プログラムの
強制終了などの措置が講じられれば、他のプログラムの
処理の混乱などが回避される。
段により特定された前記アドレスが前記スタック領域情
報が示すスタック領域上にないと判別された場合に、前
記プログラム実行手段が実行している前記プログラムの
処理を停止する手段を備えるものであってもよい。これ
により、プログラムが使用し得ないアドレスをスタック
ポインタが指示した場合、該プログラムは強制終了され
るので、他のプログラムの処理の混乱などが回避され
る。
ムが使用し得る前記スタック領域を変更するための前記
命令コードを検知するスタック変更命令検知手段と、前
記スタック変更命令検知手段が検知した前記命令コード
を実行したとき、変更後の前記スタック領域を特定する
前記スタック領域情報を新たに作成し、前記スタック領
域記憶手段に記憶されている変更前の前記スタック領域
情報を、新たに作成された前記スタック領域情報に更新
する手段とを備えるものであってもよい。これにより、
前記プログラムにより前記スタック領域が変更された場
合も、変更後のスタック領域からスタックポインタの指
示先が逸脱するか否かが監視される。
ックポインタトレース方法は、スタック領域にアクセス
してデータを読み書きするプログラムが実行される間
に、前記データを読み書きする位置を指示するスタック
ポインタの指示先を示すアドレスを記録するためのスタ
ックポインタトレース装置であって、前記プログラムの
プログラムコードを記憶するプログラム記憶ステップ
と、前記プログラム記憶ステップが記憶する前記プログ
ラムコード上における、前記スタックポインタの指示先
を変更する命令が記述されている位置を特定し、該命令
を所定のマーカに置換する命令変更ステップと、前記命
令変更ステップにより前記マーカに置換された前記命令
コードと、該命令コードが記述されていた前記プログラ
ムコード上の位置を示す情報とを、互いに対応付けて記
憶する被置換命令記憶ステップと、前記被置換命令変更
ステップにより前記命令が前記マーカに置換された前記
プログラムコードに含まれる前記命令コードを逐次実行
しつつ前記マーカを検出し、該マーカが記述されている
前記プログラムコード上の位置を特定して、該位置を示
す情報を出力するプログラム実行ステップと、前記プロ
グラム実行ステップより、前記プログラム実行ステップ
が検出した前記マーカの位置を示す情報を取得して、前
記命令記憶ステップに記憶されている前記命令コードの
うち、取得した前記マーカの位置に記述されていたもの
を特定する被置換命令検索ステップと、前記スタックポ
インタが現に指示している箇所と、前記被置換命令検索
ステップにより特定された前記命令コードとに基づい
て、該命令コードが実行された場合において前記スタッ
クポインタが指示すべき箇所を特定し、特定された前記
箇所を示すアドレスを記録する解析ステップとを備え、
前記プログラム実行ステップは、前記被置換命令特定ス
テップにより特定された前記命令コードを前記被置換命
令特定ステップより取得して実行し、該命令コードに続
いて実行されるべき命令コードを逐次実行するステップ
を備える、ことを特徴とする。
によれば、スタックポインタの指示先のアドレスが変更
される度に、該アドレスが前記解析ステップにより蓄積
される。また、スタックポインタの指示先のアドレスを
変更する命令を示す命令コードは、前記被置換命令検索
ステップにより特定されるので、スタックポインタの指
示先のアドレスが変更された原因も特定される。
ピュータ読み取り可能な記録媒体は、コンピュータを、
スタック領域にアクセスしてデータを読み書きするプロ
グラムのプログラムコードを記憶するプログラム記憶手
段と、前記プログラム記憶手段が記憶する前記プログラ
ムコード上における、前記スタックポインタの指示先を
変更する命令が記述されている位置を特定し、該命令を
所定のマーカに置換する命令変更手段と、前記命令変更
手段により前記マーカに置換された前記命令コードと、
該命令コードが記述されていた前記プログラムコード上
の位置を示す情報とを、互いに対応付けて記憶する被置
換命令記憶手段と、前記被置換命令変更手段により前記
命令が前記マーカに置換された前記プログラムコードに
含まれる前記命令コードを逐次実行しつつ前記マーカを
検出し、該マーカが記述されている前記プログラムコー
ド上の位置を特定して、該位置を示す情報を出力するプ
ログラム実行手段と、前記プログラム実行手段より、前
記プログラム実行手段が検出した前記マーカの位置を示
す情報を取得して、前記命令記憶手段に記憶されている
前記命令コードのうち、取得した前記マーカの位置に記
述されていたものを特定する被置換命令検索手段と、前
記スタックポインタが現に指示している箇所と、前記被
置換命令検索手段により特定された前記命令コードとに
基づいて、該命令コードが実行された場合において前記
スタックポインタが指示すべき箇所を特定し、特定され
た前記箇所を示すアドレスを記録する解析手段として機
能させ、前記プログラム実行手段を、前記被置換命令特
定手段により特定された前記命令コードを前記被置換命
令特定手段より取得して実行し、該命令コードに続いて
実行されるべき命令コードを逐次実行する手段として機
能させる、ためのプログラムを記録したことを特徴とす
る。
グラムを実行する前記コンピュータは、スタックポイン
タの指示先のアドレスが変更される度に、該アドレスを
前記解析手段により蓄積するスタックポインタトレース
装置として機能する。また、前記コンピュータは、スタ
ックポインタの指示先のアドレスを変更する命令を示す
命令コードを、前記被置換命令検索手段の機能を行うこ
とにより特定するので、スタックポインタの指示先のア
ドレスが変更された原因も特定される。
かるスタックポインタトレース装置及びスタックポイン
タトレース方法を説明する。 (第1の実施の形態)図1は、この発明の第1の実施の
形態にかかるスタックポインタトレース装置の物理的構
成を示す。図示するように、このスタックポインタトレ
ース装置は、プログラム記憶装置1と、入力装置2と、
トレース装置3と、出力装置4と、情報を記録する記憶
装置5とを含む。
ィスクドライブ等からなり、スタックの使用状況を解析
する対象となるプログラムを入力してプログラム記憶装
置1に供給する。プログラム記憶装置1はRAM(ラン
ダムアクセスメモリ)等からなり、入力装置2から供給
されたプログラムを記憶する記憶領域を備える。また、
プログラム記憶装置1は、プログラムが処理において用
いるデータを格納するスタック領域を確保するための記
憶領域を備える。
ータ記憶部52と、トレースデータ記憶部53とを備え
ている。
次に読み書きが行われるべき部分のアドレスを指すポイ
ンタ(スタックポインタ)を変更する命令を表す命令コ
ードと、解析する対象のプログラム上で当該命令コード
が存在した位置(アドレス)とを対応づける対応表を記
憶する。
プログラムが使用するスタック領域を識別する情報から
なる所有者識別子と、当該スタック領域が、プログラム
記憶装置1が備える記憶領域中において占める範囲(ア
ドレス範囲)を示す情報とを互いに対応付ける対応表を
記憶する。
クポインタトレース装置が実行した各プログラムが過去
に使用したスタック領域を識別する上述の所有者識別子
と、該スタック領域のうち、各プログラムが読み書きを
行った部分のアドレスを指すスタックポインタの値と、
各プログラムに割り当てられているスタック領域のアド
レス範囲とを、これらが互いに対応づけられた対応表の
形をとって記録する。
解析データ記憶手段32と、解析手段33とを備えてい
る。
変更するための命令コードが解析する対象のプログラム
に含まれている場合、その命令コードを命令記憶部51
に記録する。そして、解析する対象のプログラムが記憶
されているプログラム記憶装置1上の記憶領域のうち、
その命令コードが格納されている位置に、その命令コー
ドが命令記憶部51に書き移されたことを示すコード
(ブレーク例外コード)を上書きする。
のプログラムが使用するスタック領域の新規割り当てや
変更があるとき、割り当てられたスタック領域や変更後
のスタック領域のアドレス範囲等を調べ、調べた結果
を、上述の対応表の形式をとって解析データ記憶部52
に記録する。
れているデータに基づいて、解析する対象のプログラム
により変更されるスタックポインタの変更後の値を計算
し、解析データ記憶部52に記録されているスタック領
域のアドレス範囲のデータと共に、トレースデータ記憶
部53に記録する。解析手段33は、スタックポインタ
の値の計算結果が、解析データ記憶部52に記録されて
いるスタック領域のアドレス範囲に含まれない値である
とき、トレースデータ記憶部53に記憶されている内容
を出力装置4に出力する。
置等からなり、トレースデータ記憶部53に記憶されて
いる内容を解析手段33から取得して、取得した内容を
表示、印字等する。
ックポインタトレース装置の動作を説明する。図2のス
テップA1からA3までは、解析対象のプログラムを実
行する前に行う処理を示す。図2のステップA4からA
6は、解析対象のプログラムを実行中の処理を示す。図
2のステップA7からA12は、ブレーク例外発生後の
処理を示す。
理)まず、入力装置2から、スタックポインタを変更す
る命令を含んだ解析対象のプログラムが供給され、プロ
グラム記憶装置1に格納される。次に、命令変更手段3
1は、プログラム記憶装置1から該プログラムを順次読
み取って解析することにより、スタックポインタを変更
する命令を表す命令コードがある該プログラム上のアド
レスを特定する。そして、該アドレスと、該アドレスに
あった命令コードとを対応づける対応表を作成して命令
記憶部51に格納する(ステップA1)。次に、命令変
更手段31は、ステップA1で特定されたアドレスにブ
レーク例外コードを上書きする(ステップA2)。そし
て、該プログラムにスタック領域を新規に割り当て、該
スタック領域を識別する所有者識別子を作成し、割り当
てられたスタック領域のアドレス範囲と、作成された所
有者識別子とを互いに対応づける対応表を作成して解析
データ記憶部52に格納した後、解析対象のプログラム
を実行する(ステップA3)。
析対象のプログラムを実行中、該プログラム自身が使用
するスタック領域を変更する処理が行われた場合(ステ
ップA4)、解析データ記憶部52に格納されている対
応表を更新するため、解析対象のプログラムから解析デ
ータ記憶手段32が呼ばれる。解析データ記憶手段32
は、解析データ記憶部52が格納している対応表のう
ち、解析対象のプログラムが使用するスタック領域を識
別する所有者識別子を含むものを特定し、その所有者識
別子に対応づけられているアドレス範囲を、ステップA
4の処理で変更された後のアドレス範囲に更新する(ス
テップA5)。
レーク例外が発生すると(ステップA7)、解析手段3
3が、ステップA8以降の処理を実行する。解析手段3
3は、ブレーク例外が発生したアドレスを特定し、命令
記憶部51に格納されている対応表を検索することによ
り、特定されたアドレスに存在していた元の命令コード
を特定する(ステップA8)。そして、特定された命令
コード(スタックポインタの値を変更する命令を示す命
令コード)と、ブレーク例外が発生した時点におけるス
タックポインタの値とに基づき、解析対象のプログラム
が設定しようとしていたスタックポインタの値を求める
(ステップA9)。例えば、特定された命令コードが、
変更前のスタックポインタが示すアドレスにデータをプ
ッシュする(書き込む)命令を示すものである場合、解
析手段33は、ブレーク例外が発生した時点におけるス
タックポインタの値に1を加算し、得られた値を、解析
対象のプログラムが設定しようとしていたスタックポイ
ンタの値とする。
52から、解析対象のプログラムが使用しているスタッ
ク領域を識別する所有者識別子と、該スタック領域のア
ドレス範囲の情報とを読み出す。そして、読み出した情
報と、ステップA9で求められたスタックポインタの値
とを、トレースデータ記憶部53に記憶する(ステップ
A10)。
求めたスタックポインタの値が解析データ記憶部52に
記憶されているアドレス範囲内(すなわち、解析対象の
プログラムに割り当てられているスタック領域があるア
ドレス範囲内)のアドレスを指しているか否かを判別す
る(ステップA11)。そして、該アドレス範囲内のア
ドレスを指していない場合は、スタックポインタが不正
に変更されたものと判断し、プログラムを停止して終了
する。該アドレス範囲内にある場合は、命令記憶部51
に格納されている対応表を検索することにより、ブレー
ク例外が発生したアドレスに存在していた命令コード
(元命令)を特定する。そして、特定された元命令を実
行した後、解析対象のプログラムが示す処理のうち、そ
の元命令を実行する処理の次に実行されるべき処理を実
行させる(ステップA12)。
は、解析対象のプログラムが最後まで走行する(ステッ
プA6)か、又は、ステップA11でスタックポインタ
が不正に変更されたと判断されるまで、解析対象のプロ
グラムを走行させる。
レース装置は、解析対象のプログラムによるスタックの
使用状況を示す情報として、(1)該プログラムがスタ
ックポインタの値を変更した場合の変更後のスタックポ
インタの値と、(2)該プログラムが使用しているスタ
ック領域を識別する所有者識別子と、(3)該スタック
領域のアドレス範囲を示す情報と、をトレースデータ記
憶部53に蓄積しながら、解析対象のプログラムを実行
する。
実施の形態では、全てのスタックの使用状況を示すデー
タが収集されていた。しかし、使用状況を示すデータ
は、特定のスタックに限定して収集されてもよく、これ
により、トレースデータ記憶部53が有する記憶領域を
有効に活用でき、また収集されたデータの整理も容易と
なる。以下、特定のスタックの使用状況を示すデータを
収集する、この発明の第2の実施の形態にかかるスタッ
クポインタトレース装置を説明する。
るスタックポインタトレース装置の構成を示す。図示す
るように、このスタックポインタトレース装置のトレー
ス装置3は、図1に示すトレース装置3の構成に加えて
スタック選択手段34を備える。また、このスタックポ
インタトレース装置の記憶装置5は、図1に示す記憶装
置5の構成に加えて、選択スタック記憶部54を備え
る。
力装置2を用いて入力した、トレースデータ記憶部53
に使用状況を記録する対象のスタック領域を識別する所
有者識別子を記憶する。
部52に記憶されている所有者識別子と、選択スタック
記憶部54に記憶されている所有者識別子とが実質的に
一致するか否かを判別する。そして、両者が一致すると
判別されたとき、解析対象のプログラムが使用している
スタック領域が、使用状況を記録する対象のスタック領
域であると判断し、解析手段33に処理を実行させる。
ンタトレース装置の動作を説明する。なお、図4に示す
ステップA1からA12は、図2に示すステップA1か
らA12と実質的に同一の処理である。また、このスタ
ックポインタトレース装置における命令変更手段31、
解析データ記憶手段32及び解析手段33の動作は、第
1の実施の形態における命令変更手段31、解析データ
記憶手段32及び解析手段33の動作と実質的に同一で
ある。
使用状況を記録する対象のスタック領域を示す所有者識
別子を入力すると、選択スタック記憶部54が、入力さ
れた所有者識別子を記憶する(ステップB1)。ステッ
プB1の処理が終了すると、このスタックポインタトレ
ース装置は、ステップA1以降の処理を実行する。
例外が発生すると、スタック選択手段34が、ステップ
B2の処理を実行する。ステップB2において、スタッ
ク選択手段34は、解析データ記憶部52に記憶されて
いる所有者識別子と、選択スタック記憶部54に記憶さ
れている所有者識別子とが実質的に一致するか否かを判
別する。すなわち、スタック選択手段34は、解析対象
のプログラムが使用しているスタック領域が、使用状況
を記録する対象のスタック領域であるか否かを判別す
る。
き、解析手段33にステップA8以降の処理を行うよう
指示し、指示を受けた解析手段33は、ステップA8以
降の処理を行う。一致しないと判別されたとき、スタッ
ク選択手段34は、解析手段33にステップA12以降
の処理を行うよう指示する。指示を受けたスタック選択
手段34は、ステップA12の処理を行う。すなわち、
ブレーク例外が発生したアドレスに存在した元命令を実
行し、再び解析対象のプログラムの実行を開始する。
が、この発明のスタックポインタトレース装置は、専用
のシステムによらず、通常のコンピュータシステムを用
いて実現可能である。例えば、パーソナルコンピュータ
に上述の動作を実行するためのプログラムを格納した媒
体(フロッピーディスク、CD−ROM等)から該プロ
グラムをインストールすることにより、上述の処理を実
行するスタックポインタトレース装置を構成することが
できる。
るための媒体は、通信媒体(通信回線、通信ネットワー
ク、通信システムのように、一時的且つ流動的にプログ
ラムを保持する媒体)でも良い。例えば、通信ネットワ
ークの掲示板(BBS)に該プログラムを掲示し、これ
をネットワークを介して配信してもよい。そして、この
プログラムを起動し、OSの制御下に、他のアプリケー
ションプログラムと同様に実行することにより、上述の
処理を実行することができる。
や、OSが本願発明のいくつかの構成要素を構成する場
合や、OSが1つの構成要素の一部を構成するような場
合には、記録媒体には、その部分をのぞいたプログラム
を格納してもよい。この場合も、その記録媒体には、コ
ンピュータが実行する各機能又はステップを実行するた
めのプログラムが格納されているものとする。
ば、プログラムを実行中に、そのプログラムによるスタ
ックの使用状況が正確に把握できるスタックポインタト
レース装置及びスタックポインタトレース方法が実現さ
れる。
ポインタトレース装置の基本構成を示すブロック図であ
る。
る処理を示すフローチャートである。
ポインタトレース装置の基本構成を示すブロック図であ
る。
る処理を示すフローチャートである。
Claims (7)
- 【請求項1】スタック領域にアクセスしてデータを読み
書きするプログラムが実行される間に、前記データを読
み書きする位置を指示するスタックポインタの指示先を
示すアドレスを記録するためのスタックポインタトレー
ス装置であって、 前記プログラムのプログラムコードを記憶するプログラ
ム記憶手段と、 前記プログラム記憶手段が記憶する前記プログラムコー
ド上における、前記スタックポインタの指示先を変更す
る命令が記述されている位置を特定し、該命令を所定の
マーカに置換する命令変更手段と、 前記命令変更手段により前記マーカに置換された前記命
令コードと、該命令コードが記述されていた前記プログ
ラムコード上の位置を示す情報とを、互いに対応付けて
記憶する被置換命令記憶手段と、 前記被置換命令変更手段により前記命令が前記マーカに
置換された前記プログラムコードに含まれる前記命令コ
ードを逐次実行しつつ前記マーカを検出し、該マーカが
記述されている前記プログラムコード上の位置を特定し
て、該位置を示す情報を出力するプログラム実行手段
と、 前記プログラム実行手段より、前記プログラム実行手段
が検出した前記マーカの位置を示す情報を取得して、前
記命令記憶手段に記憶されている前記命令コードのう
ち、取得した前記マーカの位置に記述されていたものを
特定する被置換命令検索手段と、 前記スタックポインタが現に指示している箇所と、前記
被置換命令検索手段により特定された前記命令コードと
に基づいて、該命令コードが実行された場合において前
記スタックポインタが指示すべき箇所を特定し、特定さ
れた前記箇所を示すアドレスを記録する解析手段とを備
え、 前記プログラム実行手段は、前記被置換命令特定手段に
より特定された前記命令コードを前記被置換命令特定手
段より取得して実行し、該命令コードに続いて実行され
るべき命令コードを逐次実行する手段を備える、 ことを特徴とするスタックポインタトレース装置。 - 【請求項2】前記プログラム実行手段は、自らが実行し
ている前記プログラムが使用する対象の前記スタック領
域を識別する識別情報を記憶する手段を備え、 前記解析手段は、 特定の前記スタック領域を識別する識別情報を記憶する
手段と、 前記プログラム実行手段より、前記プログラム実行手段
が記憶している前記識別情報を取得して、該識別情報
が、自らが記憶する前記識別情報と実質的に同一のスタ
ック領域を示すか否かを判別し、示すと判別されたと
き、前記被置換命令検索手段により特定された前記命令
コードが実行された場合においてスタックポインタが指
示先すべきアドレスを特定する手段とを備える、 ことを特徴とする請求項1に記載のスタックポインタト
レース装置。 - 【請求項3】前記解析手段は、 前記プログラムが使用し得る前記スタック領域を特定す
るスタック領域情報を記憶するスタック領域記憶手段
と、 該解析手段自身により特定された前記アドレスが、前記
スタック領域情報が示すスタック領域上にあるか否かを
判別し、ないと判別された場合に判別結果を外部に通知
する異常アクセス通知手段とを備える、 ことを特徴とする請求項1又は2に記載のスタックポイ
ンタトレース装置。 - 【請求項4】前記異常アクセス通知手段は、前記解析手
段により特定された前記アドレスが前記スタック領域情
報が示すスタック領域上にないと判別された場合に、前
記プログラム実行手段が実行している前記プログラムの
処理を停止する手段を備える、 ことを特徴とする請求項3に記載のスタックポインタト
レース装置。 - 【請求項5】前記プログラム実行手段は、 前記プログラムが使用し得る前記スタック領域を変更す
るための前記命令コードを検知するスタック変更命令検
知手段と、 前記スタック変更命令検知手段が検知した前記命令コー
ドを実行したとき、変更後の前記スタック領域を特定す
る前記スタック領域情報を新たに作成し、前記スタック
領域記憶手段に記憶されている変更前の前記スタック領
域情報を、新たに作成された前記スタック領域情報に更
新する手段とを備える、 ことを特徴とする請求項3又は4に記載のスタックポイ
ンタトレース装置。 - 【請求項6】スタック領域にアクセスしてデータを読み
書きするプログラムが実行される間に、前記データを読
み書きする位置を指示するスタックポインタの指示先を
示すアドレスを記録するためのスタックポインタトレー
ス装置であって、 前記プログラムのプログラムコードを記憶するプログラ
ム記憶ステップと、 前記プログラム記憶ステップが記憶する前記プログラム
コード上における、前記スタックポインタの指示先を変
更する命令が記述されている位置を特定し、該命令を所
定のマーカに置換する命令変更ステップと、 前記命令変更ステップにより前記マーカに置換された前
記命令コードと、該命令コードが記述されていた前記プ
ログラムコード上の位置を示す情報とを、互いに対応付
けて記憶する被置換命令記憶ステップと、 前記被置換命令変更ステップにより前記命令が前記マー
カに置換された前記プログラムコードに含まれる前記命
令コードを逐次実行しつつ前記マーカを検出し、該マー
カが記述されている前記プログラムコード上の位置を特
定して、該位置を示す情報を出力するプログラム実行ス
テップと、 前記プログラム実行ステップより、前記プログラム実行
ステップが検出した前記マーカの位置を示す情報を取得
して、前記命令記憶ステップに記憶されている前記命令
コードのうち、取得した前記マーカの位置に記述されて
いたものを特定する被置換命令検索ステップと、 前記スタックポインタが現に指示している箇所と、前記
被置換命令検索ステップにより特定された前記命令コー
ドとに基づいて、該命令コードが実行された場合におい
て前記スタックポインタが指示すべき箇所を特定し、特
定された前記箇所を示すアドレスを記録する解析ステッ
プとを備え、 前記プログラム実行ステップは、前記被置換命令特定ス
テップにより特定された前記命令コードを前記被置換命
令特定ステップより取得して実行し、該命令コードに続
いて実行されるべき命令コードを逐次実行するステップ
を備える、 ことを特徴とするスタックポインタトレース方法。 - 【請求項7】コンピュータを、 スタック領域にアクセスしてデータを読み書きするプロ
グラムのプログラムコードを記憶するプログラム記憶手
段と、 前記プログラム記憶手段が記憶する前記プログラムコー
ド上における、前記スタックポインタの指示先を変更す
る命令が記述されている位置を特定し、該命令を所定の
マーカに置換する命令変更手段と、 前記命令変更手段により前記マーカに置換された前記命
令コードと、該命令コードが記述されていた前記プログ
ラムコード上の位置を示す情報とを、互いに対応付けて
記憶する被置換命令記憶手段と、 前記被置換命令変更手段により前記命令が前記マーカに
置換された前記プログラムコードに含まれる前記命令コ
ードを逐次実行しつつ前記マーカを検出し、該マーカが
記述されている前記プログラムコード上の位置を特定し
て、該位置を示す情報を出力するプログラム実行手段
と、 前記プログラム実行手段より、前記プログラム実行手段
が検出した前記マーカの位置を示す情報を取得して、前
記命令記憶手段に記憶されている前記命令コードのう
ち、取得した前記マーカの位置に記述されていたものを
特定する被置換命令検索手段と、 前記スタックポインタが現に指示している箇所と、前記
被置換命令検索手段により特定された前記命令コードと
に基づいて、該命令コードが実行された場合において前
記スタックポインタが指示すべき箇所を特定し、特定さ
れた前記箇所を示すアドレスを記録する解析手段として
機能させ、 前記プログラム実行手段を、前記被置換命令特定手段に
より特定された前記命令コードを前記被置換命令特定手
段より取得して実行し、該命令コードに続いて実行され
るべき命令コードを逐次実行する手段として機能させ
る、 ためのプログラムを記録したコンピュータ読み取り可能
な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00761498A JP3309792B2 (ja) | 1998-01-19 | 1998-01-19 | スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00761498A JP3309792B2 (ja) | 1998-01-19 | 1998-01-19 | スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11203166A true JPH11203166A (ja) | 1999-07-30 |
JP3309792B2 JP3309792B2 (ja) | 2002-07-29 |
Family
ID=11670701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00761498A Expired - Fee Related JP3309792B2 (ja) | 1998-01-19 | 1998-01-19 | スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3309792B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354575A (zh) * | 2016-08-12 | 2017-01-25 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于堆栈追溯的故障排查装置和方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5873099A (ja) * | 1981-10-23 | 1983-05-02 | Canon Inc | デ−タ処理装置 |
JPS61279951A (ja) * | 1985-06-06 | 1986-12-10 | Nec Corp | プログラム網羅率計測システム |
JPS62219143A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | アドレスフエツチ制御処理方式 |
JPH02226441A (ja) * | 1989-02-28 | 1990-09-10 | Toshiba Corp | ソフトウェアテスト装置 |
JPH05113902A (ja) * | 1991-10-23 | 1993-05-07 | Nec Corp | マイクロプログラム制御装置 |
JPH06202904A (ja) * | 1993-01-06 | 1994-07-22 | Nec Ic Microcomput Syst Ltd | 開発支援装置 |
JPH09167117A (ja) * | 1995-12-15 | 1997-06-24 | Hitachi Ltd | マイクロコンピュータおよびこれを用いたリアルタイムシステム |
-
1998
- 1998-01-19 JP JP00761498A patent/JP3309792B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5873099A (ja) * | 1981-10-23 | 1983-05-02 | Canon Inc | デ−タ処理装置 |
JPS61279951A (ja) * | 1985-06-06 | 1986-12-10 | Nec Corp | プログラム網羅率計測システム |
JPS62219143A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | アドレスフエツチ制御処理方式 |
JPH02226441A (ja) * | 1989-02-28 | 1990-09-10 | Toshiba Corp | ソフトウェアテスト装置 |
JPH05113902A (ja) * | 1991-10-23 | 1993-05-07 | Nec Corp | マイクロプログラム制御装置 |
JPH06202904A (ja) * | 1993-01-06 | 1994-07-22 | Nec Ic Microcomput Syst Ltd | 開発支援装置 |
JPH09167117A (ja) * | 1995-12-15 | 1997-06-24 | Hitachi Ltd | マイクロコンピュータおよびこれを用いたリアルタイムシステム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354575A (zh) * | 2016-08-12 | 2017-01-25 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于堆栈追溯的故障排查装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3309792B2 (ja) | 2002-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5528753A (en) | System and method for enabling stripped object software monitoring in a computer system | |
US5732272A (en) | Subroutine execution time tracer | |
EP0665496B1 (en) | Method and apparatus for run-time error checking using dynamic patching | |
EP1130518B1 (en) | Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof | |
US7000225B2 (en) | Method for inserting global breakpoints | |
CN111756575B (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
US7478282B2 (en) | Log acquisition method and its control program and storage medium | |
US7765434B2 (en) | Resource efficient software tracing for problem diagnosis | |
CN110955598A (zh) | 一种内核态程序的断点处理方法及装置 | |
TW389855B (en) | Method and apparatus for allowing continued operation for overflow and invalid data | |
US5819024A (en) | Fault analysis system | |
JP3206641B2 (ja) | マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体 | |
JP3309792B2 (ja) | スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 | |
JP2005338987A (ja) | 例外テスト支援プログラム及び例外テスト支援装置 | |
JP2014041390A (ja) | 設計・開発支援システム | |
JP3459898B2 (ja) | 組み込みシステムの障害情報トレーサ装置 | |
JPH0934754A (ja) | プログラムの性能測定装置と方法 | |
CN113722170B (zh) | 一种pfr功能测试方法、装置、设备及可读存储介质 | |
US20040049511A1 (en) | Method for acquiring and monitoring hardware data of computer system | |
US7281166B1 (en) | User-customizable input error handling | |
JP2000076095A (ja) | プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体 | |
JPH096709A (ja) | 拡張スロット付電子装置の制御方法とその装置、及び拡張媒体 | |
JP2006221559A (ja) | 携帯電話機のバスモニターシステム、方法及びプログラム | |
JP2001134464A (ja) | 情報処理方法および装置 | |
JP2022136477A (ja) | テスト制御プログラム、情報処理装置およびテスト制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090524 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100524 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110524 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110524 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120524 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120524 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130524 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140524 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |