JP2021060969A - トレースデータの取扱い - Google Patents

トレースデータの取扱い Download PDF

Info

Publication number
JP2021060969A
JP2021060969A JP2020116776A JP2020116776A JP2021060969A JP 2021060969 A JP2021060969 A JP 2021060969A JP 2020116776 A JP2020116776 A JP 2020116776A JP 2020116776 A JP2020116776 A JP 2020116776A JP 2021060969 A JP2021060969 A JP 2021060969A
Authority
JP
Japan
Prior art keywords
location
program
flow
jump
processor
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
JP2020116776A
Other languages
English (en)
Other versions
JP7374863B2 (ja
Inventor
ロバートソン・イアン
Robertson Iain
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.)
Ultrasoc Technologies Ltd
Original Assignee
Ultrasoc Technologies 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 Ultrasoc Technologies Ltd filed Critical Ultrasoc Technologies Ltd
Publication of JP2021060969A publication Critical patent/JP2021060969A/ja
Application granted granted Critical
Publication of JP7374863B2 publication Critical patent/JP7374863B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】トレースデータを取扱う代替的な方法を提供する。【解決手段】プロセッサによって実行されるプログラムのフローを監視するプロセッサ監査ユニットであって、監査ユニットは、プログラムのフローにおけるジャンプの後にプログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、このユニットは、第1モードにおいて、プログラムのフローにおけるジャンプを検出したとき、プログラムのフローがジャンプからリターンすると予想されるロケーションを表すロケーション値を保存することができ、かつ、第2モードにおいて、プログラムのフローにおけるジャンプを検出したとき、プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値と関連付けられたカウンタをインクリメントできる。【選択図】図3

Description

本発明は、トレースデータの取扱い(例えば、トレースデータの保存、伝達または解釈)に関する。
従来、プロセッサにより実行されるプログラムはメモリに保存されている。プログラムは多数の個別の命令から構成される。各命令は特定のメモリロケーションで開始される。プログラムの通常動作時には、プログラムは、1つの命令から次の命令へと、メモリに保存された順番で進む。あるいは、プログラムは、第1の命令から、当該第1の命令の直ぐ後にはない他の命令へと進むことができる。これはジャンプと呼ばれる。ジャンプが発生する最も一般的な状況は、プログラムが新たなサブルーチンに入るとき又はサブルーチンから戻るときである。
監査機能またはエンコーダを用いてプロセッサの動作を監査することが知られている。この監査機能は、プロセッサの動作を追跡し、これらの動作を記録して分析のために他のエンティティに報告することができる。監査機能により収集されるデータは、プロセッサ上で動作するプログラムのデバッグを補助するため、または安全性もしくはセキュリティ上の理由のためにプロセッサの不正確もしくは異常な動作の監視を行うために用いることができる。収集されるデータには、プログラムが実行した命令の順序を示すデータが含まれていてもよい。これはトレースデータとして知られている。
プロセッサが高速で動作しているとき、監査機能は、大量のデータを高速で収集することができる。監査機能により収集されているデータを簡易化して、効率的に保存または送信できるようにすることが望ましい。例えば、監査機能が、プログラムにより実行された全ての命令のログを取る場合、大量のデータが関わることになる。
監査機能により収集されるデータを簡易化する1つの方法としては、プログラムのフローが、1つの命令から次の命令へとメモリに保存された順番で進み、サブルーチンへのジャンプに続いて、ジャンプ後の命令にリターンすると仮定することである。これに伴う問題は、ジャンプがその後の命令にリターンしない場合が存在するという点である。例を挙げると、エラーハンドラがトリガされたとき、または、コンパイラがプログラムのフローにおいて低レベルの最適化を実行したときである。したがって、プログラムのフローについてログを取得または報告する際、ジャンプについての情報を収集することが望ましい。
1つの単純なアプローチとしては、監査機能に、ログを取得または報告したコールの数を記録させることである。エンコーダは、コールを報告する都度カウントをインクリメントし、リターンが生じるとカウンタをデクリメントする。リターンが生じたときにカウンタがゼロでない場合、ログを取得または報告した情報が、リターンアドレスの推定を可能とするために十分なものとなっていると仮定することができる。カウンタはオーバーフローまたはアンダーフローしないように抑制される。このスキームは実装が容易であり、多数のネストされたコールを記録することができる。短所としては、このスキームは、プログラムが常に予想アドレスに戻ることに依拠しているという点である。これは限られたセットのプログラムにのみ該当し、他のプログラムについては、サブルーチンがスタックにおいてリターンアドレスを変更する状況、つまり、プログラムが、デコーダが予想する場所にリターンしない状況が存在する。
代替的に、ジャンプについて収集された情報は、最も通常の挙動として、プログラムが1つのロケーション(“X”)からサブルーチンにジャンプし、その後、プログラムが当該サブルーチンからリターンしたとき、この同じロケーションXの直ぐ後にある命令にリターンするものとして扱うことができる。リターンロケーションは、プログラムがジャンプを行うときに保存することができる。プログラムがサブルーチンからリターンするとき、リターンが生じた実際のアドレスを確認することができる。このアドレスが、保存されたロケーションと同じであれば、通常の挙動とみなしてプログラムの挙動を再構築できるので、データのログを取る必要はない。そうでない場合、リターンロケーションのログを取るか、このロケーションを報告する。
このアプローチに関する問題は、プログラムが、多数のネストされたレベルのジャンプまたはサブルーチンコールを実行する場合、監査機能は、全ての予想リターンアドレスを保存するために大容量のメモリを必要とするという点である。これが起こる場合の例としては、プログラムが回帰アルゴリズムを実行する場合である。監査機能は、利用可能なメモリを超過したときにジャンプのログを取得または報告することもできるが、これは費用が高くなるか、非効率となり得る。
トレースデータを取扱う代替的な方法が必要とされている。
1つの態様によると、プロセッサによって実行されるプログラムのフローを監視するプロセッサ監査ユニットであって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、前記ユニットは、第1モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値を保存することができ、かつ、第2モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値と関連付けられたカウンタをインクリメントできる、プロセッサ監査ユニットが提供される。
第2の態様によると、プロセッサによって実行されるプログラムのフローを監視するためにプロセッサ監査ユニットを動作させる方法であって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、前記方法は、第1モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値を保存することと、第2モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値と関連付けられたカウンタをインクリメントすることとを含む方法が提供される。
前記ユニットは、前記第1モードにおいて動作することにより、所定の数以下の数のロケーション値を同時に保存するように構成されていてもよい。いずれか1つの前記ロケーション値をそれぞれ保持する所定の数のメモリスロットが予め割り当てられていてもよい。
前記ユニットは、前記プログラムのフローにおいて、前記第1モードの動作によってロケーション値が保存されたジャンプまたは前記第2モードの動作によってカウンタがインクリメントされたジャンプに対応するリターンを検出したとき、(i)前記プログラムのフローがリターンした実際のロケーションと、(ii)前記ロケーション値のそれぞれによって示されるとおり、プログラムのフローがリターンすると予想されていたロケーションとを比較し、これらのロケーションが一致しないという判断に応答して、前記実際のリターンロケーションの表示のログを取るように、または、離れた場所にいる使用者に前記実際のリターンロケーションを報告するように構成されていてもよい。
前記ユニットは、順序付きのロケーション値のセットを保存するように構成されていてもよい。
前記ユニットは、前記プログラムのフローにおいて、前記プログラムのフローが第1のロケーションにリターンすると予想されている第1のジャンプを検出したとき、最後に保存されたロケーション値が前記第1のロケーションを示している場合、前記第1モードで動作し、それ以外の場合、前記最後に保存されたロケーションと関連付けられたカウンタが最大(full)でないときは、第2モードで動作して前記カウンタをインクリメントするように構成されていてもよい。
前記第1のジャンプは回帰ジャンプであってもよい。
前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアと、ポインタとにアクセス可能であってもよい。前記監査ユニットは、前記ポインタに前記ロケーション値のうちの1つを指定させることによって、カウンタと当該ロケーション値を関連付けるように構成されていてもよい。
前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアと、前記ストアよりも少ない数の複数のカウンタと、各カウンタにつき1つ設けられた複数のポインタとにアクセス可能であってもよい。前記監査ユニットは、カウンタに対応するポインタに前記ロケーション値のうちの1つを指定させることによって、前記カウンタと当該ロケーション値を関連付けるように構成されていてもよい。
前記監査ユニットは、2つの連続するストアが同一のロケーション値を保存しているとき、これらのロケーション値と関連付けられたカウンタを、ビット単位で組み合わされた1つのカウンタとして扱うように構成されていてもよい。
前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアにアクセス可能であってもよい。前記ストアのそれぞれと関連付けられたカウンタが設けられていてもよい。
前記監査ユニットは、2つの連続するストアが同一のロケーション値を保存しているとき、これらのロケーション値と関連付けられたカウンタを、ビット単位で組み合わされた1つのカウンタとして扱うように構成されていてもよい。
前記ジャンプまたは前記ジャンプのそれぞれは、サブルーチンコールによるものであってもよい。
第3の態様によると、プロセッサによって実行されるプログラムのフローを監視するプロセッサ監査ユニットであって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、前記ユニットは、前記プログラムのフローを監視し、プログラムのフローにおいてサブルーチンコールと関連付けられたジャンプを検出し、かつ、そうしたジャンプを検出したことに応答して、前記プログラムのフローが前記ジャンプからリターンすると予想される予想リターンアドレスの表示を保存するように構成されており、前記ユニットは、i)前記予想リターンアドレスを表すロケーション値を保存することを含む第1の機構と、ii)前記予想リターンアドレスを表すロケーション値であって、それよりも前に保存されたロケーション値と関連付けられたカウンタをインクリメントすることを含む第2の機構との両方によって、前記表示を保存することができるプロセッサ監査ユニットが提供される。
第4の態様によると、プロセッサによって実行される前記プログラムのフローを監視するプロセッサ監査ユニットを動作させる方法であって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、前記方法は、前記プログラムのフローを監視し、プログラムのフローにおいてサブルーチンコールと関連付けられたジャンプを検出することと、そうしたジャンプを検出したことに応答して、異なる時点において、i)前記予想リターンアドレスを表すロケーション値を保存することを含む第1の機構と、ii)前記予想リターンアドレスを表すロケーション値であって、それよりも前に保存されたロケーション値と関連付けられたカウンタをインクリメントすることを含む第2の機構との両方によって、前記プログラムのフローが前記ジャンプからリターンすると予想される予想リターンアドレスの表示を保存することと、を含む方法が提供される。
前記監査ユニットは、連続的なジャンプ動作を表す順序付きのロケーション値のセットを保存するように構成されていてもよい。前記監査ユニットは、順序において前記最後に保存されたロケーション値が前記予想リターンアドレスを表していない場合、前記第1の機構を採用し、順序において前記最後に保存されたロケーション値が前記予想リターンアドレスを表している場合、前記第1の機構を採用するように構成されていてもよい。
前記カウンタは、当該カウンタが取り得る所定の最大値を有していてもよい。前記ユニットは、前記カウンタにおいて所定の数量以下の数量を保存するように構成されていてもよい。前記監査ユニットは、順序において前記最後に保存されたロケーション値が、前記予想リターンアドレスを表し、かつ、前記ロケーション値と関連付けられた前記カウンタが前記所定の最大値となっている場合、前記第1の機構を採用するように構成されていてもよい。
前記ユニットは、任意の1回において、カウンタを1つのロケーション値のみと関連付けるように構成されていてもよい。
前記ユニットは、前記ロケーション値のうち、前記カウンタが関連付けられたロケーション値を示すデータを保存するように構成されていてもよい。
前記ユニットは、各ロケーション値とそれぞれ関連付けられた複数のカウンタを記録するように構成されていてもよい。
前記ユニットは、2つの連続するロケーション値が同一の予想リターンアドレスを表し、各前記ロケーション値がそれぞれ対応付けられたカウンタを有する場合、前記カウンタを表すビットを、バイナリ形式で値を集合的に表すものとして扱うように構成されていてもよい。
前記ユニットは、サブルーチンからのリターンであって、実際のリターンアドレスへのリターンを検出したとき、前記実際のリターンアドレスが、順序において前記最後に保存されているロケーション値によって示される前記予想リターンアドレスと一致するか判断し、これらのアドレスが一致しない場合は、そのイベントのログを取得またはそのイベントを報告し、当該ロケーション値と関連付けられたカウンタであって、インクリメントされた値を有するカウンタが存在する場合は、このカウンタをデクリメントし、このカウンタが存在しない場合は、前記ロケーション値を削除するように構成されていてもよい。
前記監査ユニットは、前記プロセッサから、当該プロセッサが実行する前記命令の前記アドレスの表示を取得することによってプログラムのフローを監視してもよい。
以下において、添付の図面に言及しつつ、本発明を例示的に説明する。
データ処理システムのアーキテクチャの図である。 プログラムのフローの図である。 メモリ構造の図である。
図1には、データ処理システムが示されている。このシステムは、プロセッサ1と、メモリ2と、監査ユニット3と、分析ステーション4とを備える。メモリ2は、データバス5によりプロセッサ1に接続されている。また、監査ユニット3も前記データバスに接続されている。監査ユニット3は、前記プロセッサと前記メモリとの間の通信を観察できるような方法で前記データバスに接続されている。前記監査ユニットは、プロセッサにより実行されるプログラムのフローを監視する。前記監査ユニットは、このフローの表示を保存し、例えば、デバッグや、安全性またはセキュリティ上の目的のために分析を行うことができる分析ステーション4に、前記フローの表示を送信することができる。
着目すべきであるのは、前記監査ユニットが、ジャンプが生じたときのプログラムのフローを示す情報を保存または送信するデータ形式である。一実施形態では、前記監査ユニットは、ジャンプが生じた命令のロケーションの表示と、その命令からジャンプが生じた連続回数を示すことができるカウンタとを保存する。
前記プロセッサは、デフォルトの順序に従ってデフォルトで命令を実行する。通常、このデフォルトの順序は、メモリ内のロケーションの昇順で命令を実行するようにされている。「ジャンプ」という用語は、プログラムのフローにおける変更であって、所与の命令が実行された後、実行される次の命令が、デフォルトの順序において当該所与の命令の後にある次の命令以外の命令となるような変更を指している。典型的には、ジャンプは、実行順序の変更をコマンドする命令によってトリガされる。このような動作をトリガするために利用可能な命令は、動作環境に依存するものの、ジャンプ命およびブランチ命令を含んでいてもよい。ジャンプは、命令の実行以外のイベントによってトリガされてもよく、例えば、割り込みファイアリングまたは発生した例外によりトリガされてもよい。
より詳細には、プロセッサ1は、論理ユニット10と、レジスタ11と、スタックメモリ12とを備える。前記プロセッサは、算術論理ユニットおよび/または乗算ユニットなどといった、様々な目的のために適合された複数の論理ユニットを備えていてもよい。前記レジスタは、プロセッサに対してローカルでデータを保存する。スタックメモリは、論理ユニットによって現在実行されているサブルーチンが完了したときに、プログラムのフローが戻る(revert)べきロケーションの順序付きリストを保存している。スタックメモリは、監査ユニット3とも、使用するメモリとも別体である。
メモリ2は、多数のメモリロケーション20を含み、各メモリロケーションにデータを保存することができる。各メモリロケーションは、そのメモリロケーションにアクセスすることができるアドレスによって指定される。前記プロセッサは、バス5を通じて、特定のメモリロケーションのデータに対する要求を送信することができる。メモリ2は、そうした要求に応答して、当該ロケーションにおけるメモリ2の内容を、バスを通じて返送するように適合されている。
動作時において、前記プロセッサは、前記メモリから開始ロケーションの命令を取得し、その命令を実行することで開始する。その後、前記プロセッサは、プログラムの実行が終了するまで、さらなる命令を順に取得する。各ステージにおいて、前記プロセッサのデフォルト挙動は、次の命令を順序通りに前記メモリから取得するように構成されている。当該次の命令が保存されているロケーションは、前回の命令のロケーションおよび前回の命令の長さによって異なる。本明細書では、各命令が1つのメモリロケーションを占有するものと仮定しているが、命令はより大きいものであってもよく、1つのシステムにおける様々なサイズのものであってもよい。前記プロセッサは、メモリ内において次の命令をフェッチすべき場所を記録するプログラムカウンタ13を備える。前記プロセッサは、命令の実行前にメモリから命令を取得し、一時的にこれらの命令を前記プロセッサにローカルで保存することによって、メモリからの命令をプリフェッチしてもよい。この構成については、下記でより詳細に説明する。
前記監査ユニットは、フィルタリングユニット30と、フィルタメモリ31と、データキャッシュまたはログ32とを有する。フィルタメモリ31は、ユーザが検出を所望するイベントの種類を示す1セットのフィルタ規則を保存している。フィルタリングユニット30は、バス5を通じてトランザクションを観察する。トランザクションがフィルタ規則と一致する場合、前記フィルタリングユニットは、キャッシュ32における当該トランザクションについての情報のログを取得またはリンク6を通じて分析ステーション4へと当該トランザクションについてのデータを送信するといった動作を行う。また、監査ユニットは、キャッシュ32においてローカルでデータのログを取得し、その後、当該データを分析ステーションへと送信することも可能である。
図2には、図1のシステムにおけるプログラムのフローの例が示されている。プロセッサ1は、メモリロケーションAにおいて開始されるプログラムの実行を開始し、命令Bに到達するまでメモリ2内の連続的な命令を順序通り実行し続ける。命令Bは、メモリロケーションCにおいて開始されるサブルーチン70を呼び出す。その後、前記プロセッサは、スタック12にBのロケーションを保存する。続いて、前記プロセッサは、Dにおけるサブルーチン70の最後の命令に到達するまで、Cから始まる命令を実行する。その後、前記プロセッサは、スタックにおける(ロケーションBの)最後のエントリを読み出し、当該エントリを前記スタックから削除し、当該エントリによって示されたロケーションの直ぐ後の命令から実行を再開する。図2では、これは命令Eである。次に、前記プロセッサは、命令Fで終了するメインルーチン71の実行を完了させる。ネストされたサブルーチンが呼び出される場合、各サブルーチンが呼び出される際に、それぞれに対するリターンアドレスが前記スタックに追加され、サブルーチンが終了する際に前記スタックから削除される。これにより、前記プロセッサは、サブルーチンのコールの複数の層に対するリターンアドレスを記録することができる。サブルーチンをコールすること自体により、プログラムが反復を行う場合、前記スタックにおける連続的なエントリは同一のアドレスを示してもよい。
図3には、監査ユニットのメモリ33におけるデータ構造が示されている。メモリ33は、ログメモリ32と一体化されていてもよいが、例えばより早いアクセス速度を可能とするために、別体であってもよい。図3に示されたデータ構造の目的は、比較的効率的な方法でプログラムのフローのログを取得または分析ステーション4に送信できるように、プログラムのフローを追跡することである。このデータ構造は、複数のアドレスビン( address bin)80と、カウンタビン81と、カウンタポインタビン82とを有する。このデータ構造を用いる監査ユニットの動作については、以下で説明する。
監査ユニットのフィルタリングユニット30は、バス5を通じてトラフィックを監視する。フィルタリングユニットがフィルタ規則に従って検出を行うように構成されていてもよい1つの種類のトラフィックとしては、前記プロセッサにより実行されるプログラムのフロー(つまり、プロセッサが実行するための命令を取得するメモリ内の一連のロケーション)が挙げられる。この情報は、デバッグのために、またはプログラムのフローが正確であり、(例えば、プロセッサに対し、誤ったメモリロケーションにおける命令を実行するように命令されたことにより)破損していないことを検証するために有益である。図1の例では、監査ユニットは、下記の1つ以上からプログラムのフローを推定することができる。
i)プロセッサが命令を要求するメモリ2内のロケーション。これらのロケーションからのデータに対する要求は、前記プロセッサからメモリへとバス5上を通過する際に、監査ユニットによって観察されてもよい。
ii)メモリからバス5を介してプロセッサへと通過する命令の内容。監査ユニットは、プログラムのフローは、通常、1つの命令から次の命令へとメモリ内の順序で進むと仮定してもよいが、このメモリからプロセッサへと送られるジャンプ命令を観察したときには、ジャンプ命令で特定されたロケーションまでプログラムのフローがジャンプすると推定してもよく、監査ユニットがリターン命令を観察したときには、当該サブルーチンへのジャンプが生じたロケーションの直ぐ後のロケーションまでプログラムのフローがジャンプすると推定してもよい。
iii)プロセッサが命令を実行したとき、プロセッサは監査ユニットに直接報告することができる。この報告は、命令が下げられた(retired)とき(つまり、遂行されたとき)に行ってもよい。
図1において、監査ユニットはデータバス5に接続された状態で示されている。他の実施形態では、監査ユニットは、プロセッサの状態を直接検出できるように(例えば、監査ユニットがプログラムカウンタ13および/またはスタック12の内容を検出できるように)、プロセッサと密接に接続されていてもよい。これにより、監査ユニットは、最終的に実行されない可能性があるプリフェッチされた命令を考慮することができる。
動作中、アドレスビン80は所定の順番で使用される。アドレスビンは当初は空である。下記の例外の場合、監査ユニットが、プログラムのフローにおける(特に、サブルーチンコールによる)ジャンプを検出すると、当該ジャンプが生じたアドレスの表示を、次の利用可能なアドレスビンに保存する。ジャンプがサブルーチンコールによるものであるということは、そのジャンプを生じさせた命令の性質またはプログラム内におけるジャンプの状況によって判断することができ、または、プロセッサは、サブルーチンコールがなされたということを監査機能に報告してもよい。前記表示は、任意の適切な形式とすることができる。例えば、ジャンプが生じたアドレス;またはその直ぐ後の命令のアドレスであって、リターンが予想されているアドレス;または所定のアルゴリズムに従ってリターンアドレスを推定することができる他のデータであってもよい。サブルーチンがネストされたとき、連続的なビンのそれぞれに順番に入力が行われてもよい。監査ユニットがサブルーチンからのリターンを検出したとき、監査ユニットは、このリターンがデータを含む最も上位のアドレスビン80の内容によって示されるリターンアドレスへのものであるかどうかを確認する。規約(convention)として、ビンが、ジャンプが生じたアドレスを含む場合、上記示されるリターンアドレスは、ビンに含まれるアドレスの直ぐ後のアドレスとなる。監査ユニットは、このジャンプの直ぐ後に続いて実行される命令が、示されたものであるかどうかを確認する。示されたものである場合、プログラムのフローは正常であり、必要があれば容易に推定することができるので、監査ユニットは、ログの取得または報告を行わない。実際のリターンアドレスがビンに示されたものではない場合、監査ユニットは、このプログラムのフローを後で再構築できるようにするために、キャッシュ32中の実際のリターンアドレスのログを取り、かつ/または、この実際のリターンアドレスを遠隔の分析ユニット4に報告する。監査ユニットは、この実際のリターンアドレスがどのリターンと関連しているのか判断できるように、それぞれのビン80の数または(ビン80の順序における)ランクのログを取り、かつ/またはこれを報告してもよい。その後、監査ユニットは、データを含む最も上位のアドレスビン80の内容を消去する。
プログラム実行中の任意の時点において、または実行が何らかの理由で(例えば、バグにより)中断された場合、アドレスビンの内容について、監査ユニットによりログを取得または調査するか、または分析のために分析ステーション4に送信することができる。
効率のためには、アドレスビン80の数が比較的少ないことが好ましい。例えば、アドレスビンを4個以下、またはアドレスビンを8個以下、またはアドレスビンを16個以下とすることができる。プログラムのフローが多数のレベルのネストされたサブルーチンを入力した場合、ネストされたジャンプの数が、利用可能なアドレスビンに明白に保存できる数よりも大きくなることがある。これを軽減するために2つのステップを取ることができる。
まず、リターンアドレスを保存するためのアドレスビンが残っていないときにジャンプが行われた場合、順序が最も下位のビンのアドレスを破棄し、他のアドレスビンの内容を順に下げて、順序が最も上位のビンを空けることができる。その後、現在のジャンプと関連付けられたリターンアドレスを、順序が最も上位のビンに保存することができる。これにより、システムは、常に、N個の最も内側のサブルーチンコールのリターンアドレスへのアクセスを有する。ここで、Nはアドレスビンの数である。代替的に、ジャンプの詳細についてのログをメモリ32に残し、かつ/またはジャンプの詳細を分析ステーション4に報告してもよい。
次に、ジャンプが行われ、予想リターンアドレスが前回のジャンプのリターンアドレスと同一である場合には、ビン81,82を用いることができる。この状況は、プログラムが回帰を実行するときに最も生じやすい。ジャンプが行われ、リターンアドレスが前回のジャンプと同一である場合には、監査ユニットは以下のステップを取る。
1.監査ユニットは、ポインタ82を確認することにより、ビン81,82が既に他のアドレスビンに使用されているかどうか確認する。考え得る状況としては以下の通りである。
可能性i)ポインタ82が空である(例えば、−1を示している)。これは、ビン81,82が使用中ではないということを示す。この場合、監査ユニットは、前回のジャンプに対するリターンアドレスの表示を保存しているアドレスビン80を特定するようにポインタ82の設定を行い、現在のジャンプはそのリターンアドレスを有するジャンプの1回目の繰り返しであることを示すためにカウンタ81を1に設定する。
可能性ii)ポインタ82が、前回のジャンプに対するリターンアドレスの表示を保存しているアドレスビン80を特定しており、当該アドレスビンが、現在使用されている最も上位のビンである。この場合、監査ユニットは、そのリターンアドレスを有する追加のジャンプが行われたことを示すためにカウンタ81をインクリメントする。カウンタが最大である場合、監査ユニットは下記の可能性iii)のように動作を続ける。
可能性iii)ポインタ82が、前回のジャンプに対するリターンアドレスとは異なるリターンアドレスを保存しているアドレスビンを特定しているか、または、そのアドレスビンが現在使用されている最も上位のビンではないか、または、上記ii)のようにカウンタが最大ではない。この場合、監査ユニットは、次の利用可能なビンのリターンアドレスの表示を保存するか、または、利用可能なビンがない場合には、前段落に記載される手順を用いてもよい。
前段落に記載のプロセスの結果として、監査ユニットは、カウンタ81の範囲内で複数の回帰レベルを効率的に保存することができ、また、アドレスビン80の範囲(extent)内で複数の非回帰ジャンプを効率的に保存することができる。
監査ユニットは、ジャンプからのリターンを検出したとき、そのリターンアドレスは、占有されている最も上位のアドレスビンに特定されているものであると推定する。監査ユニットは、ポインタ82が設定されているかどうかを確認し、設定されている場合には、そのビンを特定しているかどうかを確認する。ポインタが設定されていない場合、または設定されているものの上記アドレスビンを特定していない場合、監査ユニットはこのアドレスビンの内容を消去する。これに該当せず、ポインタが設定されており、かつ上記ビンを特定している場合には、監査ユニットはカウンタ81をデクリメントする。これによりカウンタがゼロになった場合、監査ユニットは、カウンタ81、ポインタ82および占有されている最も上位のアドレスビンの内容を消去する。これにより、監査ユニットは、プログラムのフローの現在の状態を示すために、図3に示されるデータ構造を維持することができる。監査ユニットは、図3のデータ構造により示される予想リターンアドレスに対して実際のリターンアドレスを確認し、不一致があれば上記の方法でログの取得および/または報告を行う。
カウンタ81は、幾つかの方法で実装することができる。図3の構成に代わる1つの構成において、複数のカウンタが設けられており、各カウンタが、それぞれ同一のリターンアドレスを有する複数の連続的なジャンプを示すものであってもよい。このアプローチにより、複数のネストされたレベルの回帰のログを効率的に取得することができる。1つの構成において、このようなカウンタの数はアドレスビンの数よりも少なくてもよい。このとき、各カウンタは、それぞれのカウンタがいずれのアドレスビンと関連付けられているかを示すために用いられるポインタと関連付けてもよい。他の構成では、各アドレスビンにつき1つのカウンタを設けてもよい。このとき、ポインタを省略してもよい。これにより、ビンを指定するカウンタと関連付けられているポインタによって、またはカウンタがビンと内在的に関連付けられているかどうかの暗示によって、任意のカウンタをビンと関連付けることができる。複数のカウンタに対してメモリが割り当てられている場合、これらのメモリ領域は、別個に動作させてもよいし、または、これらのカウンタのうちの1つのカウンタの範囲を増大させるために論理的に組み合わせてもよい。これを行うことができる幾つかの例を以下に示す。
1.カウンタが最大である場合につき上述したように、更なるアドレスビンが利用可能である場合、そのビンに、前のビンと同一のリターンアドレス識別子を入力することができる。これらのビンの両方とカウンタを関連付けることができる場合、これらのカウンタは、効率的に相加的に使用されている。
2.上記の状況が生じた場合、つまり、2つの連続するアドレスビンが同一のリターンアドレスを特定する場合、これらのビンと関連付けられたカウンタは、両カウンタからのビットを用いる1つのカウンタとして扱うことができる。1つのカウンタが、全体的なカウンタ合計におけるより上位のビットを表し、1つのカウンタが、カウンタ合計におけるより下位のビットを表すことができる。組み合わされた1つのカウンタは適宜インクリメントおよびデクリメントすることができる。両カウンタに用いられるポインタは、同一のアドレスビンを参照することができ、または同一のリターンアドレス識別子を含む2つの連続するアドレスビンを参照することができる。1つのカウンタに保持できる数量までカウンタがデクリメントされたとき、これらのビンのうちの上位のビンを空にして、そのカウンタを開放することができる。
図1では、監査ユニットはプロセッサの外部に示されている。実際には、監査ユニットは任意の適切なロケーションに配置することができる。このロケーションは、プロセッサ内とすることができ、例えば、プロセッサのメモリインターフェースとすることができる。これにより、プロセッサの動作を効率的に監視することができる。また、プロセッサと共通の半導体基板上とすることもできる。これにより、プロセッサのユーザは、プロセッサが正確に監視されていることを確認することができる。
プロセッサは、それぞれ別個のプログラムスレッドを実装できる複数のコアまたは論理ユニットを有していてもよい。この場合、監査ユニットは、例えば、図3に示される形式の二重化保存論理を用いて各スレッドのフローを独立に追跡してもよい。
本願の出願人は、本明細書に記載の各個別の構成を独立に、および2つ以上の構成の組み合わせを、それらの構成または構成の組み合わせが、当業者の技術常識に照らして全体として本明細書に基づいて実施可能である範囲で、それらの構成または構成の組み合わせが本明細書に開示されたいずれかの課題を解決するかどうかにかかわらず、また、請求の範囲を限定することなく開示している。本発明の態様は、そうした構成または構成の組み合わせのいずれからなるものであってもよい。上記の説明から、本発明の範囲内で様々な変更を施すことができるということが当業者にとって明白であろう。

Claims (13)

  1. プロセッサによって実行されるプログラムのフローを監視するプロセッサ監査ユニットであって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、
    前記ユニットは、
    第1モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値を保存することができ、
    第2モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値と関連付けられたカウンタをインクリメントできる、
    プロセッサ監査ユニット。
  2. 前記ユニットは、前記第1モードにおいて動作することにより、所定の数以下の数のロケーション値を同時に保存するように構成されている、請求項1に記載のプロセッサ監査ユニット。
  3. 前記ユニットは、前記プログラムのフローにおいて、前記第1モードの動作によってロケーション値が保存されたジャンプまたは前記第2モードの動作によってカウンタがインクリメントされたジャンプに対応するリターンを検出したとき、
    (i)前記プログラムのフローがリターンした実際のロケーションと、(ii)前記ロケーション値のそれぞれによって示されるとおり、プログラムのフローがリターンすると予想されていたロケーションとを比較し、
    これらのロケーションが一致しないという判断に応答して、前記実際のリターンロケーションの表示のログを取るように、または、離れた場所にいる使用者に前記実際のリターンロケーションを報告するように構成されている、
    請求項1または2に記載のプロセッサ監査ユニット。
  4. 前記ユニットは、順序付きのロケーション値のセットを保存するように構成されている、請求項1から3のいずれか一項に記載のプロセッサ監査ユニット。
  5. 前記ユニットは、前記プログラムのフローにおいて、前記プログラムのフローが第1のロケーションにリターンすると予想されている第1のジャンプを検出したとき、最後に保存されたロケーション値が前記第1のロケーションを示している場合、前記第1モードで動作し、それ以外の場合、前記最後に保存されたロケーションと関連付けられたカウンタが最大でないときは、第2モードで動作して前記カウンタをインクリメントするように構成されている、請求項4に記載のプロセッサ監査ユニット。
  6. 前記第1のジャンプは回帰ジャンプである、請求項5に記載のプロセッサ監査ユニット。
  7. 前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアと、ポインタとにアクセス可能であり、前記監査ユニットは、前記ポインタに前記ロケーション値のうちの1つを指定させることによって、カウンタと当該ロケーション値を関連付けるように構成されている、請求項1から6のいずれか一項に記載のプロセッサ監査ユニット。
  8. 前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアと、前記ストアよりも少ない数の複数のカウンタと、各カウンタにつき1つ設けられた複数のポインタとにアクセス可能であり、前記監査ユニットは、カウンタに対応するポインタに前記ロケーション値のうちの1つを指定させることによって、前記カウンタと当該ロケーション値を関連付けるように構成されている、請求項7に記載のプロセッサ監査ユニット。
  9. 前記監査ユニットは、2つの連続するストアが同一のロケーション値を保存しているとき、これらのロケーション値と関連付けられたカウンタを、ビット単位で組み合わされた1つのカウンタとして扱うように構成されている、請求項2に従属する請求項8に記載のプロセッサ監査ユニット。
  10. 前記監査ユニットは、各ロケーション値をそれぞれ保存する複数のストアにアクセス可能であり、前記ストアのそれぞれと関連付けられたカウンタが設けられている、請求項1から7のいずれか一項に記載のプロセッサ監査ユニット。
  11. 前記監査ユニットは、2つの連続するストアが同一のロケーション値を保存しているとき、これらのロケーション値と関連付けられたカウンタを、ビット単位で組み合わされた1つのカウンタとして扱うように構成されている、請求項2に従属する請求項10に記載プロセッサ監査ユニット。
  12. 前記ジャンプまたは前記ジャンプのそれぞれは、サブルーチンコールによるものである、請求項1から11のいずれか一項に記載のプロセッサ監査ユニット。
  13. プロセッサによって実行されるプログラムのフローを監視するプロセッサ監査ユニットを動作させる方法であって、前記監査ユニットは、前記プログラムのフローにおけるジャンプの後に前記プログラムのフローがリターンすると予想されるロケーションを表す1セットの値を保存するように適合されており、
    前記方法は、
    第1モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値を保存するステップと、
    第2モードにおいて、前記プログラムのフローにおけるジャンプを検出したとき、前記プログラムのフローが前記ジャンプからリターンすると予想されるロケーションを表すロケーション値と関連付けられたカウンタをインクリメントするステップと、
    を含む、方法。
JP2020116776A 2019-07-10 2020-07-07 トレースデータの取扱い Active JP7374863B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1909933.2 2019-07-10
GB1909933.2A GB2586954B (en) 2019-07-10 2019-07-10 Handling trace data

Publications (2)

Publication Number Publication Date
JP2021060969A true JP2021060969A (ja) 2021-04-15
JP7374863B2 JP7374863B2 (ja) 2023-11-07

Family

ID=67623293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020116776A Active JP7374863B2 (ja) 2019-07-10 2020-07-07 トレースデータの取扱い

Country Status (5)

Country Link
US (1) US11989111B2 (ja)
EP (1) EP3764236A1 (ja)
JP (1) JP7374863B2 (ja)
CN (1) CN112214340A (ja)
GB (1) GB2586954B (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62296232A (ja) * 1986-06-17 1987-12-23 Matsushita Electric Ind Co Ltd 高速ル−プ回路
JPS63200234A (ja) * 1987-02-17 1988-08-18 Toshiba Corp デ−タ処理装置
US6973563B1 (en) * 2002-01-04 2005-12-06 Advanced Micro Devices, Inc. Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US6223338B1 (en) * 1998-09-30 2001-04-24 International Business Machines Corporation Method and system for software instruction level tracing in a data processing system
CN100451914C (zh) * 2001-08-29 2009-01-14 联发科技股份有限公司 锁相环迅速加电方法和装置
JP4327416B2 (ja) * 2002-06-17 2009-09-09 三菱電機株式会社 トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム
US7987453B2 (en) * 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US8214819B2 (en) * 2004-07-09 2012-07-03 Hewlett-Packard Development Company, L.P. Determining call counts in a program
US20090222646A1 (en) * 2008-02-28 2009-09-03 International Business Machines Corporation Method and apparatus for detecting processor behavior using instruction trace data
US9058421B2 (en) * 2009-06-16 2015-06-16 Freescale Semiconductor, Inc. Trace correlation for profiling subroutines
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses
US9305651B1 (en) * 2014-09-22 2016-04-05 Sandisk Technologies Inc. Efficient wide range bit counter
US9858411B2 (en) * 2014-12-19 2018-01-02 Intel Corporation Execution profiling mechanism
US10970388B2 (en) * 2017-06-28 2021-04-06 Webroot Inc. Discrete processor feature behavior collection
US10331447B2 (en) * 2017-08-30 2019-06-25 Qualcomm Incorporated Providing efficient recursion handling using compressed return address stacks (CRASs) in processor-based systems
US11061807B2 (en) * 2018-12-28 2021-07-13 Intel Corporation Trace management during aborted speculative operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62296232A (ja) * 1986-06-17 1987-12-23 Matsushita Electric Ind Co Ltd 高速ル−プ回路
JPS63200234A (ja) * 1987-02-17 1988-08-18 Toshiba Corp デ−タ処理装置
US6973563B1 (en) * 2002-01-04 2005-12-06 Advanced Micro Devices, Inc. Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIU, CHEN ET AL.: "Leveraging microarchitectural side channel information to efficiently enhance program control flow i", 2014 INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS), JPN6023006372, 12 October 2014 (2014-10-12), pages 1 - 9, XP032695354, ISSN: 0004995295, DOI: 10.1145/2656075.2656092 *

Also Published As

Publication number Publication date
GB201909933D0 (en) 2019-08-21
GB2586954B (en) 2023-06-14
US11989111B2 (en) 2024-05-21
JP7374863B2 (ja) 2023-11-07
CN112214340A (zh) 2021-01-12
US20210011833A1 (en) 2021-01-14
EP3764236A1 (en) 2021-01-13
GB2586954A (en) 2021-03-17

Similar Documents

Publication Publication Date Title
US8286139B2 (en) Call stack sampling for threads having latencies exceeding a threshold
US8141053B2 (en) Call stack sampling using a virtual machine
US8132170B2 (en) Call stack sampling in a data processing system
EP2230602B1 (en) Processing apparatus and method for acquiring log information
US6182243B1 (en) Selective data capture for software exception conditions
US5537541A (en) System independent interface for performance counters
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US8473789B2 (en) Memory leak monitoring system and associated methods
US8566795B2 (en) Selectively obtaining call stack information based on criteria
JP5520371B2 (ja) 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
US20180039560A1 (en) Dynamically identifying performance anti-patterns
US20190102278A1 (en) Memory leak profiling events
US7844971B2 (en) Method and apparatus for detecting cross-thread stack access in multithreaded programs
US20100185895A1 (en) Failure-specific data collection and recovery for enterprise storage controllers
US20120246518A1 (en) Operating a computer system
CN114328102A (zh) 设备状态监控方法、装置、设备及计算机可读存储介质
US8296552B2 (en) Dynamically migrating channels
US9009537B2 (en) Diagnostic data capture in a computing environment
US9910758B2 (en) Computer flight recorder with active error detection
US10452534B2 (en) Asynchronous operation query
JP2021060969A (ja) トレースデータの取扱い
JP2009217617A (ja) メモリリーク箇所の特定方法及び装置
US20170192878A1 (en) Separating Test Coverage In Software Processes Using Shared Memory
WO2020177495A1 (zh) 一种数据库连接管理方法及装置、设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201109

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20201109

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20201116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210202

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20210203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230904

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230925

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231025

R150 Certificate of patent or registration of utility model

Ref document number: 7374863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150