JP6363152B2 - データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体 - Google Patents
データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体 Download PDFInfo
- Publication number
- JP6363152B2 JP6363152B2 JP2016225010A JP2016225010A JP6363152B2 JP 6363152 B2 JP6363152 B2 JP 6363152B2 JP 2016225010 A JP2016225010 A JP 2016225010A JP 2016225010 A JP2016225010 A JP 2016225010A JP 6363152 B2 JP6363152 B2 JP 6363152B2
- Authority
- JP
- Japan
- Prior art keywords
- software program
- instruction
- memory
- link
- memory corruption
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3644—Debugging of software by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3624—Debugging of software by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/366—Debugging of software using diagnostics
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
(具体例1)
コンピュータプロセッサにより使用されるメモリ分析モジュールを有し、ソフトウェアプログラムのデバッグを含む処理を実行する装置であって:
前記ソフトウェアからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得し;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損の識別を受信し;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得し;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こし;
前記保存命令のセットのうちの保存命令及びメモリ破損のデータタイプ又はデータタイプ構造を前記デバッグ情報において識別し;
前記メモリ破損のデータタイプ及びデータタイプ構造を有する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得し;及び
前記保存命令候補及び前記リンクを返す;
ことを特徴とする装置。
前記デバッグ情報が前記ソフトウェアプログラムのコンパイル中に準備され、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックのデータタイプ又はデータタイプ構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする具体例1に記載の装置。
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こすことが、コード分解モジュールとともに行われ、前記メモリ分析モジュールは前記メモリ破損のレジスタを含むクラッシュログを受信し、前記メモリ分析モジュールは、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいて前記コード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損のレジスタにロードし且つ前記レジスタのデータタイプ又はデータタイプ構造を有する少なくとも1つの保存命令を、前記保存命令のセットの中で識別し、前記少なくとも1つの保存命令を、前記保存命令候補として識別する
ことを特徴とする具体例1に記載の装置。
前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクをユーザーのために表示することを含む
ことを特徴とする具体例1に記載の装置。
前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクを、インストルメンテーションモジュールに渡すことを含み、前記インストルメンテーションモジュールは、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測する
ことを特徴とする具体例1に記載の装置。
前記ランタイムプログラム制御フロートレースは、前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、プロセッサトレースモジュールから取得される
ことを特徴とする具体例1に記載の装置。
前記プロセッサトレースモジュールはハードウェアに基づくものである
ことを特徴とする具体例6に記載の装置。
前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする具体例6に記載の装置。
前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ソフトウェア命令への入口以外の進入分岐を有しておらず且つ前記ソフトウェア命令の出口以外の進出分岐を有していないソフトウェア命令を有し、前記ベーシックブロックは前記ランタイムプログラム制御フロートレースにおけるノードである
ことを特徴とする具体例1ないし具体例8のうちの何れか一項に記載の装置。
前記保存命令が、前記コンピュータのメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする具体例1ないし具体例8のうちの何れか一項に記載の装置。
プロセッサ及びメモリを有するコンピューティングデバイスにおいて、ソフトウェアプログラムをデバッグする方法であって:
前記ソフトウェアからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得するステップ;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損の識別を受信するステップ;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得するステップ;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こすステップ;
前記保存命令のセットのうちの保存命令及びメモリ破損のデータタイプ又はデータタイプ構造を前記デバッグ情報において識別するステップ;
前記メモリ破損のデータタイプ及びデータタイプ構造を有する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得するステップ;及び
前記保存命令候補及び前記リンクを返すステップ;
を有することを特徴とする方法。
前記デバッグ情報が前記ソフトウェアプログラムのコンパイル中に準備され、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックのデータタイプ又はデータタイプ構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする具体例11に記載の方法。
前記メモリ破損の入力レジスタを含むクラッシュログを受信し、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいて前記コード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損のレジスタにロードし且つ前記レジスタのデータタイプ又はデータタイプ構造を有する少なくとも1つの保存命令を、前記保存命令のセットの中で識別し、前記少なくとも1つの保存命令を、前記保存命令候補として識別するステップ
を更に有することを特徴とする具体例11に記載の方法。
前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクをユーザーのために表示することを含む
ことを特徴とする具体例11に記載の方法。
前記保存命令候補及び前記リンクを返すことが、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測することを含む
ことを特徴とする具体例11に記載の方法。
前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、プロセッサトレースモジュールから前記ランタイムプログラム制御フロートレースを取得するステップ
を更に有することを特徴とする具体例11に記載の方法。
前記プロセッサトレースモジュールはハードウェアに基づくものである
ことを特徴とする具体例16に記載の方法。
前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする具体例16に記載の方法。
前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ソフトウェア命令への入口以外の進入分岐を有しておらず且つ前記ソフトウェア命令の出口以外の進出分岐を有していないソフトウェア命令を含み、前記ベーシックブロックは前記ランタイムプログラム制御フロートレースにおけるノードである
ことを特徴とする具体例11ないし具体例18のうちの何れか一項に記載の方法。
前記保存命令が、前記コンピュータのメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする具体例11ないし具体例18のうちの何れか一項に記載の方法。
ソフトウェアプログラムのデバッグを含む処理を実行する装置であって:
前記ソフトウェアからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得する手段;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損の識別を受信する手段;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得する手段;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こす手段;
前記保存命令のセットのうちの保存命令及びメモリ破損のデータタイプ又はデータタイプ構造を前記デバッグ情報において識別する手段;
前記メモリ破損のデータタイプ及びデータタイプ構造を有する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得する手段;及び
前記保存命令候補及び前記リンクを返す手段;
を有することを特徴とする装置。
前記ソフトウェアプログラムのコンパイルから前記デバッグ情報を取得する手段を更に有し、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックのデータタイプ又はデータタイプ構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする具体例22に記載の装置。
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こす手段が、コード分解モジュールを有し、及び、前記メモリ破損のレジスタを含むクラッシュログを受信する手段を有し、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいて前記コード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損のレジスタにロードし且つ前記レジスタのデータタイプ又はデータタイプ構造を有する少なくとも1つの保存命令を、前記保存命令のセットの中で識別する手段と、前記少なくとも1つの保存命令を、前記保存命令候補として識別する手段とを更に有する
ことを特徴とする具体例21に記載の装置。
前記保存命令候補及び前記リンクを返す手段が、前記保存命令候補及び前記リンクをユーザーのために表示する手段を有する
ことを特徴とする具体例21に記載の装置。
前記保存命令候補及び前記リンクを返す手段が、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測する手段を有する
ことを特徴とする具体例21に記載の装置。
前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、ランタイムプログラム制御フロートレースを決定するプロセッサトレースモジュール手段
を更に有することを特徴とする具体例21に記載の装置。
前記プロセッサトレースモジュール手段はハードウェアに基づくものである
ことを特徴とする具体例26に記載の装置。
前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする具体例26に記載の装置。
前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ソフトウェア命令への入口以外の進入分岐を有しておらず且つ前記ソフトウェア命令の出口以外の進出分岐を有していないソフトウェア命令を有し、前記ベーシックブロックは前記ランタイムプログラム制御フロートレースにおけるノードである
ことを特徴とする具体例21ないし具体例28のうちの何れか一項に記載の装置。
前記保存命令が、前記コンピュータのメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする具体例21ないし具体例28のうちの何れか一項に記載の装置。
命令を有する1つ以上のコンピュータ読み取り可能な媒体であって、前記コンピューティングデバイスの1つ以上のプロセッサによる前記命令の実行に応答して、前記命令は、ソフトウェアプログラムのデバッグをコンピューティングデバイスに実行させ、前記ソフトウェアプログラムをデバッグすることは:
前記ソフトウェアからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得し;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損の識別を受信し;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得し;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こし;
前記保存命令のセットのうちの保存命令及びメモリ破損のデータタイプ又はデータタイプ構造を前記デバッグ情報において識別し;
前記メモリ破損のデータタイプ及びデータタイプ構造を有する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得し;及び
前記保存命令候補及び前記リンクを返す;
ことを含むことを特徴とするコンピュータ読み取り可能な媒体。
前記デバッグ情報が前記ソフトウェアプログラムのコンパイル中に準備され、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックのデータタイプ又はデータタイプ構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする具体例31に記載のコンピュータ読み取り可能な媒体。
デバッグソフトウェアプログラムは、保存命令のセットを識別するために、前記ベーシックブロックのリストをコード分解モジュールとともに分解し又は分解を引き起こし、前記メモリ破損のレジスタを含むクラッシュログを受信し、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいて前記コード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損のレジスタにロードし且つ前記レジスタのデータタイプ又はデータタイプ構造を有する少なくとも1つの保存命令を、前記保存命令のセットの中で識別し、前記少なくとも1つの保存命令を、前記保存命令候補として識別することを含む
ことを特徴とする具体例33に記載のコンピュータ読み取り可能な媒体。
前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクをユーザーのために表示することを含む
ことを特徴とする具体例31に記載のコンピュータ読み取り可能な媒体。
前記保存命令候補及び前記リンクを返すことが、将来のデバッグ情報における保存命令候補を識別するために、前記ソフトウェアプログラムを、インストルメンテーションモジュールにより計測する又は計測を引き起こすことを含む
ことを特徴とする具体例31に記載のコンピュータ読み取り可能な媒体。
ソフトウェアプログラムをデバッグすることが、前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、プロセッサトレースモジュールから前記ランタイムプログラム制御フロートレースを取得することを含む
ことを特徴とする具体例31に記載のコンピュータ読み取り可能な媒体。
前記プロセッサトレースモジュールはハードウェアに基づくものである
ことを特徴とする具体例36に記載のコンピュータ読み取り可能な媒体。
前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする具体例36に記載のコンピュータ読み取り可能な媒体。
前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ソフトウェア命令への入口以外の進入分岐を有しておらず且つ前記ソフトウェア命令の出口以外の進出分岐を有していないソフトウェア命令を有し、前記ベーシックブロックは前記ランタイムプログラム制御フロートレースにおけるノードである
ことを特徴とする具体例31ないし具体例38のうちの何れか一項に記載のコンピュータ読み取り可能な媒体。
前記保存命令が、前記コンピュータのメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする具体例31ないし具体例38のうちの何れか一項に記載のコンピュータ読み取り可能な媒体。
Claims (26)
- コンピュータプロセッサにより使用されるメモリ分析モジュールを有し、ソフトウェアプログラムのデバッグを含む処理を実行する装置であって:
前記ソフトウェアプログラムからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得し;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損を識別し;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得し;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こし;
前記保存命令のセットのうちの保存命令で使用されるデータのタイプ又は構造と前記メモリ破損で使用されるデータのタイプ又は構造とを前記デバッグ情報に基づいて識別し;
前記メモリ破損で使用されるデータのタイプ又は構造と同じタイプ又は構造を使用する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得し;及び
前記保存命令候補及び前記リンクを返す;
ことを特徴とする装置。 - 前記デバッグ情報が前記ソフトウェアプログラムのコンパイル中に準備され、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックで使用されるデータのタイプ又は構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする請求項1に記載の装置。 - 保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こすことが、コード分解モジュールとともに行われ、前記メモリ分析モジュールは前記メモリ破損で使用されるレジスタを少なくとも示すクラッシュログを受信し、前記メモリ分析モジュールは、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいて前記コード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損で使用されるレジスタにロードし且つ前記レジスタで使用されるデータのタイプ又は構造と同じデータ又はタイプを使用する少なくとも1つの保存命令を、前記保存命令のセットの中で識別し、前記少なくとも1つの保存命令を、前記保存命令候補として識別する
ことを特徴とする請求項1に記載の装置。 - 前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクをユーザーのために表示することを含む
ことを特徴とする請求項1に記載の装置。 - 前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクを、インストルメンテーションモジュールに渡すことを含み、前記インストルメンテーションモジュールは、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測する
ことを特徴とする請求項1に記載の装置。 - 前記ランタイムプログラム制御フロートレースは、前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、プロセッサトレースモジュールから取得される
ことを特徴とする請求項1に記載の装置。 - 前記プロセッサトレースモジュールはハードウェアに基づくものである
ことを特徴とする請求項6に記載の装置。 - 前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする請求項6に記載の装置。 - 前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ランタイムプログラム制御フロートレースにおけるノードであり、前記保存命令は、コンピュータにおいてメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする請求項1ないし8のうちの何れか一項に記載の装置。 - プロセッサ及びメモリを有するコンピューティングデバイスにおいて、ソフトウェアプログラムをデバッグする方法であって:
前記ソフトウェアプログラムからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得するステップ;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損を識別するステップ;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得するステップ;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こすステップ;
前記保存命令のセットのうちの保存命令で使用されるデータのタイプ又は構造と前記メモリ破損で使用されるデータのタイプ又は構造とを前記デバッグ情報に基づいて識別するステップ;
前記メモリ破損で使用されるデータのタイプ又は構造と同じタイプ又は構造を使用する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得するステップ;及び
前記保存命令候補及び前記リンクを返すステップ;
を有することを特徴とする方法。 - 前記デバッグ情報が前記ソフトウェアプログラムのコンパイル中に準備され、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックで使用されるデータのタイプ又は構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする請求項10に記載の方法。 - 前記メモリ破損で使用されるレジスタを少なくとも示すクラッシュログを受信し、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいてコード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損で使用されるレジスタにロードし且つ前記レジスタで使用されるデータのタイプ又は構造と同じタイプ又は構造を使用する少なくとも1つの保存命令を、前記保存命令のセットの中で識別し、前記少なくとも1つの保存命令を、前記保存命令候補として識別するステップ
を更に有することを特徴とする請求項10に記載の方法。 - 前記保存命令候補及び前記リンクを返すことが、前記保存命令候補及び前記リンクをユーザーのために表示することを含む
ことを特徴とする請求項10に記載の方法。 - 前記保存命令候補及び前記リンクを返すことが、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測することを含む
ことを特徴とする請求項10に記載の方法。 - 前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、プロセッサトレースモジュールから前記ランタイムプログラム制御フロートレースを取得するステップ
を更に有することを特徴とする請求項10に記載の方法。 - 前記プロセッサトレースモジュールはハードウェアに基づくものであり、前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含み、前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ランタイムプログラム制御フロートレースにおけるノードであり、前記保存命令が、コンピュータにおいてメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする請求項15に記載の方法。 - ソフトウェアプログラムのデバッグを含む処理を実行する装置であって:
前記ソフトウェアプログラムからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得する手段;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損を識別する手段;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得する手段;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こす手段;
前記保存命令のセットのうちの保存命令で使用されるデータのタイプ又は構造と前記メモリ破損で使用されるデータのタイプ又は構造とを前記デバッグ情報に基づいて識別する手段;
前記メモリ破損で使用されるデータのタイプ又は構造と同じタイプ又は構造を使用する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得する手段;及び
前記保存命令候補及び前記リンクを返す手段;
を有することを特徴とする装置。 - 前記ソフトウェアプログラムのコンパイルから前記デバッグ情報を取得する手段を更に有し、前記デバッグ情報は、前記ベーシックブロックのリストにおけるベーシックブロックの定義、前記ベーシックブロックで使用されるデータのタイプ又は構造、及び、前記ベーシックブロックの命令アドレスを前記ソフトウェアプログラムの一部分にマッピングするリンクを有する
ことを特徴とする請求項17に記載の装置。 - 保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こす手段が、コード分解モジュールを有し、前記メモリ破損で使用されるレジスタを少なくとも示すクラッシュログを受信する手段を有し、前記メモリ破損から、前記ランタイムプログラム制御フロートレースにおいてコード分解モジュールにより逆探知を行い又は逆探知を引き起こし、前記メモリ破損で使用されるレジスタにロードし且つ前記レジスタで使用されるデータのタイプ又は構造と同じデータ又は構造を使用する少なくとも1つの保存命令を、前記保存命令のセットの中で識別する手段と、前記少なくとも1つの保存命令を、前記保存命令候補として識別する手段とを更に有する
ことを特徴とする請求項17に記載の装置。 - 前記保存命令候補及び前記リンクを返す手段が、前記保存命令候補及び前記リンクをユーザーのために表示する手段を有する
ことを特徴とする請求項17に記載の装置。 - 前記保存命令候補及び前記リンクを返す手段が、将来のデバッグ情報における保存命令候補を識別するために前記ソフトウェアプログラムを計測する手段を有する
ことを特徴とする請求項17に記載の装置。 - 前記コンパイルされたソフトウェアプログラムの実行であって前記メモリ破損をもたらす実行の際に、ランタイムプログラム制御フロートレースを決定するプロセッサトレースモジュール手段
を更に有することを特徴とする請求項17に記載の装置。 - 前記プロセッサトレースモジュール手段はハードウェアに基づくものであり、前記コンパイルされたソフトウェアプログラムの実行は複数の中央処理ユニットによりなされ、前記ランタイムプログラム制御フロートレースは前記複数の中央処理ユニットからのデータを含む
ことを特徴とする請求項22に記載の装置。 - 前記ベーシックブロックのリストのうちの各ベーシックブロックは、前記ランタイムプログラム制御フロートレースにおけるノードであり、前記保存命令は、コンピュータにおいてメモリロケーションに対する値、ベクトル、マトリクス又は変数を記録する
ことを特徴とする請求項17ないし23のうちの何れか一項に記載の装置。 - 命令を有するコンピュータプログラムであって、前記命令は、ソフトウェアプログラムのデバッグをコンピューティングデバイスに実行させ、前記ソフトウェアプログラムをデバッグすることは:
前記ソフトウェアプログラムからコンパイルされるコンパイルされたソフトウェアプログラム及びデバッグ情報を取得し;
前記コンパイルされたソフトウェアプログラムにおけるメモリ破損を識別し;
前記コンパイルされたソフトウェアプログラムのベーシックブロックのリストを有するランタイムプログラム制御フロートレースを取得し;
保存命令のセットを識別するために、前記ベーシックブロックのリストを分解し又は分解を引き起こし;
前記保存命令のセットのうちの保存命令で使用されるデータのタイプ又は構造と前記メモリ破損で使用されるデータのタイプ又は構造とを前記デバッグ情報に基づいて識別し;
前記メモリ破損で使用されるデータのタイプ又は構造と同じタイプ又は構造を使用する保存命令候補を判別し、前記保存命令候補を前記ソフトウェアプログラムの一部分に結び付ける少なくとも1つのリンクを取得し;及び
前記保存命令候補及び前記リンクを返す;
ことを含むことを特徴とするコンピュータプログラム。 - 請求項25に記載のコンピュータプログラムを記憶する記憶媒体。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/977,071 | 2015-12-21 | ||
| US14/977,071 US10013335B2 (en) | 2015-12-21 | 2015-12-21 | Data flow analysis in processor trace logs using compiler-type information method and apparatus |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2017117442A JP2017117442A (ja) | 2017-06-29 |
| JP6363152B2 true JP6363152B2 (ja) | 2018-07-25 |
Family
ID=59064917
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016225010A Expired - Fee Related JP6363152B2 (ja) | 2015-12-21 | 2016-11-18 | データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US10013335B2 (ja) |
| JP (1) | JP6363152B2 (ja) |
| CN (2) | CN107025167B (ja) |
| WO (1) | WO2017112127A1 (ja) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10013335B2 (en) * | 2015-12-21 | 2018-07-03 | Intel Corporation | Data flow analysis in processor trace logs using compiler-type information method and apparatus |
| US10372902B2 (en) * | 2017-03-06 | 2019-08-06 | Intel Corporation | Control flow integrity |
| US10540261B2 (en) * | 2017-04-07 | 2020-01-21 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
| CN107678948B (zh) * | 2017-09-18 | 2021-09-07 | 茂佳科技(广东)有限公司 | 测试用例生成方法、终端及存储介质 |
| US10990506B2 (en) | 2019-04-11 | 2021-04-27 | Microsoft Technology Licensing, Llc | Cross-thread memory indexing in time-travel debugging traces |
| US11068378B2 (en) * | 2019-04-11 | 2021-07-20 | Microsoft Technology Licensing, Llc | Memory value exposure in time-travel debugging traces |
| CN112579169B (zh) * | 2019-09-27 | 2024-04-09 | 阿里巴巴集团控股有限公司 | 处理器追踪流的生成方法及装置 |
| CN113672499B (zh) * | 2021-07-20 | 2024-11-12 | 杭州中天微系统有限公司 | 追踪可执行程序中的目标变量的方法和系统 |
| US20220092179A1 (en) * | 2021-12-02 | 2022-03-24 | Intel Corporation | Detecting data oriented attacks using hardware-based data flow anomaly detection |
| CN115016967B (zh) * | 2022-06-01 | 2025-10-10 | 东莞市步步高教育软件有限公司 | 应用崩溃处理方法、终端、服务器、电子设备和存储介质 |
Family Cites Families (39)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6292035A (ja) | 1985-10-17 | 1987-04-27 | Omron Tateisi Electronics Co | プログラムデバツグ装置 |
| JPH02235150A (ja) | 1989-03-09 | 1990-09-18 | Nec Corp | 情報処理装置 |
| US5615357A (en) * | 1994-12-29 | 1997-03-25 | Sun Microsystems, Inc. | System and method for verifying processor performance |
| JPH08297597A (ja) | 1995-04-26 | 1996-11-12 | Mitsubishi Electric Corp | エミュレータ |
| US5907709A (en) * | 1996-02-08 | 1999-05-25 | Inprise Corporation | Development system with methods for detecting invalid use and management of resources and memory at runtime |
| US5848264A (en) * | 1996-10-25 | 1998-12-08 | S3 Incorporated | Debug and video queue for multi-processor chip |
| US6353924B1 (en) * | 1999-02-08 | 2002-03-05 | Incert Software Corporation | Method for back tracing program execution |
| US6769116B1 (en) | 1999-10-21 | 2004-07-27 | Oracle International Corporation | Diagnostic technique for debugging memory corruption |
| US6718485B1 (en) * | 1999-11-16 | 2004-04-06 | Parasoft Corporation | Software emulating hardware for analyzing memory references of a computer program |
| US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
| US6543028B1 (en) * | 2000-03-31 | 2003-04-01 | Intel Corporation | Silent data corruption prevention due to instruction corruption by soft errors |
| US7313734B2 (en) * | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
| US7231634B2 (en) * | 2002-09-17 | 2007-06-12 | Sun Microsystems, Inc. | Method for determining scope and cause of memory corruption |
| US8407798B1 (en) * | 2002-10-01 | 2013-03-26 | Skybox Secutiry Inc. | Method for simulation aided security event management |
| US7409602B2 (en) * | 2003-11-12 | 2008-08-05 | Lsi Corporation | Methodology for debugging RTL simulations of processor based system on chip |
| US7739374B1 (en) * | 2003-12-30 | 2010-06-15 | Sap Ag | System and method for configuring tracing and logging functions |
| JP2006215931A (ja) * | 2005-02-07 | 2006-08-17 | Yasuo Oka | インターネット個人メモリサーバ |
| US8266608B2 (en) * | 2005-02-18 | 2012-09-11 | Green Hills Software, Inc. | Post-compile instrumentation of object code for generating execution trace data |
| US7711914B2 (en) | 2005-06-28 | 2010-05-04 | Hewlett-Packard Development Company, L.P. | Debugging using virtual watchpoints |
| US7526758B2 (en) * | 2005-06-30 | 2009-04-28 | Microsoft Corporation | Execution failure investigation using static analysis |
| US7761657B2 (en) * | 2006-07-10 | 2010-07-20 | Hitachi, Ltd. | Storage control system, control method for storage control system, port selector, and controller |
| US8813055B2 (en) * | 2006-11-08 | 2014-08-19 | Oracle America, Inc. | Method and apparatus for associating user-specified data with events in a data space profiler |
| US8032875B2 (en) * | 2006-11-28 | 2011-10-04 | Oracle America, Inc. | Method and apparatus for computing user-specified cost metrics in a data space profiler |
| US8762951B1 (en) * | 2007-03-21 | 2014-06-24 | Oracle America, Inc. | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor |
| US8261242B2 (en) * | 2008-06-09 | 2012-09-04 | International Business Machines Corporation | Assisting debug memory tracing using an instruction array that tracks the addresses of instructions modifying user specified objects |
| CN101526921B (zh) * | 2008-12-31 | 2014-07-30 | 飞天诚信科技股份有限公司 | 写入数据的方法及装置 |
| US20110016455A1 (en) * | 2009-07-20 | 2011-01-20 | Glenn Perry | Power Profiling for Embedded System Design |
| US8490060B2 (en) | 2009-09-23 | 2013-07-16 | International Business Machines Corporation | Tracing memory updates and accesses for debugging computer programs |
| US8621337B1 (en) | 2010-09-30 | 2013-12-31 | Juniper Networks, Inc. | Detecting memory corruption |
| US8732681B2 (en) * | 2011-05-16 | 2014-05-20 | Texas Instruments Incorporated | Stack analysis for post mortem analysis |
| CN102857358A (zh) * | 2011-06-29 | 2013-01-02 | 环旭电子股份有限公司 | 可修复固件的客户端设备及其固件修复方法 |
| US20130055033A1 (en) * | 2011-08-22 | 2013-02-28 | International Business Machines Corporation | Hardware-assisted program trace collection with selectable call-signature capture |
| US8756582B2 (en) * | 2011-08-22 | 2014-06-17 | International Business Machines Corporation | Tracking a programs calling context using a hybrid code signature |
| CN103064752B (zh) * | 2011-09-27 | 2016-12-21 | 北京奇虎科技有限公司 | 一种文件修复方法及装置 |
| US9880842B2 (en) * | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
| US9672298B2 (en) | 2014-05-01 | 2017-06-06 | Oracle International Corporation | Precise excecution of versioned store instructions |
| US9619313B2 (en) * | 2015-06-19 | 2017-04-11 | Intel Corporation | Memory write protection for memory corruption detection architectures |
| US10013335B2 (en) * | 2015-12-21 | 2018-07-03 | Intel Corporation | Data flow analysis in processor trace logs using compiler-type information method and apparatus |
| US11461025B2 (en) * | 2020-11-05 | 2022-10-04 | Macronix International Co., Ltd. | Data retention in memory devices |
-
2015
- 2015-12-21 US US14/977,071 patent/US10013335B2/en not_active Expired - Fee Related
-
2016
- 2016-11-14 WO PCT/US2016/061856 patent/WO2017112127A1/en not_active Ceased
- 2016-11-18 JP JP2016225010A patent/JP6363152B2/ja not_active Expired - Fee Related
- 2016-11-21 CN CN201611022239.4A patent/CN107025167B/zh active Active
- 2016-11-21 CN CN202110939851.2A patent/CN113704097A/zh active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| CN113704097A (zh) | 2021-11-26 |
| JP2017117442A (ja) | 2017-06-29 |
| US10013335B2 (en) | 2018-07-03 |
| CN107025167A (zh) | 2017-08-08 |
| WO2017112127A1 (en) | 2017-06-29 |
| CN107025167B (zh) | 2021-09-03 |
| US20170177463A1 (en) | 2017-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6363152B2 (ja) | データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体 | |
| Moran et al. | Automatically discovering, reporting and reproducing android application crashes | |
| US10380350B1 (en) | Efficient and comprehensive source code fuzzing | |
| US20110078666A1 (en) | System and Method for Reproducing Device Program Execution | |
| Dean et al. | Perfcompass: Online performance anomaly fault localization and inference in infrastructure-as-a-service clouds | |
| US10296442B2 (en) | Distributed time-travel trace recording and replay | |
| US9355003B2 (en) | Capturing trace information using annotated trace output | |
| US20120246625A1 (en) | System and method of software execution path identification | |
| Tan et al. | Visual, log-based causal tracing for performance debugging of mapreduce systems | |
| US20120131559A1 (en) | Automatic Program Partition For Targeted Replay | |
| US10725889B2 (en) | Testing multi-threaded applications | |
| US9841960B2 (en) | Dynamic provision of debuggable program code | |
| US11074153B2 (en) | Collecting application state in a runtime environment for reversible debugging | |
| US20120036501A1 (en) | Method and System for Capturing System and User Events Using Hardware Trace Devices | |
| US20140215483A1 (en) | Resource-usage totalizing method, and resource-usage totalizing device | |
| CN112463574B (zh) | 软件测试方法、装置、系统、设备和存储介质 | |
| US11113182B2 (en) | Reversible debugging in a runtime environment | |
| US10956304B2 (en) | Dynamic diagnostic code instrumentation over a historic program execution | |
| US10552280B2 (en) | In-band monitor in system management mode context for improved cloud platform availability | |
| US20130332907A1 (en) | Exception handling for a distributed runtime | |
| US9442818B1 (en) | System and method for dynamic data collection | |
| Fedorova et al. | Performance comprehension at WiredTiger | |
| US10481993B1 (en) | Dynamic diagnostic data generation | |
| Kasikci et al. | Failure sketches: A better way to debug | |
| Getman et al. | Combined approach to solving problems in binary code analysis |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180117 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180206 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180501 |
|
| 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: 20180529 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180627 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6363152 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |