JPH10289110A - プログラム変換装置とデバッグ装置 - Google Patents

プログラム変換装置とデバッグ装置

Info

Publication number
JPH10289110A
JPH10289110A JP9095486A JP9548697A JPH10289110A JP H10289110 A JPH10289110 A JP H10289110A JP 9095486 A JP9095486 A JP 9095486A JP 9548697 A JP9548697 A JP 9548697A JP H10289110 A JPH10289110 A JP H10289110A
Authority
JP
Japan
Prior art keywords
function
execution
variable
code
unit
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
JP9095486A
Other languages
English (en)
Inventor
Fumio Sumi
史生 角
Yoshiyuki Iwamura
喜之 岩村
Motohide Nishihata
素秀 西畑
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP9095486A priority Critical patent/JPH10289110A/ja
Publication of JPH10289110A publication Critical patent/JPH10289110A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラム変換装置において最適化処理が行
なわた場合において、ユーザから変数値の参照要求や、
関数の呼び出し履歴要求が発生した際、変数の値や展開
された関数の呼び出し履歴の表示を可能にする。 【解決手段】 デバッグ情報記憶部103は、プログラム
変換装置の最適化部105が行なった最適化結果を記録す
る。コード実行部203はデバッグ対象のコードを実行コ
ード記憶102より得て実行を行なう。実行状態監視部204
は、コード実行部203を監視し、実行位置が資源割当さ
れた変数や、レジスタによる引数の値渡しや、展開され
た関数が実行される状態が発生した時、実行状態をコー
ド実行部203から取得し、実行状態記憶部201に記録す
る。ユーザが入力部202に対して変数参照の要望を出し
た時、変数値表示部206は、変数の値がコード実行部203
から取得不可能な場合は、実行状態記憶部201より値を
得て変数値表示部206において表示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウエア開発に
おいて、プログラムを実行コードに変換するプログラム
変換装置と、プログラム変換装置によって生成された実
行コードにおける誤りを発見し、設計通りにソフトウエ
アが動作するか検証するデバッグ装置に関するものであ
る。
【0002】
【従来の技術】近年、ソフトウエアの実行効率を高め、
さらにコードサイズを縮小するため、最適化を行うプロ
グラム変換装置に対する要求が高まっている。最適化技
術の向上に伴い、プログラム変換装置が一時変数を生成
し、プログラムの変数を一時変数に置換した上で最適化
を行う方式が主流となっている。
【0003】図12は従来の最適化情報を出力するプロ
グラム変換装置の構成を示すものである。図12におい
て、301はプログラム記憶部で、変換対象のプログラ
ムが記憶されている。302は実行コード記憶部で、生
成された実行コードを記憶する。303はデバッグ情報
記憶部で、行アドレス情報記憶部3031と、関数情報
記憶部3032と、変数情報記憶部3033から構成さ
れる。行アドレス情報記憶部3031は、プログラムの
行と実行コードのアドレスの対応が記憶される。関数情
報記憶部3032は、関数の開始アドレス、関数の引数
と変数の名前と型、変数がスタックに確保される場合
は、スタックのオフセット値が記憶される。変数情報記
憶部3033は、変数と割り付けられたレジスタと範囲
の対応が記憶される。304は内部表現変換部で、プロ
グラムをプログラム記憶部301から得てプログラム変
換装置で使用する内部表現に変換する。305は最適化
部で、内部表現変換部304が変換した内部表現を最適
なコードを生成できるよう変換する。最適化部には、資
源割当部3051を有し、プログラム中の変数をレジス
タに割り当てる処理が行われる。306はコード生成部
で、最適化部305で資源の割り付けを終えた内部表現
をもとに実行コードを生成し、実行コード記憶部302
に記憶する。また、レジスタに割り当てられなかった変
数をスタックに割り当てる。307はデバッグ情報生成
部で、行とアドレスの関係を行アドレス情報記憶部30
31に出力する。さらに、関数のアドレス、関数の変数
に関する情報を関数情報記憶部3032に出力する。さ
らに、最適化部305で行われた結果を変数と資源と範
囲の情報で表現し、変数情報記憶部3033に出力す
る。
【0004】以上のように構成されたプログラム変換装
置について、以下その動作について説明する。
【0005】図13(A)はプログラム記憶部301の内
容を表す。本実施例で用いるハードウエアモデルを図4
に示す。中央演算処理装置には、データ用のレジスタが
D0、D1、D2、D3、アドレス用のレジスタがA0、A1、A2、
A3が用意されている。また、現在実行中のアドレスを示
すプログラムカウンタPC、現在のスタックの先頭位置を
表すスタックポインタSPが用意されている。実行コード
とスタックはメモリ上に配置されている。スタックの構
造は図8の(A)であるとする。すなわち、関数を呼び出
し側のスタック開始位置、関数も戻り先番地、関数の戻
り値、関数に引数、ローカル変数から構成され、関数呼
び出しの際、新たなスタックが確保されるものとする。
内部表現変換部304では、プログラム記憶部301よ
りプログラムを得て、内部表現に変換する。次に、最適
化部305では、内部表現変換部304で変換された内
部表現に含まれる変数に対してレジスタを割り当てる最
適化を行う。関数mainの変数iに対してはレジスタD1、
関数testの変数iに対してはレジスタD1、関数testの変
数jに対してはレジスタD1、関数calcの変数xに対しては
レジスタD1をそれぞれ割り当てる。
【0006】次に、コード生成部306で、実行コード
を生成する。この結果、実行コード記憶部には、実行コ
ードが記憶される。実行コード記憶部302の内容を図
13の(B)に示す。
【0007】次に、デバッグ情報生成部307で、行と
アドレスの関係をデバッグ情報記憶部303内の行アド
レス情報記憶部3031に出力する。行アドレス情報記
憶部3031の内容を図14の(A)に示す。
【0008】次に、デバッグ情報生成部307では、関
数の変数、関数の開始アドレスに関する情報を関数情報
記憶部3032に出力する。関数情報記憶部3032の
内容を図14の(B)に示す。
【0009】次に、デバッグ情報生成部307では、変
数と資源と有効範囲を変数情報記憶部3033に出力す
る。変数情報記憶部3033の内容を図14の(C)に示
す。
【0010】以下図面を参照しながら、従来のデバッグ
装置の一例について説明する。図15は従来のデバッグ
装置の構成を示すものである。図15において、301
はプログラム記憶部であり、プログラムが記憶されてい
る。302は実行コード記憶部であり、生成された実行
コードが記憶されている。303はデバッグ情報記憶部
で、プログラムの行と実行コードのアドレスの対応を示
す行アドレス情報記憶部3031と、関数の情報を表す
関数情報記憶部3032と変数と割り付けられたレジス
タと範囲の対応を表す変数情報記憶部3033から構成
される。401は入力部であり、オペレータが設定や参
照したい変数を指定する。402はコード実行部であ
り、実行コード記憶部302より実行コードを得て実行
する。シミュレータ、モニタ、インサーキットエミュレ
ータのいずれかで構成され、実行の停止や変数の参照、
設定が可能である。403は変数操作部であり、入力部
401で指定された変数の資源情報を関数情報記憶部3
032と変数情報記憶部3033より得て、割り付けら
れた資源を判断し、コード実行部402に問い合わせて
変数の値を得る。404は変数値表示部であり、変数操
作部403で得られた変数の値を表示する。405は関
数呼び出し履歴表示部であり、現在の停止位置に至る関
数呼び出しの履歴が表示される。表示内容として、関数
名と引数と値で構成される。
【0011】以上のように構成されたデバッグ装置につ
いて、以下その動作について説明する。プログラム記憶
部301の内容は図13の(A)であるとする。実行コー
ド記憶部302の内容は図13の(B)であるとする。行
アドレス情報記憶部3031、関数情報記憶部303
2、変数情報記憶部3033の内容は、図14の(A)、
(B)、(C)であるとする。
【0012】コード実行部402はエミュレータであ
り、CPUとメモリから構成され、メモリ上には、実行コ
ードとスタックが置かれているとする。関数mainが実行
される状態において、コード実行部203内のスタック
は図9の(A)であるとする。また、同様に、実行状態
記憶部201におけるフレームは図9の(B)であると
する。
【0013】オペレータは入力部401に対して、『1
9行目まで実行せよ』と入力する。図17の(A)を参照
のこと。
【0014】次に、コード実行部402では、19行目
に相当するアドレスを行アドレス情報記憶部3031よ
り得て0x154番地であることを得る。実行コードを実行
コード記憶部302より得て指定された0x154番地まで
実行する。実行の際、CPUは関数呼び出しを行なうた
め、スタックに必要な情報を積む。0x154に到達した
時、コード実行部402内のスタックは、図16の通り
である。すなわち、関数main,関数test,関数calcのスタ
ックが確保されており、各々のスタックには、関数呼び
出しの際の引数と戻り先が記録されている。
【0015】次にユーザが入力部401に対して、関数
呼び出し履歴情報を出力せよと表示する。関数呼び出し
履歴表示部405は、スタックの情報に基づき、呼ばれ
た関数と引数を表示する。表示結果を図17の(B)に示
す。
【0016】次にユーザが入力部に対して、『Line:14
における変数jを表示せよ』と入力する。コード実行部
203では、Line14に対応する番地を行アドレス情報記
憶部3031より得る。Line14に該当するアドレスが0x
140であると判断し、0x140まで実行する。
【0017】次に、変数操作部403では、変数情報記
憶部3033より情報を得て、指定された変数jがレジ
スタD1に割り当てられていると判断し、コード実行部に
問い合わせて変数jの値を得る。
【0018】次に変数値表示部404におてい、変数j
の値を表示する。図17(F)を参照のこと。
【0019】次にユーザが入力部に対して、『変数iを
表示せよ』と入力する。変数操作部403では、変数情
報記憶部3033より情報を得て、指定された変数iが
現在どのレジスタにも割り当てられていないと判断す
る。
【0020】次に変数値表示部404におてい、変数i
の値は参照不可能であると表示する。図17(G)を参照
のこと。
【0021】
【発明が解決しようとする課題】しかしながら、上記の
ようなデバッグ装置の構成では、実行停止位置が変数の
参照範囲外である場合、変数値の参照が不可能である。
例えば、変数iは、実行停止位置では変数が置かれたレ
ジスタは別の変数が割り当てられているため、参照不可
能である。このため、ユーザは変数値が参照できずデバ
ッグ効率が低下する問題が発生している。さらに、関数
が展開される最適化や引数がレジスタを用いて渡される
場合、必要な情報がスタックに積まれないため、関数呼
び出し履歴情報の表示が不可能になる。本発明は上記問
題点に鑑み、プログラム変換装置に置いて、資源割当が
行なわれた場合に変数の参照可能な範囲が限定される場
合、参照可能外の区間でも変数に対する参照可能にし、
レジスタを用いた引数渡しや、関数呼び出しの代わりに
関数が展開される場合であっても関数呼び出し履歴情報
が正しく表示可能にするプログラム変換装置とデバッグ
装置を提供することを目的とする。
【0022】
【課題を解決するための手段】この課題を解決するため
に、本発明の請求項1記載のプログラム変換装置は、入
力されたプログラムを最適化する最適化処理手段と最適
化された結果を出力する最適化情報出力手段を有し、前
記最適化処理手段は、関数の内容を関数の呼び出し位置
に展開し、前記最適化情報出力手段は、前記最適化処理
手段により最適化された関数の情報を出力する機能を有
するものである。
【0023】また、本発明の請求項2記載のプログラム
変換装置は、引数の値をレジスタを用いて行なう最適化
処理手段と、前記前記最適化により引数がレジスタによ
り渡される引数の情報を出力する最適化情報出力手段を
備えるものである。
【0024】また、本発明の請求項3記載のデバッグ装
置は、被デバッグプログラムを請求項1から2記載のプ
ログラム変換装置に入力し、該プログラム変換装置と結
合して動作するデバッグ装置において、前記プログラム
変換装置から実行コードを受け実行するコード実行手段
と、前記コード実行手段でコードを実行中に実行状態を
前記実行状態記憶手段に保存する実行状態監視手段と、
ユーザが参照したい変数を指定する入力手段と、変数値
を表示する表示手段を備えるものである。
【0025】また、本発明の請求項4記載のデバッグ装
置は、請求項3記載のデバッグ装置に対して、前記表示
手段において変数の値を前記実行状態記憶手段から得た
事を示す記号を付与して変数値を表示する機能を有する
ものである。
【0026】また、本発明の請求項5記載のデバッグ装
置は、請求項4記載のデバッグ装置に対して、前記プロ
グラム変換装置の最適化機能により関数呼び出し時に、
引数使用後に引数の値が破壊される可能がある場合、前
記コード実行手段において関数の呼び出しが行なわれた
際、関数の引数の値を前記コード実行手段より得て前記
実行状態記憶手段に保存する実行状態監視手段と、前記
入力手段に対して引数参照の要求があった際に、引き数
の値を実行状態記憶手段から得て表示する表示手段を追
加したものである。
【0027】また、本発明の請求項6記載のデバッグ装
置は、請求項5記載のデバッグ装置の前記表示手段にお
いて、引数の値を前記実行状態記憶手段から得た事を示
す記号を付与して表示する機能を有するものである。
【0028】また、本発明の請求項7記載のデバッグ装
置は、請求項6記載のデバッグ装置に対して、前記プロ
グラム変換装置の最適化機能により、関数が展開された
場合、前記コード実行実行部において展開された関数の
開始位置における実行に関する情報と前記コード実行実
行部において展開された関数の終了位置における実行に
関する情報を実行状態記憶手段に保存する実行状態保存
手段と、関数の呼び出し履歴を表示する関数呼び出し履
歴表示手段を追加したものである。
【0029】また、本発明の請求項8記載のデバッグ装
置は、請求項7記載のデバッグ装置における前記関数呼
び出し履歴表示手段において、最適化により展開された
関数であることを示す記号を付与すること機能を有する
ものである。
【0030】また、本発明の請求項9記載のデバッグ装
置は、請求項7記載のデバッグ装置における前記実行状
態記憶手段において、前記実行コード手段における関数
の実行開始と実行終了に連動して、情報が追加、削除さ
れる機能を有するものである。
【0031】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図1から図11を用いて説明する。
【0032】まず本発明の実施の形態におけるプログラ
ム変換装置を示す。図1の(A)は本発明のプログラム変
換装置とデバッグ装置の構成図を示すものである。
【0033】101はプログラム記憶部で、変換対象の
プログラムが記憶されている。102は実行コード記憶
部で、プログラム変換装置によって変換された実行コー
ドが記憶される。
【0034】103はデバッグ情報記憶部で、デバッグ
情報記憶部は、関数情報記憶部1031、変数情報記憶
部1032、展開関数情報記憶部1033、行アドレス
情報記憶部1034から構成される。
【0035】関数情報記憶部1031は関数の開始アド
レスと引数に関する情報を記憶する。変数情報記憶部1
032は、変数の資源と有効範囲を記憶する。展開関数
情報記憶部1033は、最適化により展開された関数の
開始位置と終了位置、引数の情報を記憶する。行アドレ
ス情報記憶部1034は、プログラムの行と実行コード
のアドレスの対応付け情報を記憶する。
【0036】104は内部表現変換部でプログラム記憶
部101から得たプログラムに対して、内部表現変換を
行ない、中間コードに変換する。
【0037】105は最適化部で、最適化部105は、
関数展開最適化部1051、引数最適化部1052、資
源割当部1053から構成され、内部表現変換部104
で生成された中間コードに対して最適化を行なう。関数
展開最適化部1051は、関数呼び出の位置に、呼び出
される関数の内容を展開する。引数最適化部1052
は、関数呼び出しの際、引数がレジスタにより渡すのが
可能な場合、スタックではなくレジスタを用いて引数を
渡すよう中間コードを変更する。資源割当部1053
は、変数に対して資源(レジスタ、スタック)を割り当
てる。割り当てた資源を変数情報記憶部1032に記録
する。
【0038】107はデバッグ情報生成部で、関数展開
最適化部1051において、関数が展開された場合、展
開された関数の開始位置、終了位置、変数に関する情報
を展開関数情報記憶部1033に記録する。また、引数
最適化部1052において、引数の最適化が行なわれた
場合、関数名と引数、引数を表すレジスタを関数情報記
憶部1031に記録する。さらに、スタックで呼び出さ
れる関数の情報も同時に記録する。また、資源割当部1
053において、変数の資源割当が行なわれた場合、引
数と資源を変数情報記憶部1032に記録する。
【0039】106はコード生成部で、最適化部105
で最適化された中間コードに対して実行コードを生成
し、実行コード記憶部102に記録する。
【0040】以上のように構成された本発明の実施の形
態によるプログラム変換装置について一例を用いてその
動作を説明する。
【0041】本実施の形態のプログラム変換装置におい
て、実行コードを実行するハードウエアモデルを図4に
示す。中央演算処理装置には、データ用のレジスタがD
0、D1、D2、D3、アドレス用のレジスタがA0、A1、A2、A
3が用意されている。また、現在実行中のアドレスを示
すプログラムカウンタPC、現在のスタックの先頭位置を
表すスタックポインタSPが用意されている。実行コード
とスタックはメモリ上に配置されている。関数を呼び出
す時、引数はスタック、または、レジスタを用いて値を
渡すものとする。返り値はスタックを用いて値を渡すも
のとする。呼び出し先の関数で使用するスタックは、関
数呼び出し側で確保し、関数から戻った後に解放するも
のとする。関数内で使用するレジスタは、関数の実行開
始後に保存し終了時に復元するものとする。スタックの
構造は図8の(A)であるとする。すなわち、関数を呼び
出し側のスタック開始位置、関数も戻り先番地、関数の
戻り値、関数に引数、ローカル変数から構成され、関数
呼び出しの際、新たなスタックが確保されるものとす
る。
【0042】プログラム記憶部101にはプログラムが
記憶されている。図5(A)はプログラム記憶部101に
記憶されているプログラムの例である。図5(A)におい
て、Line1は、関数mainの開始を表す。また、関数main
の引数と返り値が存在しないことを表す。
【0043】Line3は、関数mainで使用するローカル変
数iを宣言する。Line5は、変数iに10を代入する事を表
す。
【0044】Line6は、関数testを呼び出す事を表す。L
ine7は、関数mainの終了を表す。
【0045】Line8は、関数testの開始を表す。関数tes
tの引数がiであり、返り値が存在しないことを表す。
【0046】Line10は、関数testで使用するローカル変
数jを宣言する。Line12は、変数iをインクリメントする
ことを表す。
【0047】Line13は、引数として変数iを用いて関数c
alcを呼び出す事を表す。関数calcの帰り値を変数jに代
入することを表す。
【0048】Line14は、変数jをインクリメントするこ
とを表す。Line15は、関数testの終了を表す。
【0049】Line16は、関数calcの開始を表す。関数ca
lcの引数がxであり、返り値が存在することを表す。
【0050】Line19は、x + 3を計算し、計算結果を変
数xに代入することを表す。Line20は、x * 100を計算
し、計算結果を変数xに代入することを表す。
【0051】Line21は、変数xの値を関数calcの帰り値
とすることを表す。Line22は、関数calcの終了を表す。
【0052】内部表現変換部104は、プログラム記憶
部101からプログラムを得て、文字列から内部表現に
変換する。一般に内部表現は構文解析木で表現される
が、本実施の形態では説明の上で、プログラムに修正を
加える方式で表現する。
【0053】次に、最適化部105では、内部表現変換
部104で生成された内部表現に対して最適化処理を行
う。
【0054】図5の(A)で示されるプログラムに対し
て、関数展開最適化部では、関数calcを呼び出し位置に
展開する。この結果、最適化されたコードは図5の(B)
となる。四角で囲んだ範囲が、関数展開最適化部105
1によって変更されたプログラムの箇所である。変数T1
は関数calcの引数xを表現するために、関数展開最適化
部1051が生成した変数である。次に、資源割当部1
053では、関数mainの変数iに対して、レジスタD1を
割り当てる。また、関数testの変数i,変数jに対してレ
ジスタD1を割り当て、一時変数T1に対して、レジスタD2
を割り当てる。さらに、関数calcの変数xに対して、レ
ジスタD1を割り当てる。さらに、引数最適化部1052
では、関数testの呼び出しにおいて、引数iに関して、
スタックに積まずにレジスタD1を用いて行なう。
【0055】次に、コード生成部106は、最適化部1
05で最適化された内部表現を実行コードに変換する。
変換された実行コードを実行コード記憶部102に出力
する。
【0056】コード生成部106が生成した実行コード
を図6に示す。図6において、各行の意味は以下であ
る。
【0057】0x100の前の_mainは、ラベルを表す。0x10
0は、レジスタの保存を表す。
【0058】0x104は、定数10をレジスタD1に格納する
ことを表す。0x108は、スタックポインタ(SP)を3バイト
分進めることを表す。
【0059】0x10Cは、サブルーチン_testの呼びだしを
表す。0x110は、スタックポインタ(SP)を元に戻すこと
を表す。
【0060】0x114は、レジスタの復元を表す。0x118
は、サブルーチン_mainを呼び出した関数へ戻ることを
表す。
【0061】0x11Cの前の_testは、ラベルを表す。0x11
Cは、レジスタの保存を表す。
【0062】0x120は、レジスタD1の値をインクリメン
トすることを表す。0x124は、レジスタD1の値をレジス
タD2に格納することを表す。
【0063】0x128は、レジスタD2の値に定数3を加え、
計算結果をD2に格納することを表す。
【0064】0x12Cは、レジスタD2の値に定数100をかけ
あわあせ、計算結果をD2に格納することを表す。
【0065】0x130は、レジスタD2の値をレジスタD1に
格納することを表す。0x134は、レジスタD1の値をイン
クリメントすることを表す。
【0066】0x138は、レジスタの復元を表す。0x13C
は、サブルーチン_testを呼び出した関数へ戻ることを
表す。
【0067】0x140の前の_calcは、ラベルを表す。0x14
0は、レジスタの保存を表す。
【0068】0x144は、スタックポインタSPに3を加えた
アドレスで示される値をレジスタD1に格納することを表
す。
【0069】0x148は、レジスタD2の値に定数3を加え、
計算結果をD2に格納することを表す。
【0070】0x14Cは、レジスタD2の値に定数100をかけ
あわあせ、計算結果をD2に格納することを表す。
【0071】0x150は、レジスタD2の値をスタックポイ
ンタSPに2を加えたアドレスで示される場所に格納する
ことを表す。
【0072】0x154は、レジスタの復元を表す。0x158
は、サブルーチン_calcを呼び出した関数へ戻ることを
表す。
【0073】次に、デバッグ情報生成部107では、最
適化部105で行なわれた最適化結果をデバッグ情報記
憶部103に記録する。まず、関数展開最適化部105
1において、関数calcが展開されたため、展開された関
数の開始位置、終了位置、変数に関する情報を展開関数
情報記憶部1033に記録する。
【0074】次に、資源割当部1053において、変数
の資源割り当てが行なわれたので、変数と資源とその有
効範囲を変数情報記憶部1032に記録する。次に、引
数最適化部1052において、関数testの引数がD1レジ
スタを用いて渡されているため、関数情報記憶部103
1に関数名testと引数iと、引数を表すレジスタD2を記
録する。
【0075】さらに、コード生成部106で決定され
た、プログラムの行と生成された実行コードのアドレス
の関係を行アドレス情報記憶部1034に出力する。こ
の結果、作成されたデバッグ情報記憶部103内に含ま
れる行アドレス情報記憶部1034、変数情報記憶部1
032、関数情報記憶部1031、展開関数情報記憶部
1033、の内容を図7の(A),(B),(C),(D)に示す。
【0076】次に本発明の実施の形態におけるデバッグ
装置を示す。図1の(B)は本発明の実施の形態における
プログラム変換装置とデバッグ装置の構成図を表すもの
である。
【0077】101はプログラム記憶部で、プログラム
変換装置の変換対象となったプログラムが記憶されてい
る。
【0078】102は実行コード記憶部で、プログラム
変換装置によって変換された実行コードが記憶される。
【0079】103はデバッグ情報記憶部で、デバッグ
情報記憶部は、関数情報記憶部1031、変数情報記憶
部1032、展開関数情報記憶部1033、行アドレス
情報記憶部1034から構成される。
【0080】201実行状態記憶部で、実行過程で得ら
れた変数と値、関数呼びだし時の関数名、引数の値が記
録される。
【0081】202は入力部で、ユーザが参照したい変
数、または設定したい変数と値を入力する。または、実
行停止させたい行を入力する。
【0082】203はコード実行部で、実行コード記憶
部102より実行コードを得て、実行する。コード実行
部203は、シミュレータ、モニタ、インサーキットエ
ミュレータのいずれかで構成され、実行の停止や変数の
参照、設定が可能である。コード実行部内には、CPU、
メモリが含まれ、メモリ上には、実行コード、スタック
が置かれる。
【0083】204は実行状態監視部で、コード実行部
203の動作を監視し、実行状態に応じて必要な情報を
取得し、実行状態記憶部201に情報を記録する。
【0084】205は変数値取得部で、入力部202で
指定された変数の値をコード実行部203、または、実
行状態記憶部201より取得する。
【0085】206は変数値表示部で、変数値取得部2
05で得られた変数の値を表示する。変数のうちで、ス
タック以外から取得した変数に関してはマーク付けして
表示する。
【0086】207は関数呼び出し履歴表示部で、関数
が呼び出された履歴と引数名と値を表示する。引数のう
ちで、レジスタに置かれている変数は、マーク付けして
表示する。また、呼び出された関数の中で、最適化によ
り展開された関数はマーク付けして表示する。
【0087】次に、実行状態監視部204のアルゴリズ
ムを図2のフローチャートを用いて説明する。
【0088】(S01)コード実行部203より実行位置を
得る。 (S02)実行位置は関数コールの位置であるかを実行命令
と比較して判断する。
【0089】もし、実行命令が関数呼び出しであるある
場合、(S07)に移る。そうでない場合は、(S03)に移る。
【0090】(S03)実行位置は関数からのリターンの位
置であるかを実行命令と比較して判断する。
【0091】もし、実行命令が関数からのリターンであ
るある場合、(S09)に移る。そうでない場合は、(S04)に
移る。
【0092】(S04)実行位置は関数展開された関数の開
始位置であるか、展開関数情報記憶部1033の開始情
報と比較して判断する。
【0093】もし開始位置である場合、(S10)に移る。
そうでない場合は、(S05)に移る。
【0094】(S05)実行位置は関数展開された関数の終
了位置であるか、展開関数情報記憶部1033の終了情
報と比較して判断する。
【0095】もし終了位置である場合、(S11)に移る。
そうでない場合は、(S06)に移る。
【0096】(S06)実行位置は参照可能区間の最終位置
であるか変数情報記憶部1032を参照して判断する。
【0097】もし最終位置である場合、(S12)に移る。
そうでない場合は、(S07)に移る。
【0098】(S07)実行状態記憶部201において、新
たなフレームを確保する。(S08)に移る。
【0099】(S08)引数はレジスタ渡しであるか、関数
情報記憶部1031の引数情報を参照して判断する。
【0100】もしレジスタ渡しである場合、(S13)に移
る。そうでない場合は、(S14)に移る。
【0101】(S09)実行状態記憶部201のフレームを
解放する。(S14)に移る。
【0102】(S10)実行状態記憶部201において新た
なフレームを確保する。関数展開された関数であること
を表すフラグを設定する。
【0103】引数に該当する資源を関数情報記憶部10
31より得て、値を得る。得た値を確保したフレームに
保存する。
【0104】(S14)に移る。 (S11)実行状態記憶部201のフレームを解放する。
【0105】(S14)に移る。 (S12)変数名と引数値を得て、実行状態記憶部201の
フレームに保存する。
【0106】(S14)に移る。 (S13)引数名と引数値を得て、実行状態記憶部201の
フレームに保存する。
【0107】(S14)に移る。 (S14)処理を終了する。
【0108】変数値取得部205のアルゴリズムを図3
のフローチャートを用いて説明する。
【0109】(S01)指定された変数が存在するか関数情
報記憶部1031を用いて判断する (S02)指定された変数が関数内に存在するか判断する。
【0110】もし存在する場合、(S03)に移る。もし存
在しない場合、(S08)に移る。 (S03)変数が資源割り当てされた変数であるか変数の資
源を変数情報記憶部1032から得て判断する。
【0111】もし資源割り当てされた変数である場合、
(S05) に移る。もし資源割り当てされていない変数であ
る場合、(S04)に移る。
【0112】(S04)コード実行部203に問い合わせて
変数値をスタックより得る。(S09)に移る。
【0113】(S05)変数が参照可能範囲の区間内である
か判断する。もし、参照可能範囲の区間内である場合、
(S06)に移る。
【0114】(S06)コード実行部203に問い合わせて
変数値をレジスタより得る。(S09)に移る。
【0115】(S07)変数値を実行状態記憶部201より
得る。(S09)に移る。 (S08)関数内に存在しない変数を参照しようとしたた
め、エラーである。
【0116】(S09)処理を終了する。 (終り) 以上のように構成された本発明の実施の形態におけるデ
バッグ装置について一例を用いてその動作を説明する。
プログラム記憶部101に記憶されているプログラムは
図5の(A)である。実行コード記憶部102に記憶され
ている実行コードは図6である。デバッグ情報記憶部1
03内に含まれる、行アドレス情報記憶部1034、変
数情報記憶部1032、関数情報記憶部1031、展開
関数情報記憶部1033、の内容は図7の(A),(B),(C),
(D)である。
【0117】実行状態記憶部201に記録される情報は
フレームで構成され図8の(B)に示す通りである。すな
わち、フレームは、呼び出された関数の関数名、展開さ
れた関数であるかどうかを記録するフラグ、次のフレー
ムへのポインタ、前のフレームへのポインタ、引数、ロ
ーカル変数から構成される。フレームは関数単位で作成
され、関数が呼び出された時、新たなフレームを作成
し、関数から戻る際、フレームを解放する。
【0118】関数mainが実行される状態において、コー
ド実行部203内のスタックは図9の(A)であるとす
る。また、同様に、実行状態記憶部201におけるフレ
ームは図9の(B)であるとする。
【0119】入力部202に対してユーザは、『Line19
まで実行せよ』と入力する。図11の(A)を参照のこ
と。
【0120】コード実行部203では、Line19に対応す
る番地を行アドレス情報記憶部1034より得る。行ア
ドレス情報記憶部1034と展開関数情報記憶部103
3よりLine19に対応する行が0x128か、または、0x148で
あると判断する。実行コード記憶部102より実行コー
ドを得て実行を開始する。
【0121】実行状態監視部204は、コード実行部2
03を監視する。実行が関数の呼び出しに位置である0x
10c番地に到達した時、引数がレジスタ渡しであるか関
数情報記憶部1031から関数の引数情報を用いて判断
する。関数testにおいて、引数iはレジスタD1を用いて
値を渡していると判断する。コード実行部203にレジ
スタD1の値を問い合わせて引数iの値を得る。新たな関
数の呼び出しが発生したので、実行状態記憶部201に
新たなフレームを作成する。生成したフレームに関数名
を記録し、レジスタを用いて呼び出された引数iと値を
記録する。この結果、実行状態記憶部201の内容は、
図9の(D)となる。関数testの呼び出しにおいて、引数
はスタックを用いないのでコード実行部内で管理するス
タックに引数は積まれない。関数呼出後におけるスタッ
クの状態は、図9の(C)となる。
【0122】さらに、実行状態監視部204は、コード
実行部203を監視する。実行が0x124に到達した時、
展開された関数の開始アドレスであると判断する。展開
された関数の引数がどの変数に該当するかを展開関数情
報記憶部1033より得る。関数calcの引数xの値は変
数iに対応するため、変数iの値をレジスタD1より取得す
る。実行状態監視部は、実行状態記憶部201において
新たなフレームを作成する。作成されたフレームに対し
て、展開された関数名と引数名と値を記録する。さら
に、さらに展開されたことを表すフラグを設定する。こ
の結果、実行状態記憶部201の内容は、図10の(A)
となる。
【0123】また、関数calc実行時に関数呼び出しを伴
わないので、コード実行部内で管理するスタックにおい
て、関数calc用スタックが確保されない。よって、スタ
ックの状態は図9の(C)と同じである。
【0124】さらに、実行が0x128番地に到達した時、
コード実行部はユーザが指定した19行目に到達したた
め、実行を停止する。
【0125】次にユーザが入力部202に対して、『関
数呼び出し履歴情報を出力せよ』と入力する。図11の
(B)を参照のこと。
【0126】関数呼び出し履歴表示部207では、実行
状態記憶部201の内容を参照して関数呼び出し履歴の
情報を得る。さらに、レジスタを用いた引数に関して、
実行状態記憶部201から値を得て表示する。それ以外
のスタックに置かれた変数は、コード実行部203が管
理するスタックから値を取得する。この結果、関数呼び
出し履歴表示部の表示は図11の(C)となる。下線が
引かれた関数は、展開により実行された関数を表す。ま
た、下線が引かれた変数は、レジスタを用いて引数が渡
されたことを表す。
【0127】次に、ユーザは入力部202に対して、
『Line:14における変数jを表示せよ』と入力する。図1
1の(D)を参照のこと。
【0128】コード実行部203では、Line14に対応す
る番地を行アドレス情報記憶部1034より得る。Line
14に該当するアドレスが0x134であると判断し、実行を
開始する。
【0129】実行状態監視部204は、コード実行部2
03を監視し、コード実行部203の実行が0x130の実
行を終了した時、展開された関数の実行が終了したと判
断し、実行状態記憶部201の最後に作成したフレーム
を解放する。この結果、実行状態記憶部201は、図1
0の(B)となる。
【0130】さらに、実行状態監視部204は、コード
実行部203を監視し、コード実行部の実行が0x130に
到達した時、変数iの有効範囲の最後の位置であると変
数情報記憶部1032より情報を得て判断し、変数iの
値が置かれたレジスタD1より値を得て、関数testのフレ
ームに記録する。この結果、実行状態記憶部201は、
図10の(C)となる。
【0131】さらに、コード実行部203では、実行を
継続し、0x134番地に到達した時、ユーザが指定したLin
e:14であると判断し、実行を停止する。
【0132】変数値取得部205は、指定された変数j
の値を表示するため、変数jが存在する資源を変数情報
記憶部1032より得る。変数jの存在するレジスタがD
1であるので、コード実行部203にD1の値を問い合わ
せ、変数jの値が1400であると分かる。
【0133】変数値表示部206において、『変数jの
値は1400です』と表示する。図11の(E)を参照
のこと。
【0134】さらに、ユーザは入力部202に対して、
『変数iの値を表示せよ』と入力する。変数値取得部2
05は、変数iの資源を取得するため、変数情報記憶部
1032から変数iに対応するレジスタを得る。現在停
止位置で参照できる変数iのレジスタは存在しないた
め、実行状態記憶部201よりフレームに登録された変
数iの値11を得る。
【0135】変数値表示部206では、『変数iの値は
11です』と表示する。さらに、変数iの値は実行状態
記憶部201から得た値であり、現在どのレジスタやス
タックにも存在しないことを表すため、変数名の下に下
線を引く。図11の(G)に変数値表示部206の結果
を示す。
【0136】なお、本実施例では、最適化の例として、
引数がレジスタを用いて渡され、引数の値が実行途中で
失われる例を示したが、引数がスタックを用いて渡され
た場合であっても、引数が置かれた変数に値が代入され
て引数の値が失われる場合がある。このような場合であ
っても、関数呼び出し時に実行状態記憶部に全ての引数
を保存しておくことにより、スタック上の引数が破壊さ
れた場合であっても、正しく関数呼び出し履歴が表示可
能となる。
【0137】
【発明の効果】以上のように本発明に係る請求項1記載
のプログラム変換装置と請求項7記載のデバッグ装置
は、スタックを参照して呼び出し履歴を実現する従来の
デバッガでは表示不可能であった展開された関数の実行
が表示可能となるため、ユーザに関数が実行されている
事を正確に使えることが可能となった。
【0138】また、本発明の請求項2記載のプログラム
変換装置と請求項5記載のデバッグ装置は、スタックを
参照して引数の値を表示する従来のデバッガでは表示不
可能であったレジスタ渡しによる引数の値が表示可能と
なるため、ユーザは引数が原因で発生している誤りを容
易に発見することが可能となった。
【0139】また、本発明の請求項3記載のデバッグ装
置は、変数の参照が可能な区間の最後において値を実行
状態記憶部に保存し、ユーザの参照要求があった際に変
数に割り当てられたレジスタが存在していなくても、実
行状態記憶部から値を得ることにより、かつての変数値
を参照可能となり、変数を確認するため、再度最初から
実行する手間が省け、容易にアルゴリズムが検証可能と
なり、開発効率向上に効果が高い。
【0140】また、本発明の請求項4記載のデバッグ装
置は、変数値表示部において、変数値がメモリ上または
レジスタ上ではすでに参照不可能になっていることが分
かるため、存在しない変数に対して値を設定することを
防ぐことが可能である。
【0141】また、本発明の請求項6記載のデバッグ装
置は、変数値表示部において引数がレジスタによって渡
されていることをユーザに通知可能となり、スタックで
渡されている変数との混乱を防ぐ上で効果が高い。
【0142】また、本発明の請求項8記載のデバッグ装
置は、関数呼び出し履歴表示手段において、最適化によ
り展開された関数に対してマーク付けして表示されるた
め、他の最適化されていない関数との混同を防ぎ、ユー
ザに対して実行コードの呼び出し過程の理解を助ける効
果が高い。
【0143】また、本発明の請求項9記載のデバッグ装
置は、コード実行部における関数の実行開始と終了に連
動して実行状態記憶部内のフレームが追加、削除される
ため、常に必要最小限の情報に抑えることができ、デー
タサイズを抑えることが可能である。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるプログラム変換装
置とデバッグ装置の構成図
【図2】同実施の形態における実行状態監視部の動作を
表すフローチャート
【図3】同実施の形態における変数値取得部の動作を表
すフローチャート
【図4】同実施の形態におけるハードウエアモデルを表
す構成図
【図5】(A)は同実施の形態におけるプログラム記憶部
の内容を表す関係図 (B)は同じく、プログラムに対する最適化過程を表す関
係図
【図6】同実施の形態における実行コード記憶部の内容
を表す関係図
【図7】(A)は同実施の形態における行アドレス情報記
憶部の内容を表す関係図 (B)は同じく、変数情報情報記憶部の内容を表す関係図 (C)は同じく、関数情報情報記憶部の内容を表す関係図 (D)は同じく、展開関数情報記憶部の内容を表す関係図
【図8】(A)は同実施の形態におけるコード実行部内の
スタックの状態を表す関係図 (B)は同じく、実行状態記憶部におけるフレームの状態
を表す関係図
【図9】(A)は同実施の形態におけるコード実行部内の
スタックの状態を表す関係図 (B)は同じく、実行状態記憶部における実行途中のフレ
ームの状態を表す関係図 (C)は同じく、コード実行部内の実行途中のスタックの
状態を表す関係図 (D)は同じく、実行状態記憶部における実行途中のフレ
ームの状態を表す関係図
【図10】(A)は同実施の形態における実行状態記憶部
における実行途中のフレームの状態を表す関係図 (B)は同じく、関数calcの実行が終了した際の実行状態
記憶部内のフレームの状態を表す関係図 (C)は同じく、変数iの参照可能区間の最後の位置におけ
る実行状態記憶部内のフレームの状態を表す関係図
【図11】(A)は同実施の形態における入力部を表す関
係図 (B)は同じく、入力部を表す関係図 (C)は同じく、関数呼び出し履歴表示部における表示内
容を表す関係図 (D)は同じく、入力部を表す関係図 (E)は同じく、変数値表示部における表示内容を表す関
係図 (F)は同じく、入力部を表す関係図 (G)は同じく、変数値表示部における表示内容を表す関
係図
【図12】従来のプログラム変換装置の構成を示す構成
【図13】(A)は同従来例におけるプログラム記憶部の
内容を表す関係図 (B)は同じく、実行コード記憶部の内容を表す関係図
【図14】(A)は同従来例における行アドレス情報記憶
部の内容を表す関係図 (B)は同じく、関数情報記憶部の内容を表す関係図 (C)は同じく、変数情報記憶部の内容を表す関係図
【図15】従来のデバッグ装置の構成を示す構成図
【図16】従来のコード実行部内のスタックの状態を表
す関係図
【図17】(A)は従来例における入力部を表す関係図 (B)は同じく、入力部を表す関係図 (C)は同じく、関数呼び出し履歴表示部における表示内
容を表す関係図 (D)は同じく、入力部を表す関係図 (E)は同じく、変数値表示部における表示内容を表す関
係図 (F)は同じく、入力部を表す関係図 (G)は同じく、変数値表示部の表示内容を表す関係図
【符号の説明】
101 プログラム記憶部 102 実行コード記憶部 103 デバッグ情報記憶部 1031 関数情報記憶部 1032 変数情報記憶部 1033 展開関数情報記憶部 1034 行アドレス情報記憶部 104 内部表現変換部 105 最適化部 1051 関数展開最適化部 1052 引数最適化部 1053 資源割当部 106 コード生成部 107 デバッグ情報生成部 201 実行状態記憶部 202 入力部 203 コード実行部 204 実行状態監視部 205 変数値取得部 206 変数値表示部 207 関数呼び出し履歴表示部 301 プログラム記憶部 302 実行コード記憶部 303 デバッグ情報記憶部 3031 行アドレス情報記憶部 3032 関数情報記憶部 3032 関数情報記憶部 3033 変数情報記憶部 304 内部表現変換部 305 最適化部 3051 資源割当部 306 コード生成部 307 デバッグ情報生成部 401 入力部 402 コード実行部 403 変数操作部 404 変数値表示部 405 関数呼び出し履歴表示部

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 目的とする実行コードを生成し出力する
    プログラム変換装置において入力されたプログラムを最
    適化する最適化処理手段と最適化された結果を出力する
    最適化情報出力手段を有し、前記最適化処理手段は、関
    数の内容を関数の呼び出し位置に展開する最適化を行な
    う機能を有し、前記最適化情報出力手段は、前記最適化
    処理手段により最適化された関数の情報を出力する機能
    を有することを特徴とするプログラム変換装置。
  2. 【請求項2】 前記最適化処理手段が有する最適化機能
    をレジスタを用いて関数の引数の値を渡す最適化機能と
    し、前記最適化機能により最適化された関数に関する情
    報を出力する前記最適化情報出力手段を備えたことを特
    徴とする請求項1記載のプログラム変換装置。
  3. 【請求項3】 被デバッグプログラムを請求項1から2
    記載のプログラム変換装置に入力し、該プログラム変換
    装置と結合して動作するデバッグ装置において、前記プ
    ログラム変換装置から実行コードを受け実行するコード
    実行手段と、前記コード実行手段でコードを実行中に実
    行状態を前記実行状態記憶手段に保存する実行状態監視
    手段と、変数を指定する入力手段と、変数値を表示する
    表示手段を備え、前記プログラム変換装置の最適化によ
    り生成された実行コードに含まれる変数の参照可能な範
    囲が特定の区間に限られる場合、前記実行状態監視手段
    は変数の参照可能な区間内である時、変数の値を前記コ
    ード実行手段より得て実行状態記憶手段に保存してお
    き、入力手段に対して変数参照の要求があった際に、前
    記コード実行手段または、前記実行状態記憶手段から変
    数の値を取得し、表示することを特徴とするデバッグ装
    置。
  4. 【請求項4】 前記表示手段において、変数の値を前記
    実行状態記憶手段から得た事を示す記号を付与して変数
    値を表示することを特徴とする請求項3記載のデバッグ
    装置。
  5. 【請求項5】 前記プログラム変換装置の最適化機能に
    より関数呼び出し時に、引数使用後に引数の値が破壊さ
    れる可能がある場合、前記コード実行手段において関数
    の呼び出しが行なわれた際、関数の引数の値を前記コー
    ド実行手段より得て前記実行状態記憶手段に保存する実
    行状態監視手段と、入力手段に引数参照の要求があった
    際に、引き数の値を実行状態記憶手段から得て表示する
    表示手段を備えたことを特徴とする請求項4記載のデバ
    ッグ装置。
  6. 【請求項6】 前記表示手段において、引数の値を前記
    実行状態記憶手段から得た事を示す記号を付与して表示
    することを特長する請求項5記載のデバッグ装置。
  7. 【請求項7】 前記プログラム変換装置の最適化機能に
    より、関数が展開された場合、前記コード実行実行部に
    おいて展開された関数の開始位置における実行に関する
    情報と前記コード実行実行部において展開された関数の
    終了位置における実行に関する情報を実行状態記憶手段
    に保存する実行状態保存手段と、関数の呼び出し履歴を
    表示する関数呼び出し履歴表示手段を追加したことを特
    徴とする請求項6記載のデバッグ装置。
  8. 【請求項8】 前記関数呼び出し履歴表示手段におい
    て、最適化により展開された関数であることを示す記号
    を付与することを特長する請求項7記載のデバッグ装
    置。
  9. 【請求項9】 前記実行状態記憶手段において、前記実
    行コード手段における関数の実行開始と実行終了に連動
    して、情報が追加、削除されることを特長とする請求項
    8記載のデバッグ装置。
JP9095486A 1997-04-14 1997-04-14 プログラム変換装置とデバッグ装置 Pending JPH10289110A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9095486A JPH10289110A (ja) 1997-04-14 1997-04-14 プログラム変換装置とデバッグ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9095486A JPH10289110A (ja) 1997-04-14 1997-04-14 プログラム変換装置とデバッグ装置

Publications (1)

Publication Number Publication Date
JPH10289110A true JPH10289110A (ja) 1998-10-27

Family

ID=14138943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9095486A Pending JPH10289110A (ja) 1997-04-14 1997-04-14 プログラム変換装置とデバッグ装置

Country Status (1)

Country Link
JP (1) JPH10289110A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008536236A (ja) * 2005-04-13 2008-09-04 テレフオンアクチーボラゲット エル エム エリクソン(パブル) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
JP2008305337A (ja) * 2007-06-11 2008-12-18 Panasonic Corp プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP5460928B1 (ja) * 2013-03-06 2014-04-02 三菱電機株式会社 プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法
JP2020071601A (ja) * 2018-10-30 2020-05-07 カシオ計算機株式会社 表示処理装置、表示処理方法、およびプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008536236A (ja) * 2005-04-13 2008-09-04 テレフオンアクチーボラゲット エル エム エリクソン(パブル) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
JP2008305337A (ja) * 2007-06-11 2008-12-18 Panasonic Corp プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP5460928B1 (ja) * 2013-03-06 2014-04-02 三菱電機株式会社 プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法
WO2014136228A1 (ja) * 2013-03-06 2014-09-12 三菱電機株式会社 プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法
KR20150096478A (ko) * 2013-03-06 2015-08-24 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법
US9753444B2 (en) 2013-03-06 2017-09-05 Mitsubishi Electric Corporation Programmable controller, programmable controller system, and method of creating execution error information
JP2020071601A (ja) * 2018-10-30 2020-05-07 カシオ計算機株式会社 表示処理装置、表示処理方法、およびプログラム

Similar Documents

Publication Publication Date Title
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
US8332845B2 (en) Compile timing based on execution frequency of a procedure
JP5307802B2 (ja) 外部デバッグのインフラストラクチャを使用するインプロセスのデバッグ
US7047521B2 (en) Dynamic instrumentation event trace system and methods
US6678883B1 (en) Apparatus and method for creating a trace file for a trace of a computer program based on loaded module information
US5257381A (en) Method of intercepting a global function of a network operating system and calling a monitoring function
EP0735469B1 (en) System and method to control and administer distributed object servers using first class distributed objects
US4833594A (en) Method of tailoring an operating system
US6738965B1 (en) Trace information in a virtual machine
US6766511B1 (en) Apparatus and method for performing symbolic resolution of modules using static representations of a trace
US8606766B2 (en) Method and system to handle java class versioning
US6330714B1 (en) Method and computer program product for implementing redundant lock avoidance
JPH10289110A (ja) プログラム変換装置とデバッグ装置
CN116594717B (zh) 一种类加载隔离方法、装置、设备及介质
US7475386B1 (en) Mechanism for disjoint instrumentation providers in a tracing framework
CN116909819A (zh) 一种处理器调试方法、装置、计算机设备及处理器
WO2020073200A1 (zh) 调试程序的方法和系统
US20140026139A1 (en) Information processing apparatus and analysis method
JP2004094374A (ja) ロギングシステム
US5388263A (en) Procedure state descriptor system for digital data processors
JPH08502375A (ja) コンピュータにて並列実行処理可能なオブジェクト指向プログラムの少なくとも1つのオブジェクトにおける少なくとも1つのテストの実施方法
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
JPH0997182A (ja) プログラム変換装置およびデバッグ装置
KR100560393B1 (ko) 에스디엘에서 c언어로의 변환 시스템 및 방법, 그 프로그램이 구현된 기록매체
JP2795676B2 (ja) プログラムトレース装置