JP2010102454A - 情報処理装置、情報処理プログラム - Google Patents
情報処理装置、情報処理プログラム Download PDFInfo
- Publication number
- JP2010102454A JP2010102454A JP2008272407A JP2008272407A JP2010102454A JP 2010102454 A JP2010102454 A JP 2010102454A JP 2008272407 A JP2008272407 A JP 2008272407A JP 2008272407 A JP2008272407 A JP 2008272407A JP 2010102454 A JP2010102454 A JP 2010102454A
- Authority
- JP
- Japan
- Prior art keywords
- abnormal
- function
- information
- variable information
- address
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】異常終了の原因となった関数を特定可能な情報処理装置、及び情報処理プログラムを提供する。
【解決手段】複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定し、使用する際に、特定された異常アドレスにアクセスしたアクセス関数を、スタック情報により特定し、特定されたアクセス関数が演算した結果が異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定し、異常変数情報がアクセス関数による演算した結果ではないと判定された場合には、アクセス関数が異常変数情報に代入した他の変数情報を異常変数情報とし、他の変数情報が記憶されているアドレスを異常アドレスとするように異常変数情報及び異常アドレスを更新する。
【選択図】図4
【解決手段】複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定し、使用する際に、特定された異常アドレスにアクセスしたアクセス関数を、スタック情報により特定し、特定されたアクセス関数が演算した結果が異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定し、異常変数情報がアクセス関数による演算した結果ではないと判定された場合には、アクセス関数が異常変数情報に代入した他の変数情報を異常変数情報とし、他の変数情報が記憶されているアドレスを異常アドレスとするように異常変数情報及び異常アドレスを更新する。
【選択図】図4
Description
本発明は、情報処理装置、情報処理プログラムに関する。
プログラムが異常終了した際の原因を特定するための技術は、従来より数多く提案されている。例えば、特許文献1及び特許文献2には、異常終了した機械語命令のアドレスを用いて、ソースコードマップからその命令を含む関数を特定し、引数とともに表示して異常解析を支援する技術が開示されている。
また、特許文献3には、プログラムが異常終了したときに、実行中のプログラムのスタック情報を解析し、異常解析に有用なメモリ情報のみを吸い上げる技術が開示されている。
特開平5−151030号公報
特開平7−168743号公報
特開2007−172414号公報
本発明は、異常終了の原因となった関数を特定可能な情報処理装置、及び情報処理プログラムを提供することを目的とする。
上記目的を達成するために、請求項1の発明は、複数の関数の各々を使用する際にアクセスしたアドレスを含むスタック情報、及び前記複数の関数に使用された変数を示す変数情報を記憶する記憶手段と、前記複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定する第1の特定手段と、使用する際に、前記第1の特定手段により特定された前記異常アドレスにアクセスしたアクセス関数を、前記スタック情報により特定する第2の特定手段と、前記第2の特定手段により特定された前記アクセス関数が演算した結果が前記異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定する第3の特定手段と、前記第3の特定手段により前記異常変数情報が前記アクセス関数による演算した結果ではないと判定された場合には、前記アクセス関数が前記異常変数情報に代入した他の変数情報を前記異常変数情報とし、前記他の変数情報が記憶されているアドレスを前記異常アドレスとするように前記異常変数情報及び前記異常アドレスを更新する更新手段と、を有する。
また、請求項2の発明は、請求項1の発明において、前記記憶手段は、実行中の関数が他の関数にスイッチングされた場合にも、前記実行中の関数が使用していたスタック情報を記憶する。
請求項3の発明は、請求項1又は請求項2の発明において、前記第3の特定手段は、前記第2の特定手段が関数を特定したスタック情報が前記記憶手段に記憶された順番が新しい順に、前記第2の特定手段により特定された関数が前記異常原因情報を演算したか否かを判定する。
上記目的を達成するために、請求項4の発明は、コンピュータを、複数の関数の各々を使用する際にアクセスしたアドレスを含むスタック情報、及び前記複数の関数に使用された変数を示す変数情報を記憶する記憶手段と、前記複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定する第1の特定手段と、使用する際に、前記第1の特定手段により特定された前記異常アドレスにアクセスしたアクセス関数を、前記スタック情報により特定する第2の特定手段と、前記第2の特定手段により特定された前記アクセス関数が演算した結果が前記異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定する第3の特定手段と、前記第3の特定手段により前記異常変数情報が前記アクセス関数による演算した結果ではないと判定された場合には、前記アクセス関数が前記異常変数情報に代入した他の変数情報を前記異常変数情報とし、前記他の変数情報が記憶されているアドレスを前記異常アドレスとするように前記異常変数情報及び前記異常アドレスを更新する更新手段と、して機能させるための情報処理プログラムである。
請求項1及び請求項4記載の発明によれば、本発明を適用しない場合に比較して、より確実に異常終了の原因となった関数を特定することができる、という効果が得られる。
また、請求項2記載の発明によれば、スイッチ毎にスタック情報を記憶することにより、各関数実行時の直近のスタック情報から関数の内部状態を復元することができるようになり、より確度の高い解析を行うことが可能となる、という効果が得られる。
また、請求項3記載の発明によれば、新しい順にスタック情報を遡ることにより、異常の伝播の観点から関数の探索範囲を絞りこむことが可能となる。1つ以上の関数で構成されるタスク単位でも、スイッチ前後のスタック情報を差分比較することができるようになるので、スタック情報の差分に異常が検出されれば、スイッチ後に実行されたタスクに絞り込むことが可能となる、という効果が得られる。
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、情報処理装置をコンピュータとして説明する。
まず、図1を用いて、コンピュータ10の構成について説明する。コンピュータ10は、CPU12と、HDD14と、RAM16と、ネットワークI/F部18と、ROM20と、表示部22と、操作入力部24と、バス26とを含む。
CPU12は、コンピュータ10の全体の動作を司るものであり、後述するコンピュータ10の処理を示すフローチャートは、CPU12により実行される。HDD14は、各関数を示すプログラム、OS(Operating System)などが記録される不揮発性の記憶装置である。RAM16は、複数の関数の各々を使用する際にアクセスしたアドレスを含むスタック情報(以下、単にスタックと記す)、及び複数の関数に使用された変数を示す変数情報を記憶する記憶手段であり、その他OSやプログラムが展開される揮発性の記憶装置である。ネットワークI/F部18は、ネットワークに接続するためのものであり、NICやそのドライバで構成される。ROM20は、コンピュータ10の起動時に動作するブートプログラムなどが記憶されている不揮発性の記憶装置である。表示部22は、コンピュータ10に関する情報を利用者に表示するものである。操作入力部24は、利用者がコンピュータ10の操作や情報を入力する際に用いられるものである。バス26は、情報のやりとりが行われる際に使用される。
以下、上述した構成により実行される処理の詳細について説明する。まず図2を用いて、本実施の形態におけるスタック制御方法について説明する。本実施の形態におけるスタックは、コールされた関数からコールした関数に処理が戻っても、コールされた関数実行時のスタックが消去されないものとなっている。
具体的に図2を用いて説明する。図2には、スタック領域を示すメモリマップが示されており、同図において、「fp」はフレームポインタを示し、「sp」はスタックポインタを示す。fpは、参照するスタックの先頭アドレスを示し、spは新たなスタックを積み上げるアドレスを示している。また、一般的に知られているように、スタックは、CPU12が複数の関数の各々を使用する際にアクセスしたアドレスを含む他に一時的な変数などに使用されるものである。
まず、(1)の状態は、ある関数Aがある関数Bをコールした状態である。スタックAは関数Aで使用されるスタックであり、スタックBは、関数Bで使用されるスタックである。
次の(2)状態は、関数Bが関数Cをコールした状態である。スタックCは、関数Cで使用されるスタックである。次の(3)の状態は、関数Cが終了し、処理が関数Bに戻った状態である。
この場合、通常のspは、スタックBの位置を示すが、本実施の形態におけるスタック制御方法では、スタックCの位置を示す。これにより、次の(4)の状態に示すように、処理が終了した関数が使用したスタックが消去されずに残ることとなる。
次の(4)の状態は、関数Bが関数Dをコールした状態である。スタックDは、関数Dで使用されるスタックであり、spの位置に示されるように、スタックDは(3)の状態からスタックCの上に積まれるので、関数Cが戻っても、関数C実行時のスタックは消去されない。
次に、図3を用いて、異常終了を示す例を説明する。同図には、関数A、B各々のコード(C言語)と、メモリマップが示されている。メモリマップに示されるように、有効なアドレスは、0x0000000〜0x1FFFFFFであり、それ以外にアクセスしようとした場合には、CPU12により異常終了となる。
また、関数A、Bによる処理の概要は、ある数字を2倍するというものであるが、関数Aのコードに誤りがあり、それが原因で異常終了することとなる。
まず、(1)で、関数Aは、ポインタp1を0x1000000で初期化する。そして、(2)で、p1が示すアドレス0x1000000に数値(1234)を記憶する。次に、(3)で関数Bをコールする。この関数コールの引数は、本来「p1」(=0x1000000)とするところであるが、誤ってp1の先頭アドレスを示す「&p1」を引数としている。
関数コールにより、処理は関数Bの処理となる。関数Bは、引数「&p1」を関数Bのスタック「p2」で受け取るので、p2=&p1となる。
そして、(4)でp2が示す変数情報を示す*p2を2倍したものを改めて*p2とする。p2=&p1であるので、p2が示す変数情報である*p2は、0x1000000であり、2倍することで、*p2=0x2000000となり、p1=0x2000000となる。
なお、上記(3)で誤りがない場合は、p2=p1=0x1000000であるので、p2が示す変数情報である*p2は、アドレス0x1000000に記憶された1234であり、2倍することで*p2=2468となる。
2倍する処理が終了すると、関数Aに処理が戻り、(5)において、変数d1にp1が示す変数情報*p1が代入される。p1=0x2000000であるので、アドレス0x2000000に記憶された値となるが、上述したように、0x2000000はアドレスの範囲0x0000000〜0x1FFFFFFに含まれないため、関数Aは異常終了することとなる。
次に、図4を用いて本実施の形態に係る情報処理プログラムの処理の流れについて説明する。この処理の前提として、まずOSが提供している機能について説明する。通常、OSは、異常(例外処理)の種別、異常が発生したメモリアドレス、実行中の命令アドレス(プログラムカウンタ)、異常が発生した関数やタスク等を通知する機能を有する。
異常データの格納アドレスは、異常発生時のメモリ、実行時の関数やタスクのスタック、プログラムオブジェクトのシンボル情報およびソースコードから特定することができる。
この解析は、ソースレベルデバッガ(シンボリックデバッガ)では一般的に行われているものである。プログラムオブジェクトには、実行中の命令アドレスとソースコードを対応付け可能なシンボル情報を含めることが可能であり、実行中の命令アドレスからソースコードのどの関数が実行されているか判断することができる。さらに、メモリおよびスタックにより関数実行時の内部状態を知ることができ、異常データが格納されているメモリアドレスを特定することができる。
メモリ、タスクのスタック、シンボル情報、ソースコードから、関数の内部状態を復元することにより、ある関数があるアドレスにアクセスしているかどうかを判定することができる。
多くの場合、メモリやスタックに残されている情報は、関数により異常終了する前にアクセスされているので、スタックに多くの内部情報を残すようにしたり、図2で説明したように関数の処理が進行してもスタックが上書きされないように実装することにより、異常終了した後でも関数の内部状態の復元が容易となるようにし、また、復元が不完全な場合でも異常が発生したアドレスに対するアクセスの有無が推測できるようにする。
これを前提に、図4に示されるフローチャートの説明をする。まず、ステップ101で、処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報(異常データ)として特定すると共に、当該異常変数情報が記憶されているアドレスを異常アドレスとして特定し、ステップ102で、変数dataに異常データ、変数addrに異常アドレスを代入する。
次のステップ103で、異常アドレスにアクセスしたアクセス関数を、スタックにより特定する。そして、次のステップ104で、アクセス関数がaddrが示すデータを書き換えているか否か判定する。否定判定した場合には、ステップ103に戻り、addrにアクセスしている他の関数を特定する。
一方、ステップ104で肯定判定した場合には、ステップ105で、アクセス関数が演算した結果がdataか否か判定する。このステップ104で肯定判定した場合には、ステップ106でこの関数が異常終了の原因と特定して処理を終了する。
また、ステップ105で否定判定した場合には、他の関数の演算結果を参照していることから、ステップ107でアクセス関数が参照して異常変数情報に代入した他の変数情報をdataとし、他の変数情報が記憶されているアドレスをaddrとするようにdata及びaddrを更新して、再びステップ102の処理に戻る。
上記フローチャートを先ほど説明した図3の場合に適用すると、ステップ101で異常データ及びアドレスを特定し、ステップ102で異常の原因となった異常データ0x2000000と異常アドレス&p1を、それぞれdata、addrに代入する。
次のステップ103で、異常発生時のスタックp1の情報から、異常アドレス&p1にアクセスしている関数が、関数Aであることを特定する。ステップ104で、関数Aが異常アドレス&p1に0x2000000を書き込んでいるかどうか判断する。
今の場合、関数Aには、&p1に0x2000000を書き込む処理は検出されないので、ステップ103で、異常アドレス&p1にアクセスしている他の関数を探す。次に、ステップ103で、スタックp2から、&p1にアクセスしている関数Bを特定する。次にステップ104で、関数Bが異常アドレス&p1に0x2000000を書きこんでいるか判断する。
関数Bに0x2000000を書き込んでいるのでステップ105で、関数Bが、0x2000000を演算しているか、他のアドレスのデータの参照で求めているか判定する。関数Bが演算して、0x2000000を算出しているので、ステップ106で、関数Bを異常終了の原因として特定する。
次に、実行中の関数が他の関数にスイッチングされた場合にも、実行中の関数が使用していたスタックを記憶することと、異常アドレスにアクセスした関数を特定したスタックが記憶された順番が新しい順に、特定された関数が異常原因情報を演算したか否かを判定することについて説明する。ここでタスクとは、1つ以上の関数で構成され、予め定められた処理を行なうものであるが、マルチタスクのシステムでは、処理の実行単位はタスクに分割され、ディスパッチャによりタスクに割り当てられた優先度や時分割に従って処理される。すなわち、ある関数実行時に他の関数にスイッチングされることとなる。
具体的に、図5を用いて説明する。図5は、処理されるタスクの順番の例、及び記憶されるスタックを示している。
同図に示されるタスクスイッチ例では、タスクAの実行中にスイッチングが発生し、タスクAの関数の処理は一時中断され、タスクBの処理が開始される。
さらに、タスクBの関数の実行中にスイッチングが発生し、タスクCの処理が開始される。タスクCの処理が完了すると、スイッチングが発生し、中断されていたタスクBの関数の処理が再開される。タスクBの関数の実行中に優先度の高いタスクDが発生すると、タスクBの関数の処理が一時中断され、タスクDの処理が開始される。
また、同図に示される「記憶されるスタック」に示されるように、スイッチングによりタスクが切り替わる毎に、CPU12は、切り替わり前のタスクのスタックを記憶する。タスクAがBへタスクスイッチする際、CPU12は、タスクAのスタックをスタックA1として記憶する。
さらに、同図に示されるように、タスクBからタスクCへのスイッチング(スタックB1)、タスクCからタスクBへのスイッチング(スタックC1)、タスクBからタスクDへのスイッチング(スタックB2)の際にも、切り替わり前のタスクのスタックが記録される。
保存されているスタックの履歴は、図4に記述したフローチャートのステップ103でaddrにアクセスしている関数を特定するために利用される。タスクスイッチの新しいもの順にスタックの履歴を遡ることで、異常の伝播の観点から関数の探索範囲を絞りこむことが可能である。
同図の場合、最終的にスタックF、スタックB2、スタックC1、スタックB1、スタックA1が記憶されており、この順番で古くなっていくので、本実施の形態では、特定された関数が異常原因情報を演算したか否かをスタックFから順に判定することとなる。
また、図5の例では、タスクBは一時中断後、再開されている。このとき、記憶されたスタックには、一時中断された際のスタックB1と、タスクBがタスクDにスイッチングした際のスタックB2が記憶されている。
スタックB1とスタックB2との差分比較により、スタックB1には示されなかったaddrへのアクセスが、スタックB2にはあることが判明すれば、それらの間に実行されたタスク(この場合はタスクC)の処理に異常の原因があることが特定できる。
なお、以上説明したフローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
10 コンピュータ
12 CPU
14 HDD
16 RAM
12 CPU
14 HDD
16 RAM
Claims (4)
- 複数の関数の各々を使用する際にアクセスしたアドレスを含むスタック情報、及び前記複数の関数に使用された変数を示す変数情報を記憶する記憶手段と、
前記複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定する第1の特定手段と、
使用する際に、前記第1の特定手段により特定された前記異常アドレスにアクセスしたアクセス関数を、前記スタック情報により特定する第2の特定手段と、
前記第2の特定手段により特定された前記アクセス関数が演算した結果が前記異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定する第3の特定手段と、
前記第3の特定手段により前記異常変数情報が前記アクセス関数による演算した結果ではないと判定された場合には、前記アクセス関数が前記異常変数情報に代入した他の変数情報を前記異常変数情報とし、前記他の変数情報が記憶されているアドレスを前記異常アドレスとするように前記異常変数情報及び前記異常アドレスを更新する更新手段と、
を有する情報処理装置。 - 前記記憶手段は、実行中の関数が他の関数にスイッチングされた場合にも、前記実行中の関数が使用していたスタック情報を記憶する請求項1に記載の情報処理装置。
- 前記第3の特定手段は、前記第2の特定手段が関数を特定したスタック情報が前記記憶手段に記憶された順番が新しい順に、前記第2の特定手段により特定された関数が前記異常原因情報を演算したか否かを判定する請求項1又は請求項2に記載の情報処理装置。
- コンピュータを、
複数の関数の各々を使用する際にアクセスしたアドレスを含むスタック情報、及び前記複数の関数に使用された変数を示す変数情報を記憶する記憶手段と、
前記複数の関数による処理が異常終了した際に異常終了の原因となった変数情報を異常変数情報として特定すると共に、異常終了の原因となったアドレスを異常アドレスとして特定する第1の特定手段と、
使用する際に、前記第1の特定手段により特定された前記異常アドレスにアクセスしたアクセス関数を、前記スタック情報により特定する第2の特定手段と、
前記第2の特定手段により特定された前記アクセス関数が演算した結果が前記異常変数情報である場合には、当該アクセス関数を異常終了の原因として特定する第3の特定手段と、
前記第3の特定手段により前記異常変数情報が前記アクセス関数による演算した結果ではないと判定された場合には、前記アクセス関数が前記異常変数情報に代入した他の変数情報を前記異常変数情報とし、前記他の変数情報が記憶されているアドレスを前記異常アドレスとするように前記異常変数情報及び前記異常アドレスを更新する更新手段と、
して機能させるための情報処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008272407A JP2010102454A (ja) | 2008-10-22 | 2008-10-22 | 情報処理装置、情報処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008272407A JP2010102454A (ja) | 2008-10-22 | 2008-10-22 | 情報処理装置、情報処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010102454A true JP2010102454A (ja) | 2010-05-06 |
Family
ID=42293061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008272407A Pending JP2010102454A (ja) | 2008-10-22 | 2008-10-22 | 情報処理装置、情報処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010102454A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937921A (zh) * | 2011-11-14 | 2013-02-20 | 新游游戏株式会社 | 处理异常终止的方法和执行该方法的服务器 |
JP5954666B2 (ja) * | 2010-12-08 | 2016-07-20 | パナソニックIpマネジメント株式会社 | 情報処理装置、及び、情報処理方法 |
JP2018522359A (ja) * | 2015-08-11 | 2018-08-09 | シマンテック コーポレーションSymantec Corporation | コンピューティングプロセス内の未知の脆弱性を検出するためのシステム及び方法 |
CN110275791A (zh) * | 2018-03-14 | 2019-09-24 | 普天信息技术有限公司 | 一种应用程序异常处理方法及装置 |
CN115766201A (zh) * | 2022-11-11 | 2023-03-07 | 北京哈工信息产业股份有限公司 | 一种大量ip地址快速封禁的解决方法 |
-
2008
- 2008-10-22 JP JP2008272407A patent/JP2010102454A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5954666B2 (ja) * | 2010-12-08 | 2016-07-20 | パナソニックIpマネジメント株式会社 | 情報処理装置、及び、情報処理方法 |
CN102937921A (zh) * | 2011-11-14 | 2013-02-20 | 新游游戏株式会社 | 处理异常终止的方法和执行该方法的服务器 |
JP2018522359A (ja) * | 2015-08-11 | 2018-08-09 | シマンテック コーポレーションSymantec Corporation | コンピューティングプロセス内の未知の脆弱性を検出するためのシステム及び方法 |
CN110275791A (zh) * | 2018-03-14 | 2019-09-24 | 普天信息技术有限公司 | 一种应用程序异常处理方法及装置 |
CN115766201A (zh) * | 2022-11-11 | 2023-03-07 | 北京哈工信息产业股份有限公司 | 一种大量ip地址快速封禁的解决方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5914521B2 (ja) | 処理装置、トレースユニット、および診断装置 | |
JPWO2013103023A1 (ja) | 情報処理装置、情報処理方法、およびコンピュータプログラム | |
JP6430037B2 (ja) | デバッグ支援装置およびデバッグ支援方法 | |
CN106802785B (zh) | 一种栈解析方法和装置 | |
JP2010102454A (ja) | 情報処理装置、情報処理プログラム | |
TWI492004B (zh) | 可程式邏輯控制器、可程式邏輯控制系統及執行錯誤資訊作成方法 | |
JP2015069437A (ja) | トレース方法、処理プログラム、および情報処理装置 | |
US9824229B2 (en) | Controller with enhanced reliability | |
JP2009271737A (ja) | 情報処理装置 | |
CN110597601A (zh) | 一种控制器任务切换方法、装置、设备及可读存储介质 | |
CN104239201B (zh) | 一种软单步系统中内存读写监控方法 | |
CN110309025B (zh) | App崩溃的修复方法及相关设备 | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
JP5365875B2 (ja) | 産業用コントローラ | |
JP5970080B2 (ja) | プログラマブル表示器、プログラム | |
JP2022178544A (ja) | プログラム修正装置、プログラム修正方法、及びプログラム修正プログラム | |
JP2004185345A (ja) | デバッグ方法およびシステム | |
WO2024157593A1 (ja) | 情報処理装置およびそれを備えた情報処理システム | |
JP4872328B2 (ja) | 動作環境切り替えプログラム及び情報処理装置 | |
JP5791524B2 (ja) | Os動作装置及びos動作プログラム | |
JPH09204205A (ja) | プログラム制御システム | |
JP2001166966A (ja) | デバッガにおける被テストプログラムの実行環境管理方法 | |
JP2002318712A (ja) | プログラム実行履歴解析方法 | |
JP4527419B2 (ja) | プログラムトレース方法およびトレース処理システム | |
JP2019125134A (ja) | 検証支援プログラム、検証支援方法、および情報処理装置 |