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
Application number
JP10007614A
Other languages
English (en)
Other versions
JP3309792B2 (ja
Inventor
Noritoshi Iga
徳寿 伊賀
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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP00761498A priority Critical patent/JP3309792B2/ja
Publication of JPH11203166A publication Critical patent/JPH11203166A/ja
Application granted granted Critical
Publication of JP3309792B2 publication Critical patent/JP3309792B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラムを実行中に、そのプログラムによ
るスタックの使用状況が正確に把握できるスタックポイ
ンタトレース装置及びスタックポインタトレース方法を
提供することである。 【解決手段】 命令変更手段31は、解析対象のプログ
ラム内の命令コードのうち、スタックポインタを変更す
る命令コードを命令記憶部51に記録し、該命令コード
のあるアドレスに、ブレーク例外コードを埋め込む。解
析対象のプログラムが実行中、該プログラムが使用する
スタック領域の変更が命令されると解析データ記憶手段
32が呼び出され、解析データ記憶手段32は、以後使
用するスタック領域を示す情報を解析データ記憶部52
に記録する。解析対象のプログラムが実行中にブレーク
例外が発生すると解析手段33が本来のスタックポイン
タの値を求め、解析データ記憶部52のデータと一緒に
トレースデータ記憶部53に記録する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、プログラムの実
行中におけるスタック領域の使用状況を検証する装置及
び方法に関する。
【0002】
【従来の技術】コンピュータ等が実行するプログラムを
開発する上では、生成したプログラムのプログラムコー
ドに含まれる誤りを発見して修正する過程、すなわちデ
バッグが不可欠である。そして、デバッグにおいては、
通常、プログラムがデータを記憶するために確保する領
域であるスタック領域が正しく使用されているか否かを
検証する過程が必要である。また、プログラムが使用す
るメモリ容量を節約するためには、スタック領域のサイ
ズを必要最小限に抑えることが必要である。そして、ス
タック領域の必要最小限のサイズを知るためには、スタ
ック領域の使用状況を検証することが必要である。
【0003】スタックの使用状況を取得する手法として
は、プログラムが実行される前にスタック領域に任意の
値を埋め込んでおき、一定程度プログラムが実行されて
からスタック領域を参照し、埋め込まれた値が変更され
ているか否かを判別することによってスタックの使用状
況を確認する手法が考えられる。
【0004】
【発明が解決しようとする課題】しかし、この手法で
は、プログラムが一定程度実行された後のスタックの使
用結果が把握されるに過ぎず、正確な使用状況を把握す
ることができないという問題が生じる。また、この手法
では、スタック領域外など不当なアドレスへのアクセス
を行っているか否かの情報が得られないという問題もあ
る。
【0005】これらの問題を解決する手法としては、例
えば、特開平4−131937に開示されているもの
や、特開平5−113902に開示されているものが考
えられる。
【0006】特開平4−131937に開示されている
手法においては、スタック領域の使用状況を検証する対
象の実行プログラムが実行される前に、そのスタック領
域(結果退避情報格納部)に、その実行プログラムが正
常に実行された場合に読み出されるべき値(正解退避情
報)が予め埋め込まれる。そして、その実行プログラム
の処理が一定程度進行してから、その実行プログラムが
結果退避情報格納部に退避したデータの内容を確認する
ことにより、結果退避情報格納部の使用状況を検証す
る。
【0007】特開平5−113902に開示されている
手法においては、マイクロプログラムを実行するマイク
ロプロセッサがサブルーチンをコールすると、スタック
ファイルにマイクロプログラムアドレスがプシュダウン
され、さらに、マイクロプログラムアドレスと、該マイ
クロプログラムアドレスの格納位置を示すスタックポイ
ンタがトレーサに格納される。そして、サブルーチンか
ら元のルーチンにリターンするときは、スタックファイ
ルからマイクロプログラムアドレスがポップアップさ
れ、ポップアップされた当該マイクロプログラムアドレ
スは、該マイクロプログラムアドレスが格納されていた
位置を示すスタックポインタと共に、トレーサに格納さ
れる。
【0008】しかし、特開平4−131937の手法に
よった場合、予め正解退避情報が明らかになっている必
要がある。このため、予め正解退避情報を知ることが困
難な処理の場合は、この手法を用いることが困難であ
る。また、プログラムが、本来読み出すべきアドレスか
ら正解退避情報を読み出さないというバグを含む場合、
正解退避情報は正しく読み出されないので、そのプログ
ラムによる処理は所期の通りに進行しないこととなる。
【0009】また、特開平5−113902の手法で
は、プシュダウン及びポップアップされたデータのスタ
ックファイル内における配置が明らかとなるに過ぎず、
それらのデータが、どのマイクロプログラムのいかなる
処理の結果プシュダウン及びポップアップされたもので
あるかを知ることができない。
【0010】この発明は上記実状に鑑みてなされたもの
で、プログラムを実行中に、そのプログラムによるスタ
ックの使用状況が正確に把握できるスタックポインタト
レース装置及びスタックポインタトレース方法を提供す
ることを目的とする。
【0011】
【課題を解決するための手段】上記目的を達成するた
め、この発明の第1の観点にかかるスタックポインタト
レース装置は、スタック領域にアクセスしてデータを読
み書きするプログラムが実行される間に、前記データを
読み書きする位置を指示するスタックポインタの指示先
を示すアドレスを記録するためのスタックポインタトレ
ース装置であって、前記プログラムのプログラムコード
を記憶するプログラム記憶手段と、前記プログラム記憶
手段が記憶する前記プログラムコード上における、前記
スタックポインタの指示先を変更する命令が記述されて
いる位置を特定し、該命令を所定のマーカに置換する命
令変更手段と、前記命令変更手段により前記マーカに置
換された前記命令コードと、該命令コードが記述されて
いた前記プログラムコード上の位置を示す情報とを、互
いに対応付けて記憶する被置換命令記憶手段と、前記被
置換命令変更手段により前記命令が前記マーカに置換さ
れた前記プログラムコードに含まれる前記命令コードを
逐次実行しつつ前記マーカを検出し、該マーカが記述さ
れている前記プログラムコード上の位置を特定して、該
位置を示す情報を出力するプログラム実行手段と、前記
プログラム実行手段より、前記プログラム実行手段が検
出した前記マーカの位置を示す情報を取得して、前記命
令記憶手段に記憶されている前記命令コードのうち、取
得した前記マーカの位置に記述されていたものを特定す
る被置換命令検索手段と、前記スタックポインタが現に
指示している箇所と、前記被置換命令検索手段により特
定された前記命令コードとに基づいて、該命令コードが
実行された場合において前記スタックポインタが指示す
べき箇所を特定し、特定された前記箇所を示すアドレス
を記録する解析手段とを備え、前記プログラム実行手段
は、前記被置換命令特定手段により特定された前記命令
コードを前記被置換命令特定手段より取得して実行し、
該命令コードに続いて実行されるべき命令コードを逐次
実行する手段を備える、ことを特徴とする。
【0012】このようなスタックポインタトレース装置
によれば、スタックポインタの指示先のアドレスが変更
される度に、該アドレスが前記解析手段により蓄積され
る。また、スタックポインタの指示先のアドレスを変更
する命令を示す命令コードは、前記被置換命令検索手段
により特定されるので、スタックポインタの指示先のア
ドレスが変更された原因も特定される。
【0013】前記プログラム実行手段は、自らが実行し
ている前記プログラムが使用する対象の前記スタック領
域を識別する識別情報を記憶する手段を備え、前記解析
手段は、特定の前記スタック領域を識別する識別情報を
記憶する手段と、前記プログラム実行手段より、前記プ
ログラム実行手段が記憶している前記識別情報を取得し
て、該識別情報が、自らが記憶する前記識別情報と実質
的に同一のスタック領域を示すか否かを判別し、示すと
判別されたとき、前記被置換命令検索手段により特定さ
れた前記命令コードが実行された場合においてスタック
ポインタが指示先すべきアドレスを特定する手段とを備
えるものであってもよい。これにより、スタックポイン
タの指示先のアドレスの変更のうち、特定のプログラム
により行われた分が特定されるので、スタックポインタ
の指示先のアドレスがどのプログラムによりどのように
変更されたかを示す情報が得られる。
【0014】前記解析手段は、前記プログラムが使用し
得る前記スタック領域を特定するスタック領域情報を記
憶するスタック領域記憶手段と、該解析手段自身により
特定された前記アドレスが、前記スタック領域情報が示
すスタック領域上にあるか否かを判別し、ないと判別さ
れた場合に判別結果を外部に通知する異常アクセス通知
手段とを備えるものであってもよい。これにより、プロ
グラムが使用し得ないアドレスをスタックポインタが指
示した場合、該プログラムの異常が通知される。このた
め、この通知を受けた操作者等により前記プログラムの
強制終了などの措置が講じられれば、他のプログラムの
処理の混乱などが回避される。
【0015】前記異常アクセス通知手段は、前記解析手
段により特定された前記アドレスが前記スタック領域情
報が示すスタック領域上にないと判別された場合に、前
記プログラム実行手段が実行している前記プログラムの
処理を停止する手段を備えるものであってもよい。これ
により、プログラムが使用し得ないアドレスをスタック
ポインタが指示した場合、該プログラムは強制終了され
るので、他のプログラムの処理の混乱などが回避され
る。
【0016】前記プログラム実行手段は、前記プログラ
ムが使用し得る前記スタック領域を変更するための前記
命令コードを検知するスタック変更命令検知手段と、前
記スタック変更命令検知手段が検知した前記命令コード
を実行したとき、変更後の前記スタック領域を特定する
前記スタック領域情報を新たに作成し、前記スタック領
域記憶手段に記憶されている変更前の前記スタック領域
情報を、新たに作成された前記スタック領域情報に更新
する手段とを備えるものであってもよい。これにより、
前記プログラムにより前記スタック領域が変更された場
合も、変更後のスタック領域からスタックポインタの指
示先が逸脱するか否かが監視される。
【0017】また、この発明の第2の観点にかかるスタ
ックポインタトレース方法は、スタック領域にアクセス
してデータを読み書きするプログラムが実行される間
に、前記データを読み書きする位置を指示するスタック
ポインタの指示先を示すアドレスを記録するためのスタ
ックポインタトレース装置であって、前記プログラムの
プログラムコードを記憶するプログラム記憶ステップ
と、前記プログラム記憶ステップが記憶する前記プログ
ラムコード上における、前記スタックポインタの指示先
を変更する命令が記述されている位置を特定し、該命令
を所定のマーカに置換する命令変更ステップと、前記命
令変更ステップにより前記マーカに置換された前記命令
コードと、該命令コードが記述されていた前記プログラ
ムコード上の位置を示す情報とを、互いに対応付けて記
憶する被置換命令記憶ステップと、前記被置換命令変更
ステップにより前記命令が前記マーカに置換された前記
プログラムコードに含まれる前記命令コードを逐次実行
しつつ前記マーカを検出し、該マーカが記述されている
前記プログラムコード上の位置を特定して、該位置を示
す情報を出力するプログラム実行ステップと、前記プロ
グラム実行ステップより、前記プログラム実行ステップ
が検出した前記マーカの位置を示す情報を取得して、前
記命令記憶ステップに記憶されている前記命令コードの
うち、取得した前記マーカの位置に記述されていたもの
を特定する被置換命令検索ステップと、前記スタックポ
インタが現に指示している箇所と、前記被置換命令検索
ステップにより特定された前記命令コードとに基づい
て、該命令コードが実行された場合において前記スタッ
クポインタが指示すべき箇所を特定し、特定された前記
箇所を示すアドレスを記録する解析ステップとを備え、
前記プログラム実行ステップは、前記被置換命令特定ス
テップにより特定された前記命令コードを前記被置換命
令特定ステップより取得して実行し、該命令コードに続
いて実行されるべき命令コードを逐次実行するステップ
を備える、ことを特徴とする。
【0018】このようなスタックポインタトレース方法
によれば、スタックポインタの指示先のアドレスが変更
される度に、該アドレスが前記解析ステップにより蓄積
される。また、スタックポインタの指示先のアドレスを
変更する命令を示す命令コードは、前記被置換命令検索
ステップにより特定されるので、スタックポインタの指
示先のアドレスが変更された原因も特定される。
【0019】また、この発明の第3の観点にかかるコン
ピュータ読み取り可能な記録媒体は、コンピュータを、
スタック領域にアクセスしてデータを読み書きするプロ
グラムのプログラムコードを記憶するプログラム記憶手
段と、前記プログラム記憶手段が記憶する前記プログラ
ムコード上における、前記スタックポインタの指示先を
変更する命令が記述されている位置を特定し、該命令を
所定のマーカに置換する命令変更手段と、前記命令変更
手段により前記マーカに置換された前記命令コードと、
該命令コードが記述されていた前記プログラムコード上
の位置を示す情報とを、互いに対応付けて記憶する被置
換命令記憶手段と、前記被置換命令変更手段により前記
命令が前記マーカに置換された前記プログラムコードに
含まれる前記命令コードを逐次実行しつつ前記マーカを
検出し、該マーカが記述されている前記プログラムコー
ド上の位置を特定して、該位置を示す情報を出力するプ
ログラム実行手段と、前記プログラム実行手段より、前
記プログラム実行手段が検出した前記マーカの位置を示
す情報を取得して、前記命令記憶手段に記憶されている
前記命令コードのうち、取得した前記マーカの位置に記
述されていたものを特定する被置換命令検索手段と、前
記スタックポインタが現に指示している箇所と、前記被
置換命令検索手段により特定された前記命令コードとに
基づいて、該命令コードが実行された場合において前記
スタックポインタが指示すべき箇所を特定し、特定され
た前記箇所を示すアドレスを記録する解析手段として機
能させ、前記プログラム実行手段を、前記被置換命令特
定手段により特定された前記命令コードを前記被置換命
令特定手段より取得して実行し、該命令コードに続いて
実行されるべき命令コードを逐次実行する手段として機
能させる、ためのプログラムを記録したことを特徴とす
る。
【0020】このような記録媒体に記録された前記プロ
グラムを実行する前記コンピュータは、スタックポイン
タの指示先のアドレスが変更される度に、該アドレスを
前記解析手段により蓄積するスタックポインタトレース
装置として機能する。また、前記コンピュータは、スタ
ックポインタの指示先のアドレスを変更する命令を示す
命令コードを、前記被置換命令検索手段の機能を行うこ
とにより特定するので、スタックポインタの指示先のア
ドレスが変更された原因も特定される。
【0021】
【発明の実施の形態】以下、この発明の実施の形態にか
かるスタックポインタトレース装置及びスタックポイン
タトレース方法を説明する。 (第1の実施の形態)図1は、この発明の第1の実施の
形態にかかるスタックポインタトレース装置の物理的構
成を示す。図示するように、このスタックポインタトレ
ース装置は、プログラム記憶装置1と、入力装置2と、
トレース装置3と、出力装置4と、情報を記録する記憶
装置5とを含む。
【0022】入力装置2は、キーボードやフロッピーデ
ィスクドライブ等からなり、スタックの使用状況を解析
する対象となるプログラムを入力してプログラム記憶装
置1に供給する。プログラム記憶装置1はRAM(ラン
ダムアクセスメモリ)等からなり、入力装置2から供給
されたプログラムを記憶する記憶領域を備える。また、
プログラム記憶装置1は、プログラムが処理において用
いるデータを格納するスタック領域を確保するための記
憶領域を備える。
【0023】記憶装置5は、命令記憶部51と、解析デ
ータ記憶部52と、トレースデータ記憶部53とを備え
ている。
【0024】命令記憶部51は、スタック領域のうち、
次に読み書きが行われるべき部分のアドレスを指すポイ
ンタ(スタックポインタ)を変更する命令を表す命令コ
ードと、解析する対象のプログラム上で当該命令コード
が存在した位置(アドレス)とを対応づける対応表を記
憶する。
【0025】解析データ記憶部52は、解析する対象の
プログラムが使用するスタック領域を識別する情報から
なる所有者識別子と、当該スタック領域が、プログラム
記憶装置1が備える記憶領域中において占める範囲(ア
ドレス範囲)を示す情報とを互いに対応付ける対応表を
記憶する。
【0026】トレースデータ記憶部53は、このスタッ
クポインタトレース装置が実行した各プログラムが過去
に使用したスタック領域を識別する上述の所有者識別子
と、該スタック領域のうち、各プログラムが読み書きを
行った部分のアドレスを指すスタックポインタの値と、
各プログラムに割り当てられているスタック領域のアド
レス範囲とを、これらが互いに対応づけられた対応表の
形をとって記録する。
【0027】トレース装置3は、命令変更手段31と、
解析データ記憶手段32と、解析手段33とを備えてい
る。
【0028】命令変更手段31は、スタックポインタを
変更するための命令コードが解析する対象のプログラム
に含まれている場合、その命令コードを命令記憶部51
に記録する。そして、解析する対象のプログラムが記憶
されているプログラム記憶装置1上の記憶領域のうち、
その命令コードが格納されている位置に、その命令コー
ドが命令記憶部51に書き移されたことを示すコード
(ブレーク例外コード)を上書きする。
【0029】解析データ記憶手段32は、解析する対象
のプログラムが使用するスタック領域の新規割り当てや
変更があるとき、割り当てられたスタック領域や変更後
のスタック領域のアドレス範囲等を調べ、調べた結果
を、上述の対応表の形式をとって解析データ記憶部52
に記録する。
【0030】解析手段33は、命令記憶部51に記憶さ
れているデータに基づいて、解析する対象のプログラム
により変更されるスタックポインタの変更後の値を計算
し、解析データ記憶部52に記録されているスタック領
域のアドレス範囲のデータと共に、トレースデータ記憶
部53に記録する。解析手段33は、スタックポインタ
の値の計算結果が、解析データ記憶部52に記録されて
いるスタック領域のアドレス範囲に含まれない値である
とき、トレースデータ記憶部53に記憶されている内容
を出力装置4に出力する。
【0031】出力装置4は、ディスプレイ装置や印刷装
置等からなり、トレースデータ記憶部53に記憶されて
いる内容を解析手段33から取得して、取得した内容を
表示、印字等する。
【0032】次に、図1および図2を参照してこのスタ
ックポインタトレース装置の動作を説明する。図2のス
テップA1からA3までは、解析対象のプログラムを実
行する前に行う処理を示す。図2のステップA4からA
6は、解析対象のプログラムを実行中の処理を示す。図
2のステップA7からA12は、ブレーク例外発生後の
処理を示す。
【0033】(解析対象のプログラムを実行する前の処
理)まず、入力装置2から、スタックポインタを変更す
る命令を含んだ解析対象のプログラムが供給され、プロ
グラム記憶装置1に格納される。次に、命令変更手段3
1は、プログラム記憶装置1から該プログラムを順次読
み取って解析することにより、スタックポインタを変更
する命令を表す命令コードがある該プログラム上のアド
レスを特定する。そして、該アドレスと、該アドレスに
あった命令コードとを対応づける対応表を作成して命令
記憶部51に格納する(ステップA1)。次に、命令変
更手段31は、ステップA1で特定されたアドレスにブ
レーク例外コードを上書きする(ステップA2)。そし
て、該プログラムにスタック領域を新規に割り当て、該
スタック領域を識別する所有者識別子を作成し、割り当
てられたスタック領域のアドレス範囲と、作成された所
有者識別子とを互いに対応づける対応表を作成して解析
データ記憶部52に格納した後、解析対象のプログラム
を実行する(ステップA3)。
【0034】(解析対象のプログラム実行中の処理)解
析対象のプログラムを実行中、該プログラム自身が使用
するスタック領域を変更する処理が行われた場合(ステ
ップA4)、解析データ記憶部52に格納されている対
応表を更新するため、解析対象のプログラムから解析デ
ータ記憶手段32が呼ばれる。解析データ記憶手段32
は、解析データ記憶部52が格納している対応表のう
ち、解析対象のプログラムが使用するスタック領域を識
別する所有者識別子を含むものを特定し、その所有者識
別子に対応づけられているアドレス範囲を、ステップA
4の処理で変更された後のアドレス範囲に更新する(ス
テップA5)。
【0035】(ブレーク例外発生後の処理)実行中にブ
レーク例外が発生すると(ステップA7)、解析手段3
3が、ステップA8以降の処理を実行する。解析手段3
3は、ブレーク例外が発生したアドレスを特定し、命令
記憶部51に格納されている対応表を検索することによ
り、特定されたアドレスに存在していた元の命令コード
を特定する(ステップA8)。そして、特定された命令
コード(スタックポインタの値を変更する命令を示す命
令コード)と、ブレーク例外が発生した時点におけるス
タックポインタの値とに基づき、解析対象のプログラム
が設定しようとしていたスタックポインタの値を求める
(ステップA9)。例えば、特定された命令コードが、
変更前のスタックポインタが示すアドレスにデータをプ
ッシュする(書き込む)命令を示すものである場合、解
析手段33は、ブレーク例外が発生した時点におけるス
タックポインタの値に1を加算し、得られた値を、解析
対象のプログラムが設定しようとしていたスタックポイ
ンタの値とする。
【0036】次に、解析手段33は、解析データ記憶部
52から、解析対象のプログラムが使用しているスタッ
ク領域を識別する所有者識別子と、該スタック領域のア
ドレス範囲の情報とを読み出す。そして、読み出した情
報と、ステップA9で求められたスタックポインタの値
とを、トレースデータ記憶部53に記憶する(ステップ
A10)。
【0037】さらに、解析手段33は、ステップA9で
求めたスタックポインタの値が解析データ記憶部52に
記憶されているアドレス範囲内(すなわち、解析対象の
プログラムに割り当てられているスタック領域があるア
ドレス範囲内)のアドレスを指しているか否かを判別す
る(ステップA11)。そして、該アドレス範囲内のア
ドレスを指していない場合は、スタックポインタが不正
に変更されたものと判断し、プログラムを停止して終了
する。該アドレス範囲内にある場合は、命令記憶部51
に格納されている対応表を検索することにより、ブレー
ク例外が発生したアドレスに存在していた命令コード
(元命令)を特定する。そして、特定された元命令を実
行した後、解析対象のプログラムが示す処理のうち、そ
の元命令を実行する処理の次に実行されるべき処理を実
行させる(ステップA12)。
【0038】以下、このスタックポインタトレース装置
は、解析対象のプログラムが最後まで走行する(ステッ
プA6)か、又は、ステップA11でスタックポインタ
が不正に変更されたと判断されるまで、解析対象のプロ
グラムを走行させる。
【0039】このようにして、このスタックポインタト
レース装置は、解析対象のプログラムによるスタックの
使用状況を示す情報として、(1)該プログラムがスタ
ックポインタの値を変更した場合の変更後のスタックポ
インタの値と、(2)該プログラムが使用しているスタ
ック領域を識別する所有者識別子と、(3)該スタック
領域のアドレス範囲を示す情報と、をトレースデータ記
憶部53に蓄積しながら、解析対象のプログラムを実行
する。
【0040】(第2の実施の形態)以上説明した第1の
実施の形態では、全てのスタックの使用状況を示すデー
タが収集されていた。しかし、使用状況を示すデータ
は、特定のスタックに限定して収集されてもよく、これ
により、トレースデータ記憶部53が有する記憶領域を
有効に活用でき、また収集されたデータの整理も容易と
なる。以下、特定のスタックの使用状況を示すデータを
収集する、この発明の第2の実施の形態にかかるスタッ
クポインタトレース装置を説明する。
【0041】図3は、この発明の第2の実施形態にかか
るスタックポインタトレース装置の構成を示す。図示す
るように、このスタックポインタトレース装置のトレー
ス装置3は、図1に示すトレース装置3の構成に加えて
スタック選択手段34を備える。また、このスタックポ
インタトレース装置の記憶装置5は、図1に示す記憶装
置5の構成に加えて、選択スタック記憶部54を備え
る。
【0042】選択スタック記憶部54は、操作者等が入
力装置2を用いて入力した、トレースデータ記憶部53
に使用状況を記録する対象のスタック領域を識別する所
有者識別子を記憶する。
【0043】スタック選択手段34は、解析データ記憶
部52に記憶されている所有者識別子と、選択スタック
記憶部54に記憶されている所有者識別子とが実質的に
一致するか否かを判別する。そして、両者が一致すると
判別されたとき、解析対象のプログラムが使用している
スタック領域が、使用状況を記録する対象のスタック領
域であると判断し、解析手段33に処理を実行させる。
【0044】次に、図4を参照して、このスタックポイ
ンタトレース装置の動作を説明する。なお、図4に示す
ステップA1からA12は、図2に示すステップA1か
らA12と実質的に同一の処理である。また、このスタ
ックポインタトレース装置における命令変更手段31、
解析データ記憶手段32及び解析手段33の動作は、第
1の実施の形態における命令変更手段31、解析データ
記憶手段32及び解析手段33の動作と実質的に同一で
ある。
【0045】まず、操作者等が、入力装置2を用いて、
使用状況を記録する対象のスタック領域を示す所有者識
別子を入力すると、選択スタック記憶部54が、入力さ
れた所有者識別子を記憶する(ステップB1)。ステッ
プB1の処理が終了すると、このスタックポインタトレ
ース装置は、ステップA1以降の処理を実行する。
【0046】解析対象のプログラムの実行中、ブレーク
例外が発生すると、スタック選択手段34が、ステップ
B2の処理を実行する。ステップB2において、スタッ
ク選択手段34は、解析データ記憶部52に記憶されて
いる所有者識別子と、選択スタック記憶部54に記憶さ
れている所有者識別子とが実質的に一致するか否かを判
別する。すなわち、スタック選択手段34は、解析対象
のプログラムが使用しているスタック領域が、使用状況
を記録する対象のスタック領域であるか否かを判別す
る。
【0047】そして、両者が一致すると判別されたと
き、解析手段33にステップA8以降の処理を行うよう
指示し、指示を受けた解析手段33は、ステップA8以
降の処理を行う。一致しないと判別されたとき、スタッ
ク選択手段34は、解析手段33にステップA12以降
の処理を行うよう指示する。指示を受けたスタック選択
手段34は、ステップA12の処理を行う。すなわち、
ブレーク例外が発生したアドレスに存在した元命令を実
行し、再び解析対象のプログラムの実行を開始する。
【0048】以上、この発明の実施の形態を説明した
が、この発明のスタックポインタトレース装置は、専用
のシステムによらず、通常のコンピュータシステムを用
いて実現可能である。例えば、パーソナルコンピュータ
に上述の動作を実行するためのプログラムを格納した媒
体(フロッピーディスク、CD−ROM等)から該プロ
グラムをインストールすることにより、上述の処理を実
行するスタックポインタトレース装置を構成することが
できる。
【0049】また、コンピュータにプログラムを供給す
るための媒体は、通信媒体(通信回線、通信ネットワー
ク、通信システムのように、一時的且つ流動的にプログ
ラムを保持する媒体)でも良い。例えば、通信ネットワ
ークの掲示板(BBS)に該プログラムを掲示し、これ
をネットワークを介して配信してもよい。そして、この
プログラムを起動し、OSの制御下に、他のアプリケー
ションプログラムと同様に実行することにより、上述の
処理を実行することができる。
【0050】なお、OSが処理の一部を分担する場合
や、OSが本願発明のいくつかの構成要素を構成する場
合や、OSが1つの構成要素の一部を構成するような場
合には、記録媒体には、その部分をのぞいたプログラム
を格納してもよい。この場合も、その記録媒体には、コ
ンピュータが実行する各機能又はステップを実行するた
めのプログラムが格納されているものとする。
【0051】
【発明の効果】以上説明したように、この発明によれ
ば、プログラムを実行中に、そのプログラムによるスタ
ックの使用状況が正確に把握できるスタックポインタト
レース装置及びスタックポインタトレース方法が実現さ
れる。
【図面の簡単な説明】
【図1】この発明の第1の実施の形態にかかるスタック
ポインタトレース装置の基本構成を示すブロック図であ
る。
【図2】図1のスタックポインタトレース装置が実行す
る処理を示すフローチャートである。
【図3】この発明の第2の実施の形態にかかるスタック
ポインタトレース装置の基本構成を示すブロック図であ
る。
【図4】図3のスタックポインタトレース装置が実行す
る処理を示すフローチャートである。
【符号の説明】
1 プログラム記憶装置 2 入力装置 3 トレース装置 31 命令変更手段 32 解析データ記憶手段 33 解析手段 34 スタック選択手段 4 出力装置 5 記憶装置 51 命令記憶部 52 解析データ記憶部 53 トレースデータ記憶部 54 選択スタック記憶部

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】スタック領域にアクセスしてデータを読み
    書きするプログラムが実行される間に、前記データを読
    み書きする位置を指示するスタックポインタの指示先を
    示すアドレスを記録するためのスタックポインタトレー
    ス装置であって、 前記プログラムのプログラムコードを記憶するプログラ
    ム記憶手段と、 前記プログラム記憶手段が記憶する前記プログラムコー
    ド上における、前記スタックポインタの指示先を変更す
    る命令が記述されている位置を特定し、該命令を所定の
    マーカに置換する命令変更手段と、 前記命令変更手段により前記マーカに置換された前記命
    令コードと、該命令コードが記述されていた前記プログ
    ラムコード上の位置を示す情報とを、互いに対応付けて
    記憶する被置換命令記憶手段と、 前記被置換命令変更手段により前記命令が前記マーカに
    置換された前記プログラムコードに含まれる前記命令コ
    ードを逐次実行しつつ前記マーカを検出し、該マーカが
    記述されている前記プログラムコード上の位置を特定し
    て、該位置を示す情報を出力するプログラム実行手段
    と、 前記プログラム実行手段より、前記プログラム実行手段
    が検出した前記マーカの位置を示す情報を取得して、前
    記命令記憶手段に記憶されている前記命令コードのう
    ち、取得した前記マーカの位置に記述されていたものを
    特定する被置換命令検索手段と、 前記スタックポインタが現に指示している箇所と、前記
    被置換命令検索手段により特定された前記命令コードと
    に基づいて、該命令コードが実行された場合において前
    記スタックポインタが指示すべき箇所を特定し、特定さ
    れた前記箇所を示すアドレスを記録する解析手段とを備
    え、 前記プログラム実行手段は、前記被置換命令特定手段に
    より特定された前記命令コードを前記被置換命令特定手
    段より取得して実行し、該命令コードに続いて実行され
    るべき命令コードを逐次実行する手段を備える、 ことを特徴とするスタックポインタトレース装置。
  2. 【請求項2】前記プログラム実行手段は、自らが実行し
    ている前記プログラムが使用する対象の前記スタック領
    域を識別する識別情報を記憶する手段を備え、 前記解析手段は、 特定の前記スタック領域を識別する識別情報を記憶する
    手段と、 前記プログラム実行手段より、前記プログラム実行手段
    が記憶している前記識別情報を取得して、該識別情報
    が、自らが記憶する前記識別情報と実質的に同一のスタ
    ック領域を示すか否かを判別し、示すと判別されたと
    き、前記被置換命令検索手段により特定された前記命令
    コードが実行された場合においてスタックポインタが指
    示先すべきアドレスを特定する手段とを備える、 ことを特徴とする請求項1に記載のスタックポインタト
    レース装置。
  3. 【請求項3】前記解析手段は、 前記プログラムが使用し得る前記スタック領域を特定す
    るスタック領域情報を記憶するスタック領域記憶手段
    と、 該解析手段自身により特定された前記アドレスが、前記
    スタック領域情報が示すスタック領域上にあるか否かを
    判別し、ないと判別された場合に判別結果を外部に通知
    する異常アクセス通知手段とを備える、 ことを特徴とする請求項1又は2に記載のスタックポイ
    ンタトレース装置。
  4. 【請求項4】前記異常アクセス通知手段は、前記解析手
    段により特定された前記アドレスが前記スタック領域情
    報が示すスタック領域上にないと判別された場合に、前
    記プログラム実行手段が実行している前記プログラムの
    処理を停止する手段を備える、 ことを特徴とする請求項3に記載のスタックポインタト
    レース装置。
  5. 【請求項5】前記プログラム実行手段は、 前記プログラムが使用し得る前記スタック領域を変更す
    るための前記命令コードを検知するスタック変更命令検
    知手段と、 前記スタック変更命令検知手段が検知した前記命令コー
    ドを実行したとき、変更後の前記スタック領域を特定す
    る前記スタック領域情報を新たに作成し、前記スタック
    領域記憶手段に記憶されている変更前の前記スタック領
    域情報を、新たに作成された前記スタック領域情報に更
    新する手段とを備える、 ことを特徴とする請求項3又は4に記載のスタックポイ
    ンタトレース装置。
  6. 【請求項6】スタック領域にアクセスしてデータを読み
    書きするプログラムが実行される間に、前記データを読
    み書きする位置を指示するスタックポインタの指示先を
    示すアドレスを記録するためのスタックポインタトレー
    ス装置であって、 前記プログラムのプログラムコードを記憶するプログラ
    ム記憶ステップと、 前記プログラム記憶ステップが記憶する前記プログラム
    コード上における、前記スタックポインタの指示先を変
    更する命令が記述されている位置を特定し、該命令を所
    定のマーカに置換する命令変更ステップと、 前記命令変更ステップにより前記マーカに置換された前
    記命令コードと、該命令コードが記述されていた前記プ
    ログラムコード上の位置を示す情報とを、互いに対応付
    けて記憶する被置換命令記憶ステップと、 前記被置換命令変更ステップにより前記命令が前記マー
    カに置換された前記プログラムコードに含まれる前記命
    令コードを逐次実行しつつ前記マーカを検出し、該マー
    カが記述されている前記プログラムコード上の位置を特
    定して、該位置を示す情報を出力するプログラム実行ス
    テップと、 前記プログラム実行ステップより、前記プログラム実行
    ステップが検出した前記マーカの位置を示す情報を取得
    して、前記命令記憶ステップに記憶されている前記命令
    コードのうち、取得した前記マーカの位置に記述されて
    いたものを特定する被置換命令検索ステップと、 前記スタックポインタが現に指示している箇所と、前記
    被置換命令検索ステップにより特定された前記命令コー
    ドとに基づいて、該命令コードが実行された場合におい
    て前記スタックポインタが指示すべき箇所を特定し、特
    定された前記箇所を示すアドレスを記録する解析ステッ
    プとを備え、 前記プログラム実行ステップは、前記被置換命令特定ス
    テップにより特定された前記命令コードを前記被置換命
    令特定ステップより取得して実行し、該命令コードに続
    いて実行されるべき命令コードを逐次実行するステップ
    を備える、 ことを特徴とするスタックポインタトレース方法。
  7. 【請求項7】コンピュータを、 スタック領域にアクセスしてデータを読み書きするプロ
    グラムのプログラムコードを記憶するプログラム記憶手
    段と、 前記プログラム記憶手段が記憶する前記プログラムコー
    ド上における、前記スタックポインタの指示先を変更す
    る命令が記述されている位置を特定し、該命令を所定の
    マーカに置換する命令変更手段と、 前記命令変更手段により前記マーカに置換された前記命
    令コードと、該命令コードが記述されていた前記プログ
    ラムコード上の位置を示す情報とを、互いに対応付けて
    記憶する被置換命令記憶手段と、 前記被置換命令変更手段により前記命令が前記マーカに
    置換された前記プログラムコードに含まれる前記命令コ
    ードを逐次実行しつつ前記マーカを検出し、該マーカが
    記述されている前記プログラムコード上の位置を特定し
    て、該位置を示す情報を出力するプログラム実行手段
    と、 前記プログラム実行手段より、前記プログラム実行手段
    が検出した前記マーカの位置を示す情報を取得して、前
    記命令記憶手段に記憶されている前記命令コードのう
    ち、取得した前記マーカの位置に記述されていたものを
    特定する被置換命令検索手段と、 前記スタックポインタが現に指示している箇所と、前記
    被置換命令検索手段により特定された前記命令コードと
    に基づいて、該命令コードが実行された場合において前
    記スタックポインタが指示すべき箇所を特定し、特定さ
    れた前記箇所を示すアドレスを記録する解析手段として
    機能させ、 前記プログラム実行手段を、前記被置換命令特定手段に
    より特定された前記命令コードを前記被置換命令特定手
    段より取得して実行し、該命令コードに続いて実行され
    るべき命令コードを逐次実行する手段として機能させ
    る、 ためのプログラムを記録したコンピュータ読み取り可能
    な記録媒体。
JP00761498A 1998-01-19 1998-01-19 スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体 Expired - Fee Related JP3309792B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354575A (zh) * 2016-08-12 2017-01-25 中国航空工业集团公司西安飞行自动控制研究所 一种基于堆栈追溯的故障排查装置和方法

Citations (7)

* Cited by examiner, † Cited by third party
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 マイクロコンピュータおよびこれを用いたリアルタイムシステム

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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