JP2016514322A - プログラム実行の記録 - Google Patents

プログラム実行の記録 Download PDF

Info

Publication number
JP2016514322A
JP2016514322A JP2016500237A JP2016500237A JP2016514322A JP 2016514322 A JP2016514322 A JP 2016514322A JP 2016500237 A JP2016500237 A JP 2016500237A JP 2016500237 A JP2016500237 A JP 2016500237A JP 2016514322 A JP2016514322 A JP 2016514322A
Authority
JP
Japan
Prior art keywords
execution
function
computer
entry
visualization
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
JP2016500237A
Other languages
English (en)
Other versions
JP6434957B2 (ja
Inventor
スチュアート ウッド,ジョセフ
スチュアート ウッド,ジョセフ
フロインドリッヒ,ロバート
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
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 アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2016514322A publication Critical patent/JP2016514322A/ja
Application granted granted Critical
Publication of JP6434957B2 publication Critical patent/JP6434957B2/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • 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
    • 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/366Software debugging using diagnostics
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

方法は特に、1つ以上のコンピュータプログラムが実行しているコンピュータシステムにおいて、状態情報の種類を定義する仕様書を受信すること、コンピュータプログラムのうち少なくとも1つと関連したイベントであってコンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信すること、イベントが発生したときのコンピュータプログラムの実行の状態を記述する状態情報を収集すること、イベントに対応する、仕様書に従ってフォーマットされた収集された状態情報の要素を含むエントリを生成すること、及びエントリを記憶することを備える。コンピュータプログラム実行の可視化を生成するためにログが解析され得る。

Description

本願は、2013年3月15日に提出された仮特許出願第61/798,246号及び2014年1月16日に提出された米国特許出願第14/156,905号の優先権を主張する。これらの全内容は参照により本明細書に組み込まれる。
本明細書はプログラム実行の記録に関する。
コンピュータプログラムは、そのコンピュータプログラムを構成する指示をマイクロプロセッサが遂行するときに実行していると言える。コンピュータプログラムは典型的には、プログラムの指示のサブセットを含む関数(プロシージャ又はメソッドと称されることもある)に分類される。このようにして、コンピュータプログラムの関数は、その関数の指示をコンピュータシステムが遂行しているときに実行していると言える。また、コンピュータプログラムの実行は、ログの形で記録されることもある。
第1の態様においては、方法は、1つ以上のコンピュータプログラムが実行しているコンピュータシステムにおいて、状態情報の種類を定義する仕様書を受信することと、コンピュータプログラムのうち少なくとも1つと関連したイベントであってコンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示(指示:indication)を受信することと、イベントが発生したときのコンピュータプログラムの実行の状態を記述する状態情報を収集することと、イベントに対応する、仕様書に従ってフォーマットされた収集された状態情報の要素を含むエントリを生成することと、エントリを記憶することと、を含む。
第1の態様に従った第2の態様においては、各エントリは、エントリを含むログファイルを生成するデバッガ機構のネイティブフォーマットに従ってフォーマットされたデータの第1部分であってタイムスタンプとデバッガメッセージとのうち少なくとも1つを備えたデータの第1部分を含み、各エントリは、状態情報の種類を定義する仕様書に従ってフォーマットされたデータの第2部分を含み、仕様書に従ってフォーマットされたデータは、ログファイルを生成するデバッガ機構のネイティブフォーマット以外のフォーマットであり、仕様書に従ってフォーマットされたデータは、仕様書により定義されたタグに基づいて各々タグ付けされた状態情報の要素を含む。
第1又は第2の態様に従った第3の態様においては、仕様書は、関数が実行されたオブジェクトのインスタンスの識別を定義する。
第1乃至第3の態様のいずれかに従った第4の態様においては、仕様書は、関数の識別を定義するとともに、関数が呼び出された時刻の識別を定義する。
第4の態様に従った第5の態様においては、仕様書は、関数に渡される引数を定義するとともに、関数と関連した変数を定義する。
第4の態様に従った第6の態様においては、仕様書は、関数に渡される変数の識別、関数の出力、又は関数を呼び出した別の関数のうち少なくとも1つを定義する。
第1乃至第6の態様のいずれかに従った第7の態様においては、仕様書は、コンピュータプログラムのうち少なくとも1つの実行の可視化を生成する設備と互換性のあるフォーマットを定義する。
第1乃至第7の態様のいずれかに従った第8の態様においては、仕様書はXML仕様書である。
第1乃至第8の態様のいずれかに従った第9の態様においては、エントリ内の状態情報の種類のうち少なくともいくつかはタグにより識別される。
第1乃至第9の態様のいずれかに従った第10の態様においては、ロギングのレベルはコンピュータプログラムのうち少なくとも1つの実行中に動的に調整され、異なるレベルのロギングが特定されるときには、異なる種類のイベントがログをとられる。
第1乃至第10の態様のいずれかに従った第11の態様においては、ロギングの詳細レベルはコンピュータプログラムのうち少なくとも1つの実行中に動的に調整され、同じ種類のイベントについて、異なる詳細レベルのロギングが特定されるときには、異なる量の情報がログをとられる。
第1乃至第11の態様のいずれかに従った第12の態様においては、記録されるべきイベントの閾値を示す第1のコマンドと、各ログエントリに記録されるべき詳細レベルを示す第2のコマンドとが受信され、示された詳細レベルで、記録されるべきイベントの閾値を満足するイベントについてエントリが生成される。
第1乃至第12の態様のいずれかに従った第13の態様においては、コンピュータプログラムの1つ以上のオブジェクト型を定義するクラスについて、記憶されるべきイベントの閾値が受信され、そのクラスに属する関数が実行しているときにその閾値を満足するイベントのエントリが生成される。
第1乃至第13の態様のいずれかに従った第14の態様においては、コンピュータプログラムの1つ以上のオブジェクト型を定義するクラスについて、各ログエントリに記録されるべき詳細レベルが受信され、そのクラスに属する関数が実行しているときにその詳細レベルでイベントのエントリが生成される。
第15の態様においては、方法は、第1のコンピュータシステムにおいて、第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログを受信することと、ある期間にわたるコンピュータプログラムのうち少なくとも1つの実行を表す情報を抽出するためにログを解析することと、解析されたログに基づいて、コンピュータプログラムのうち少なくとも1つの実行の可視化を生成することと、を備え、エントリは、各イベントが発生した時刻におけるコンピュータプログラムのうち少なくとも1つの実行の状態を記述する情報を含み、可視化は、コンピュータプログラムのうち少なくとも1つの一部の実行と関連した時間の経過を表す少なくとも1つの図形を含む。
第15の態様に従った第16の態様においては、エントリのうち少なくともいくつかが、コンピュータプログラムのうち少なくとも1つの関数に対する呼び出しの実行と関連している。
第15又は第16の態様に従った第17の態様においては、第2のコンピュータシステムでログが生成され、そのログが第2のコンピュータシステムから第1のコンピュータシステムに提供される。
第15乃至第17の態様のいずれかに従った第18の態様においては、可視化はユーザインタフェースにおいて表示される。
第15乃至第18の態様のいずれかに従った第19の態様においては、可視化はコンピュータプログラムのうち少なくとも1つの関数の図形的表示を含む。
第19の態様に従った第20の態様においては、関数の図形的表示は関数の実行の時間の図形的表示を含む。
第19又は第20の態様に従った第21の態様においては、図形的表示のうち少なくともいくつかは、ログのエントリに基づいて決定される相互作用的な機能を含む。
第19、第20、又は第21の態様に従った第22の態様においては、図形的表示は、互いに関連して実行される複数の関数を表す範囲を含む。
第22の態様に従った第23の態様においては、複数の関数の各々が、コンピュータプログラムのうち少なくとも1つの実行中に複数の関数のうち別の関数によって呼び出された。
第15乃至第23の態様のいずれかに従った第24の態様においては、可視化はコンピュータプログラムのうち少なくとも1つの状態情報の表形式の表示を含む。
第15乃至第24の態様のいずれかに従った第25の態様においては、ログはXML仕様書に従って定義されたフォーマットを含む。
第25の態様に従った第26の態様においては、XML仕様書はコンピュータプログラムの状態情報に対応するタグを定義する。
第15乃至第26の態様のいずれかに従った第27の態様においては、可視化は、複数のレイヤと、コンピュータプログラムの実行中に複数のレイヤで発生するイベント間の関係とを示す。
第27の態様に従った第28の態様においては、レイヤはユーザ相互作用を表すレイヤを含み、可視化はユーザ相互作用及び他のイベント間の関係を示す。
第15乃至第28の態様に従った第29の態様においては、可視化は、各々がコンピュータプログラムのうち少なくとも1つの一部に対応するレイヤを含み、可視化は、その少なくとも1つコンピュータプログラムが実行されるときに実行される関数の表示を含み、関数の各表示は、関数に対応するコンピュータプログラムの一部に対応するレイヤに配置される。
第15乃至第29の態様に従った第30の態様においては、可視化は、コンピュータプログラムの実行の少なくとも一部の再生を含み、再生は、どの関数が呼び出されたのか、呼び出された関数に渡された値、及びコンピュータプログラムの実行中にユーザにより提供された入力を示す。
これらの態様のうち1つ以上は、単独で又は組み合わせて、システム又は装置として、あるいはコンピュータシステムにより実行されたときにその態様の動作を行う機械読み取り可能な指示を含むコンピュータプログラム製品を記憶しているコンピュータ読み取り可能な記憶装置として、表されてもよい。一例として、コンピュータ読み取り可能な記憶装置は、コンピュータシステムにより実行されたときに第1乃至第30の態様のいずれかに従った動作を行う機械読み取り可能な指示を含むコンピュータプログラム製品を記憶することができる。別の一例として、1つ以上のプロセッサを備えたコンピュータシステムは、その1つ以上のプロセッサにより実行されたときに第1乃至第30の態様のうちいずれかに従った動作を行う機械読み取り可能な指示を含むコンピュータプログラム製品を記憶しているコンピュータ読み取り可能な記憶装置を備え得る。
本発明の他の特徴及び利点は、下記の説明及び特許請求の範囲から明らかになるであろう。
コンピュータシステム及び関係するコンポーネントを示す。 アノテーション付きのログファイルのブロック図を示す。 仕様書のブロック図を示す。 アノテーション付きのログファイルを示す。 XML仕様書を示す。 XML仕様書を示す。 XML仕様書を示す。 ログファイルの可視化を示す。 ログファイルの可視化を示す。 ログファイルの可視化を示す。 ログファイルの可視化を示す。 フローチャートを示す。 フローチャートを示す。 コンピュータシステム及び関係するコンポーネントのブロック図を示す。
プログラムの実行中に生成されるログ(エラーログ又はデバッグログと称されることもある)は、プログラマがプログラムに挿入したデバッギングメッセージを表示するエントリを含み得る。このログは、そのログのエントリが記録されたときにプログラムのどの関数(サブルーチン、メソッド、又はセグメントと称されることもある)が実行していたかについての情報を表示するアノテーションも含み得る。アノテーション付きのログは、そのアノテーションに含まれた情報に基づいてプログラムの実行を再現するために用いることができる。例えば、プログラムの実行を可視化することを希望するユーザには、実行の図形的表示が提示され得る。アノテーション付きのログは、例えば、プログラムの実行を表形式で見るなど、他の目的で用いられてもよい。このようにすれば、コンピュータプログラムの実行と並行的に(例えば同時に)動作するデバッガが用いられる必要がない。したがって、本明細書に記載の技術には、プログラムの実行を分析及びデバッグすることのできる手法の数を増加させるという利点がある。
図1Aはコンピュータシステム100及び関係するコンポーネントを示す。コンピュータシステム100は、別のコンピュータシステム104上で実行したコンピュータプログラム102の実行を可視化するために用いられ得る。実装形態によっては、コンピュータシステム104は、コンピュータプログラム102の実行を表す情報を含むアノテーション付きのログファイル106を生成する。例えば、アノテーション付きのログファイル106は、アノテーション付きのログファイル106のエントリが記録されたときに実行していたコンピュータプログラム102の関数を識別する情報を含み得る。(エントリのログを記憶するログファイルを記載するが、ログは、データベース又は従来の意味におけるファイル以外のデータ記憶技術の形式をとり得る。)
いくつかの例においては、アノテーション付きのログファイル106は、コンピュータプログラム102の実行中に生成される。例えば、別のコンピュータシステム104は、コンピュータプログラム102の実行を行う実行及びロギングモジュール116を含んでいてもよい。実行及びロギングモジュール116は、コンピュータシステム104の1つ以上のマイクロプロセッサに、コンピュータプログラム102を構成する指示を実行させてもよい。指示のうちいくつかは、コンピュータプログラム102が実行される際にコンピュータシステム104にログファイル106を生成させるロギング指示114を含んでいてもよい。
アノテーション付きのログファイル106は、コンピュータシステム100に提供され得る(例えば、ネットワークを介して送信されるか、又はデータ記憶装置上に提供される)。それに応答して、コンピュータシステム100は、コンピュータプログラム102の実行の可視化108を生成することができる。例えば、可視化108は、コンピュータシステム100上で実行するユーザインタフェース上に提示されてもよい。ユーザインタフェースは、アノテーション付きのログファイル106を取り込みそのアノテーション付きのログファイルの内容に基づいて可視化108を生成する可視化モジュール118によって生成されてもよい。このようにすれば、可視化108は、コンピュータプログラム102が実行している時間とは関係なく提示され得る。例えば、コンピュータプログラム102が特定の日に実行し、その後、何週間、何か月、又は何年か後であり得る別の日に、アノテーション付きのログファイル106がコンピュータシステム100に提供されることが可能である。コンピュータシステム100は、アノテーション付きのログファイルがコンピュータプログラム102の実行を再現して可視化108における再現の提示を生成するために用いられ得る状態情報を含んでいる場合には、このアノテーション付きのログファイル106を用いて可視化108を生成することができる。例えば、図3A乃至3Cに示す状態情報のうちいくつかは、コンピュータプログラム102の実行を再現するために用いることができる。
可視化とは、データのネイティブフォーマット以外の形式でのデータの表示である。例えば、アノテーション付きのログファイル106がテキストの形式をとる場合には、可視化は、例えば、表又は図形といった、テキスト以外の要素を含み得る。テキスト以外の要素は、アノテーション付きのログファイル106のデータに基づいて生成され得る。いくつかの例においては、可視化において表示される図形は、アノテーション付きのログファイル106中のデータのうちいくつかのセマンティックな意味に基づくセマンティックな意味を有し得る。例えば、アノテーション付きのログファイル106が、関数が特定の時刻に実行を開始したことを示す場合には、可視化は関数の実行を表す図形的要素を含み得る。可視化は相互作用的な要素を有していてもよい。例えば、可視化は、ユーザインタフェース上に表示されてもよく、ユーザインタフェースのユーザが相互作用することのできる図形的要素を含んでいてもよい。いくつかの例においては、ユーザが(例えば入力装置を用いて)図形的要素と相互作用するとき、図形的要素が変化し、あるいは他の図形的要素が表示され、あるいは図形的要素の他の挙動が発生してもよい。図形的要素はテキストに基づいて生成されてもよく、ユーザインタフェースにおいて図形的要素がどのような挙動をするかはテキストに基づいていてもよい。
いくつかの例においては、可視化108とは、シーケンシャルな表示以外のデータの表示である。例えば、アノテーション付きのログファイル106は、データのシーケンシャルなエントリ、例えば作成順で記録されたエントリを含んでいてもよい。アノテーション付きのログファイル106のエントリは、エントリのテキストを読むことによって、(例えばプログラムを実行した人物、又はプログラムの実行を検討することを希望する別の人物により)直接見られ又は検査され得る。可視化108は、シーケンシャルなエントリの表示以外の形式をとり得る。例えば、可視化108は、シーケンシャルなエントリに基づく時間の経過を表す視覚的要素を含んでいてもよいが、シーケンシャルなエントリに対応する視覚的要素を何ら含まなくてもよい。
実装形態によっては、コンピュータプログラム102を実行するコンピュータシステム104は、コンピュータプログラム102の実行中に、他のコンピュータシステム110と相互作用する。コンピュータプログラム102は、他のコンピュータシステム110上の利用可能な資源を参照する指示を含んでいてもよい。例えば、コンピュータプログラム102はネットワーク上で利用可能なサーバと相互作用するクライアントプログラムであってもよく、例えばサーバ上のデータにアクセスするか、又はサーバ(例えば、コンピュータシステム110の1つ)上で関数を実行させる。別の一例として、コンピュータプログラム102は分散型のコンピュータプログラムであってもよい。分散型のコンピュータプログラムは、その指示のうちいくつか(例えば関数又は関数の一部)が1つのコンピュータシステム上で実行し、他の指示が他のコンピュータシステム上で実行するように構成される。
実装形態によっては、コンピュータプログラム102はオブジェクト指向言語で実装される。オブジェクトとは、関数及びデータ(例えば変数及び定数)の集合である。このようにすると、コンピュータプログラム102は、実行されたとき、インスタンス化された(例えばオブジェクトの関数及びデータを特定するクラスから生成された)1つ以上のオブジェクトの形をとり得る。
実装形態によっては、アノテーション付きのログファイル106は、コンピュータプログラム102の状態情報112を含み得る。状態情報112は、実行時のコンピュータプログラム102についての情報を含み得る。例えば、状態情報112は、特定の時点でコンピュータプログラム102のどの関数が実行しているのかについての情報を含んでいてもよい。状態情報112は、関数に渡される引数(パラメータと称されることもある)、関数に定義されている変数の値、及び関数の出力も含むことができる。また、状態情報112は、例えばインスタンス化されたオブジェクト、オブジェクトに定義されている変数、及び他の情報といった、関数のオブジェクトについての情報も含むことができる。状態情報112は、状態情報112に基づいてコンピュータプログラム102の実行の可視化を生成することのできる設備(例えばコンピュータシステム100)用にフォーマットされ得る。
アノテーション付きのログファイル106のフォーマットは、仕様書120に基づいて決定され得る。仕様書120は、アノテーション付きのログファイルを生成し処理するコンピュータシステム(例えば図示するコンピュータシステム100,104)の間で共有され得る。アノテーション付きのログファイルは、仕様書120により定義される共通のフォーマットを有することができるので、仕様書120へのアクセスを有するコンピュータシステムはアノテーション付きのログファイル106を生成及び処理することができる。
仕様書120のコピーを一方のコンピュータシステム100上の可視化モジュール118に利用可能にすることができ、仕様書120のコピーを他方のコンピュータシステム104上の実行及びロギングモジュール116に利用可能にすることができる。これらのモジュールは、仕様書120に定義されたフォーマットに基づいてアノテーション付きのログファイル106を生成及び処理することができる。
図1Bは、アノテーション付きのログファイル106の一例を示す。図示する例においては、アノテーション付きのログファイル106は、それぞれフィールド124a,124bから成るエントリ122a,122bを含む。フィールド124a,124bはアノテーション付きのログファイル106に対応するコンピュータプログラム(例えば図1Aに示すコンピュータプログラム102)の実行を表す情報を含む。フィールド124a,124bは、例えばエントリ122a,122bのタイムスタンプ126a,126bにより示される特定の時刻におけるコンピュータプログラムの状態を記述する状態情報122を含み得る。フィールドのうちいくつかは他のフィールド内に含まれ(ネストされ)得る。
図1Cは、仕様書120の一例を示す。仕様書は、タグ132a乃至dを含むことができ、その各々がアノテーション付きのログファイル106(図1A)に記録され得る情報を定義する。例えば、タグ132a乃至dのうち1つ以上は、アノテーション付きのログファイル106のエントリ122a,122b(図1B)に記録される情報を定義してもよい。エントリ122a,122bのフィールド124a,124bの各々は 特定のタグ132a乃至dに対応していてもよい。このようにすれば、エントリ122a,122bの目的が仕様書120に従って定義される。実装形態によっては、仕様書120は、タグ132a乃至dを説明するコメント134a乃至dも含み、これらは人が読める情報を含む。
図2は、アノテーション付きのログファイル200の一部を示す。アノテーション付きのログファイル200は、図1Aに示すアノテーション付きのログファイル106の一例であり得る。このアノテーション付きのログファイル200は、アノテーション付きのログファイル200に対応するコンピュータプログラム(例えば図1Aに示すコンピュータプログラム102)の実行を表す情報を含むフィールド202を含む。このようにして、アノテーション付きのログファイル200は(例えばフィールド202に)、システム100がコンピュータプログラムの実行を再現しその実行の可視化を生成することを可能にする状態情報を含んでいてもよい。アノテーション付きのログファイル200は、エントリ、例えばコンピュータプログラムが実行される際に記録されるエントリ204,206を含む。いくつかの例においては、エントリ204,206は、対応するコンピュータプログラムの実行中に発生するイベントに応答して記録される。イベントは、コンピュータプログラムの任意のアクティビティであり得る。例えば、イベントは特定の指示の実行であってもよい。いくつかの例においては、指示、例えばデバッグメッセージをログファイルに書き込む指示が、エントリがアノテーション付きのログファイル200に書き込まれることを明確に要求する。デバッグメッセージとは、プログラムをデバッグするためにプログラマにより用いられ得る情報を示すメッセージである。いくつかの例においては、指示は、エントリがアノテーション付きのログファイル200に書き込まれることを明確に要求しない。例えば、コンピュータプログラムは、関数が呼び出されるたび、又は関数が戻る(例えば、実行を終えて呼び出し関数に出力データを提供する)たびに、エントリをアノテーション付きのログファイル200に書き込むよう構成されていてもよい。関数は各エントリ204,206のフィールド202において識別され得る。
図示する例は、以下に示す擬似コードコンピュータプログラムを表し得る。:
Figure 2016514322

Figure 2016514322
この例において、各エントリ204,206は、タグを含むフィールド202と、タグなし部分208とを含む。タグなし部分208は、タグを含んでおらず、ログファイルをプレーンテキストとして見ている人物が読めるように、例えばプレーンテキストとして見ることを意図したメッセージを作成するデバッガ機構のネイティブフォーマットに従って、フォーマットされている。例えば、ログメッセージは、特定のイベントの発生時にログファイルに書き込まれるテキスト(例えば、プログラマによって書かれ、例えばログメッセージの書き込みを要求する関数に対する引数としてログファイルにより表されるプログラムのコードに含まれるテキスト)を含んでいてもよい。例えば、ログメッセージは、上記の擬似コードに示されるように、“writeLog”関数により表示され得る。いくつかの例においては、ログメッセージはプログラマによって書かれたテキストに基づいていない。例えば、ログメッセージは、例えば関数の実行開始時にプログラムにより生成された、自動生成されたメッセージであり得る。
ログメッセージは、フィールド202のうちの1つにおいて、エントリ内のタグ“<lm>”によって表示されて登場することもできる。各エントリ204,206の他のタグ付けされた部分は他のタグにより表示される。
各エントリ204,206は、各エントリ204,206が記録されたときに実行していた関数についての情報も含む。関数名(“<lm>”)は、特定の関数、例えばコンピュータプログラムのオリジナルプログラムコードにおいて用いられていた関数名を識別する。例えば、上記の擬似コードにおいては関数名“function1”及び“function2”が示されている。各タグの目的は図3A乃至3Cに関して後述する。各エントリ204,206は、タグ付けされたフィールド202とタグなし部分208との両方を含むので、アノテーション付きのログファイル200は、人が読めるようにプレーンテキストとして見ることができ、可視化機構への機械読み取り可能な入力としても用いることができる。以下に詳述する。
実装形態によっては、状態情報は、アノテーション付きのログファイルに、スキーマにより定義されたフォーマットで記録され得る。スキーマは、エントリに記録され得る異なる状態情報の種類を定義する。スキーマはこの情報を、例えばコンピュータシステムがスキーマを調べることによって状態情報の一部の種類を識別できるように、機械読み取り可能なように定義する。例えば、あるエントリが記録されるとき、そのエントリは異なる情報から構成され、各情報はスキーマにより定義される状態情報の種類のうち1つに対応する。エントリは、スキーマに定義された状態情報の種類のすべてを含む必要はないが、エントリにおいて状態情報として表された情報の各々は、スキーマにより定義された情報の種類に確かに対応する。
図3A乃至3Cは、アノテーション付きのログファイルのフィールドのXML仕様書300(スキーマと称されることもある)を示す。ここでは特定のXML仕様書300が例として用いられるが、これは一例に過ぎず、本明細書に記載の技術を実装するためには任意の他のXML仕様書又は他の種類の仕様書が用いられ得る。本例においては、フィールドは図2に示すアノテーション付きのログファイル200のフィールド202であり得る。XML仕様書は、フィールドを特定するタグ302と、各タグ302の目的を表示するコメント304とを含む。一般に、各タグは、状態情報の各要素がタグ付けされ得るように、状態情報の特定の種類に対応する。以下にタグ302のうちいくつかを図5A及び5Bに関して詳述する。例えば、タグ302のうちいくつかは、オブジェクトのインスタンスに特有の情報(例えばオブジェクトインスタンスの変数及びそれらの値)、関数に渡された引数、及び後述する他のフィールドを含むフィールドを表してもよい。ログファイルが生成されると、タグ302のうちいくつかに含まれた情報が、システム100がコンピュータプログラムの実行を再現し(例えば図4A及び4Bにおいて以下に示すように)コンピュータプログラムの実行の可視化を生成することを可能にする。
XML仕様書は、異なるプログラミング言語で記述された様々なコンピュータプログラムによりアクセス可能である。XML仕様書を用いてアノテーション付きのログファイル200のフィールド202のフォーマットが定義されるため、アノテーション付きのログファイルと関連したコンピュータプログラムを記述するのに用いられるプログラミング言語とは無関係に、同じログファイルフォーマットが用いられ得る。例えば、第1のプログラミング言語(例えばJava)で記述されたコンピュータプログラムと関連したアノテーション付きのログファイルは、XML仕様書300により定義されたフォーマットを用いることができ、別のプログラミング言語(例えばFlex)で記述された別のコンピュータプログラムと関連した別のアノテーション付きのログファイルは、XML仕様書300により定義された同一のフォーマットを用いることができる。いくつかの例においてはXML以外の言語を用いることが可能であり、例えば異なるマークアップ言語が用いられ得る。一般に、任意の手法を用いてデータ集合体の異なるフィールドを区切り識別することができる。
図3A乃至3Cには数種類のタグが示されている。いくつかを図5A及び5Bに関してより詳細に説明する。タグ<ui>は、特定のログエントリの一意識別子を特定する。タグ<type>は、ログエントリにより表されるイベントの種類(発生と称されることもある)を識別する。タグ<sm>はエントリと関連した層を特定する。タグ<lm>は、ログエントリを記述するテキストの一部、例えばログエントリを記録させたイベントを示す。タグ<co>は、エントリが記録されたときに実行していた関数を呼び出したオブジェクトを示す。タグ<ci>は、呼び出し元オブジェクトの(例えばオブジェクト名以外の)一意識別子である。タグ<st>及び<et>はログエントリと関連したイベント(例えば関数の実行)の開始時刻及び終了時刻を示す。タグ<md>は、最長継続時間、例えば関数が実行可能な時間の最大量を示す。タグ<li>及び<dl>は、ログレベル及びログの詳細レベルを示し得る。
仕様書は、<in>タグの下に詳細な情報を含むことができる。例えばその情報は、関連したイベントの記述(<ds>)、実行している関数の名前(<fn>)、ならびに関数に渡されるパラメータ及びそのパラメータの値を示すタグ(<pn>,<pv>)を含み得る。パラメータはオブジェクト又は関数のインスタンス(<is>と標示)に特有であり得る。他のタグは、イベントがいつ開始し(<bi>)いつ終了した(<ei>)のかに関するパラメータ及び値を表示してもよい。図4A及び4Bは、多数の関数を含むコンピュータプログラムの実行の可視化400を示す。この可視化は、経時的な実行の進行を明示するものであるため、タイムライン可視化と呼ばれることもある。ここに示す可視化400は単一のコンピュータプログラムを表すものであるが、可視化は例えば1つよりも多くのログファイルに基づいて、複数のコンピュータプログラムの実行を表すためにも用いられ得る。例えば、可視化400は図1Aに示す可視化108の一例であり得る。可視化400はコンピュータシステム(例えば図1Aに示すコンピュータシステム100)のユーザインタフェース上に表示され得る。この可視化は、コンピュータプログラムの第1及び第2の関数の経時的な実行を表す。第1及び第2の関数の実行は、各バーの長さが実行時間に比例するように、バーの形で表されている。
バーは、レイヤ406,408のような、層と称されることもある1つ以上のレイヤに配置され得る。例えば、レイヤ406,408は、可視化によって表されるコンピュータプログラムの部分又はレイヤに対応し得る。実装形態によっては、異なるレイヤ406,408は、異なるコンピュータシステム(例えば図1Aに示すコンピュータシステム104,110)上で実行する異なるコンポーネントを表す。いくつかの例においては、レイヤ406,408は、コンピュータプログラムにより行われる作業の論理的な区分を表す。例えば、コンピュータプログラムは、ユーザインタフェースレイヤ、クライアント‐サーバ相互作用レイヤ、及びコンピュータプログラムが分割される他のレイヤなどのレイヤを有することができる。いくつかの例においては、レイヤは可視化又はデバッガなどの関連する関数のためにプログラマによって定義され、プログラムの実行という文脈においては他の意味を持つ必要はない。コンピュータプログラムの各レイヤは、可視化400において、ユーザインタフェースレイヤ及びクライアント‐サーバ相互作用レイヤなどの対応するレイヤを有することができる。このようにすれば、可視化400はどの関数がどのレイヤと関連しているのかを表示することができる。例えば、ある関数は、コンピュータプログラムのユーザインタフェースと関連していてもよく、ユーザインタフェース要素に関する指示を含み、その関数の実行を表すバー402がユーザインタフェースレイヤ406に示され得る。別の関数は、コンピュータプログラムのクライアント‐サーバ相互作用と関連していてもよく、ネットワーク通信に関する指示を含み、その関数の実行を表すバー404がクライアント‐サーバ相互作用レイヤ408に示され得る。実装形態によっては、可視化400を生成するために用いられるログファイルが各関数と関連した1つのレイヤを表示し得る。
可視化400は、プログラム開発者が、コンピュータプログラムがなぜエラーを発生するのか、あるいはなぜ遅いのか又は無反応なのかといった、コンピュータプログラムの実行のよりよい理解を得るのに役立ち得る。例えば、可視化400が、コンピュータシステムが遅いか又は無反応であるかどうかを判断するために用いられている場合には、可視化400は、ユーザインタフェースにおいてボタンがクリックされた後、結果が返ってくるのに20秒かかることを示してもよく、その20秒の間にいくつかのプロセスが異なるレイヤで実行される。これにより、可視化400を見ているユーザは、例えばユーザ側ではなくクライアント側でといった具合に、どこで問題が発生し得たのかを識別することができる。これに対し、ログファイルを見ているユーザには、この情報は見えないであろう。例えば、ボタンがクリックされてから結果が戻るまでの20秒の間に、ログファイルには何千ものエントリ(その各々は多くの行のテキストであり得る)があり得る。そのような何千行ものテキストのマニュアル検査によって何が問題であるのかを判断することは困難であるかもしれない。
並行的に実行した関数を表すバー411,413は、ここでは垂線405として表されている同一の時点に重複するものとして表示されている。同一のレイヤと関連した、並行的に実行するいくつかの関数又はコンポーネントがあってもよい。これは、単一のレイヤ内に互いに平行に延びるバー又はセグメントにより表される。
図4Aに示されるように、可視化400を見ているユーザは、バーのうち1つ、例えばバー402の上に(例えばマウス、トラックパッド、又はタッチスクリーンなどの入力装置の)カーソルを合わせ得る。すると、可視化400には、バー402により表される関数の識別410が表示される。識別410は、バー402により表される関数を呼び出した別の関数、バー402により表される関数に提供される引数、バー402により表される関数の出力値、及びバー402により表される関数についての他の情報などの(例えば図1Aに示す状態情報112から得られた)状態情報を含み得る。
図4Bに示すように、可視化400は範囲インジケータ412,414を含み、その各々が可視化400に示される関数の間に複数の関数の範囲が存在することを表示する。一般に、範囲とは実行した関数の集合である。いくつかの例においては、ある範囲の関数は、各々マーカにより識別される。例えば、関数を定義しているプログラムコードは、その範囲の各関数と関連したラベル又は他の識別子、あるいはその範囲の関数を含むオブジェクトクラスを含み得る。実装形態によっては、コンピュータプログラム内の範囲は、プログラマによって決定されるように、範囲の始まりの“beginSpan()”関数呼び出しと範囲の終わりの“endSpan()”関数呼び出しとを表示することによって、コンピュータプログラムのプログラムコード内にマークされる。
いくつかの例においては、範囲とは、その範囲内のすべての関数が完了するまで他の関数に実行させる一連の関数である。実装形態によっては、ある範囲のいくつかの関数は、その範囲の他の関数を直接呼び出す。例えば、いくつかの関数は、他の関数のうちいくつかを呼び出す指示を含み、例えば引数を他の関数に渡してもよい。これは、同期範囲又は関数範囲と称されることもある。実装形態によっては、範囲のいくつかの関数は互いを直接呼び出さない。例えば、コンピュータプログラムの第1のスレッドの一部として実行している関数のうち1つは、第2のスレッドに対してリモートプロシージャコールを行い、第2のスレッドが呼び出された動作を行っている間、実行を継続してもよい。そして、リモートプロシージャコールが返されると、それに応じて別の関数が第1のスレッド又は第2のスレッドから呼び出され得る。様々なスレッドの関数はすべて、同一の範囲の一部であり得る。これは非同期範囲と称されることもある。ある範囲は、別の範囲を含むことができ、あるいは別の範囲と重複することができる。例えば、第2の範囲に属するものとしてマークされた関数が第1の範囲に属するものとしてマークされた関数により呼び出される場合には、第2の範囲の始まりは第1の範囲が終わる前に発生し得る。いくつかの例においては、非同期範囲は1つ以上の関数範囲を含んでいてもよい。例えば、非同期アクティビティ“A”は範囲“S1”と関連付けられ得る。この非同期アクティビティ“A”は、時刻T1で開始し、時刻T1+1000で終了する。時刻T1+200で、範囲“S2”と関連したアクティビティ“B”(これは同期であり得る)が開始する。これは時刻T1+1300まで継続する。このようにして、同期範囲“S2”は非同期範囲“S1”と重複する。
ユーザは、範囲インジケータのうち1つ、例えば412を起動(例えば入力装置を用いてクリック、選択、強調又はその他表示)して、範囲418を表示させることができる。範囲418は、複数の関数を含むとともに、関数の間でのデータの流れを表す線420も含む。例えば、第1の関数は、データを処理して、そのデータのうちいくつかを関数に対する引数として第2の関数に渡すことができ、その後第2の関数がデータをさらに処理できる、といった具合である。範囲418の表示は、相互作用する複数の関数の実行を調べるために用いられ得る。範囲418が表示されるときには、可視化400には、その範囲についての情報422も表示され得る。例えば、情報422は、その範囲において最後に実行する関数の出力など、範囲418に関する状態情報を含み得る。
実装形態によっては、可視化400はアニメーションとして表示され得る。例えば、可視化400は、対応するコンピュータプログラムが実行された時間を表す期間にわたって関数402,404を表示することによりアニメ化され得る。関数402,404は、可視化400においては、対応するコンピュータプログラムが当初実行されたときに実行された順序で現れ得る。また、関数402,404を表すバーは、関数が実行を完了するのに要した時間の量を表すために、大きくなり得る。この種のアニメーションは、コンピュータプログラムの実行の再生と称されることもある。
可視化400の利点は、数百又は数千行を有する大きなログファイルに含まれる情報を単一のグラフで表すことが可能であり、プログラム開発者がコンピュータプログラムの実行のエラー又はボトルネックを迅速に識別できるということである。この技術は、様々な機能をシステムのどの部分が実行しているのかの迅速な可視化も提供する。図5Aは、コンピュータプログラムの実行の表形式の可視化500を示す。表形式の可視化は、図4A乃至4Cに示すタイムライン可視化とは別の種類の可視化である。例えば、表形式の可視化500は図1Aに示す可視化108の一例であり得る。表形式の可視化500はコンピュータシステム(例えば図1Aに示すコンピュータシステム100)のユーザインタフェース上に表示され得る。表形式の可視化500は、エントリ、例えば図2に示すログファイル200のエントリに対応するエントリ502,504を含む。適用可能な各エントリについて、表形式の可視化500は、エントリのフィールド、例えば図2に示すフィールド202を表す列を含む。メッセージ(message)510は、コンピュータプログラムの指示により表示されたメッセージ、例えば、プログラムを記述したプログラマによって記述されたデバッギングメッセージを表す。継続期間(duration)512は、エントリと関連した指示が実行に要した時間の量を表す。次回呼び出しまでの時間(time to next call)514は、ある関数において、その関数の実行開始時刻と別の関数が呼び出された時刻との間に経過した時間の量を示す(例えば、他の関数を呼び出しその関数に引数を渡す関数の指示において)。言い換えれば、次回呼び出しまでの時間は、このエントリと次のエントリとの間でどのくらいの時間が経過したかを示す。終了後の時間(time after exit)516は、ある関数の終了と次の関数の開始との間でどのくらいの時間が経過したかを示す。言い換えれば、終了後の時間は、あるエントリの終了と次のエントリの開始との間のトラックされていない時間の量を示す。例えばこれは、ロギングを追加される必要のある機能がどこにあるのかを解明するために用いられ得る。例えば、終了後の時間516は、ログファイルに記録された状態情報に隙間があるかどうかを判断するために用いられ得る。タイムスタンプ(timestamp)518は、エントリ502,504がログファイルに記録された時刻を示す。例えば、エントリ502,504を記録させたイベントがある関数に対する呼び出しである場合には、そのタイムスタンプはその関数が呼び出された時刻に対応し得る。
表形式の可視化500は、選択されたエントリ502についての情報を含む補助ウィンドウ枠520を備える。補助ウィンドウ枠520は、列フォーマットでは示されていない追加的な情報を表示する。メッセージ(message)522は、上に示された選択されたエントリ502のメッセージ510の完全版であり、そのデータが列フォーマットに収まらない場合(例えばメッセージが長すぎる場合)にメッセージを表すデータを見るために用いられ得る。説明(description)524は、エントリ502を生成させたイベント(例えばコンピュータプログラムの実行中に発生するイベント)の説明である。開始時刻(start time)526はエントリと関連した指示が実行を開始した開始時刻を示し、終了時刻(end time)528はエントリと関連した指示が実行を終了した時刻を示す。
ログレベル(log level)530は、エントリ502が記録される閾値を示す。多くの種類のデバッガシステムにおいて用いられるログレベルのいくつかの例は、“DEBUG”、“INFO”、“WARN”、“ERROR”、及び“FATAL”である。例えば、“FATAL”のログレベルが選択されると、致命的なエラーを表すイベントによりトリガされたエントリのみがログをとられることになる。任意の種類のログレベルがここに説明する技術とともに用いられ得るものであり、ログレベルの種類はこれらの例に限定されない。実装形態によっては、図1Aに示すアノテーション付きのログファイル106を生成するコンピュータシステム104が、コンピュータシステム104のユーザがアノテーション付きのログファイル106のログレベル530を特定できるようにしてもよい。
いくつかの例においては、いくつかの種類のエントリが、1つのログレベル530のログファイルには含まれるが、一方で、その同じ種類のエントリが、別のログレベル530のログファイルには含まれないかもしれない。例えば、コンピュータプログラムの実行中に発生するある種のイベントはエントリを1つのログレベル530(例えば“debug”)では記録させ得るが、その同じイベントはエントリを別のログレベル530(例えば“default”)では記録させないかもしれない。
詳細レベル(detail level)532は、エントリ502が記録された詳細レベルを示す。例えば、図1Aに示すアノテーション付きのログファイル106を生成するコンピュータシステム104は、コンピュータシステム104のユーザがアノテーション付きのログファイル106の詳細レベルを特定できるようにしてもよい。いくつかの例においては、詳細レベルは、ログファイルに含まれているフィールドの数に対応する。例えば、ある詳細レベル532の下で動作するログファイルのエントリは、XML仕様書300(図3A乃至3C)により規定された可能なフィールドのサブセットを含み得るが、別の詳細レベル532の下で動作するログファイルのエントリは、XML仕様書300により規定された可能なフィールドの異なるサブセットを含み得る。ある詳細レベル532(例えば“detailed”)ではより多数のフィールドが含まれ得るが、別の詳細レベル532(例えば“trivial”)ではより少数のフィールドが含まれ得る。
実装形態によっては、プログラムの各クラスが独自のログレベル及び詳細レベルを有することができる。クラスとは、オブジェクト指向プログラムのオブジェクト型の定義である。いくつかの例においては、設定ファイルがプログラムのいくつか又はすべてのクラスのログレベル及び詳細レベルを表示することができる。例えば、設定ファイルはプログラムと関連付けられ得る。このようにすれば、特定のクラスのログレベル又は詳細レベルが、プログラムのプログラムコードを修正することなく変更され得る。
いくつかの例においては、エントリ502を記録させた関数を含むオブジェクトの型は既知である。これは呼び出し元種類(caller type)534により表示され得る。
種類(type)536は、エントリ502を記録させたイベントの種類を示す。例えば、いくつかの種類は、“creation”(例えばオブジェクトの作成)、“stack”(例えば関数入(enter)/出(exit)メッセージなどの関数スタックのエントリ)、及び“default”(他のイベント)を含み得る。
関数スタックとは、どのネストされた関数呼び出しが行われ記録されたかの階層的な記録である。例えば、コンピュータプログラムは以下の3つの関数であり得る。:
Figure 2016514322
この例においては、関数aが関数bを呼び出し、関数bが関数cを呼び出す。関数cのlogWithFunctionStack関数呼び出しにより作成されるログエントリは、関数a−>関数b−>関数cの関数スタックを示すであろう。実装形態によっては、関数スタックは、関数範囲と呼ばれる範囲の種類の形で表され得る。
層(stratum)538は、エントリ502を記録させた関数と関連したレイヤを示す。例えば、そのレイヤは、図4Aに示すレイヤ(例えば406,408)のうち1つであり得る。いくつかのレイヤ種類は、“User Interaction”(例えばユーザインタフェース項目)、“Client−side”(例えば、図1Aに示すコンピュータシステム104のようなクライアントにおいて実行する指示)、“Client−server”(例えば、クライアントとサーバとの間での相互作用を処理する指示)、及び“Server−side”(例えば、例えば図1Aに示すコンピュータシステム110のうちの1つのようなサーバにおいて実行する指示)を含み得る。
呼び出し元識別(caller identification)540は、エントリ502が記録されたときに実行していた関数を呼び出した特定のオブジェクトを識別するストリングである。例えば、いずれかのオブジェクトがコンピュータプログラムの実行の一部としてインスタンス化されるとき、そのオブジェクトには一意識別子が割り当てられてもよい。
範囲(span)542は、このエントリ502が属する範囲、例えばエントリ502が記録されたときに実行していた関数を含む範囲を示す。例えば、範囲は、図4Bに示す範囲418であり得る。
関数範囲(function span)544は、このエントリ502が属する関数範囲を示す。関数範囲については図4Bに関して上述した。例えば、関数範囲はエントリ502の生成をもたらした関数スタック(例えば一連の関数呼び出し)であってもよく、特定の関数などの特定の時点で開始する。
エントリ502は、アノテーション付きのログファイルに書き込まれるとき、固有のID(unique ID)546を割り当てられ得る。
図5Bは、補助ウィンドウ枠520が別のエントリ504に関する情報を表示する、表形式の可視化500の別の図を示す。ここでは、補助ウィンドウ枠520は、先のエントリ502については示されなかったこのエントリ504についてのいくつかの追加的な情報を示す。インスタンス情報(instance information)545は、オブジェクトのインスタンスについての情報を示す。例えば、オブジェクトは、例えばエントリ504が記録されたときに実行していた関数などの関数を呼び出したオブジェクトであってもよい。インスタンス情報は、オブジェクトの変数及びその変数の値など、オブジェクトについての状態情報を含み得る。
パラメータ(parameters)548は、エントリ504が記録されたときに実行していた関数に提供される引数である。例えば、引数は、関数が呼び出されたときに提供されていてもよい。
表形式の可視化によれば、可視化を見ている人物は、プログラムの実行中に記録されたいずれか又はすべての状態情報を見ることが可能になる。表形式の可視化は図形的な可視化よりも包括的であるが、テキストエディタ又は他のテキストベースのビューアのログファイルを見るよりも読むのが容易である。
図6Aはプロセス600のフローチャートを示す。例えば、プロセス600は、図1Aに示すコンピュータシステム104によって、例えばそのコンピュータシステム上でコンピュータプログラムが実行している間に、行われ得る。
状態情報の種類を定義する仕様書が受信される(601)。例えば、仕様書は、図3A乃至3Cに示すように、状態情報の種類を識別するタグを含み得る。
仕様書は、とりわけ、a)関数が実行されたオブジェクトのインスタンスの識別、b)関数の識別、c)関数が呼び出された時刻の識別、d)関数に渡された引数及び関数と関連した変数、e)関数に渡された変数の識別、f)関数の出力、g)関数を呼び出した別の関数、又は他の種類の情報を定義し得る。仕様書がこの情報を定義すると言うときには、仕様書がログエントリ内に情報の各種類を識別するために用いられ得る情報を含むことを意味する。
いくつかの例においては、仕様書のフォーマットは、コンピュータプログラムのうち少なくとも1つ(例えば図1Aに示す可視化108のような可視化を生成するプログラム)の実行の可視化を生成する設備と互換性のあるフォーマットである。例えば、可視化設備は、仕様書に従ってフォーマットされたログを解析するために仕様書を用い、解析された情報から仕様書を生成することができる。
コンピュータプログラムのうち少なくとも1つと関連したイベントが発生したという表示(指示:indication)が受信される(602)。イベントはコンピュータプログラムの関数の実行と関連付けられている。例えば、イベントは、コンピュータプログラム内の関数への呼び出しであり得る。
イベントが発生したときのコンピュータプログラムの実行の状態を記述する状態情報が収集される(603)。例えば、状態情報はコンピュータプログラムの現在の状態又はコンピュータシステムの現在の状態を示し得るものであり、あるいは他の状態情報の種類であり得る。
イベントに対応するエントリが生成される(604)。このエントリは収集された状態情報の要素を含み、この状態情報の要素は仕様書に従ってフォーマットされる。
エントリはログレベル及び詳細レベルに基づいて記録され得る。例えば、異なるレベルのロギングが特定されるときには、異なる種類のイベントがログをとられる。エントリがログレベルに一致しない場合には、そのエントリは記録されない。また、同じ種類のイベントについて、異なる詳細レベルのロギングが特定されるときには、異なる量の情報がログをとられる。詳細レベルは、エントリが生成されるときにどのくらいの情報が含まれるかを決定する。いくつかの例においては、ログレベル又は詳細レベル、あるいはその両方が、コンピュータプログラムの実行中に動的に調整され得る。例えば、コンピュータプログラムは、ユーザがユーザインタフェース制御を用いてログレベル530(図5A)を設定することを可能にしてもよい。ユーザはコンピュータプログラムの異なるセグメント(又はレイヤ)について異なるログレベルを設定してもよい。動的に調整するとは、コンピュータプログラムが実行されるときに、ロギングのレベルが、例えばどの関数が実行しているか、又はどの種類のオブジェクトから関数が実行するかに応じて、自動的に調整されることを意味する。
いくつかの例においては、ログレベル又は詳細レベル、あるいはその両方が、関数が属するオブジェクト型を定義するクラスと関連付けられている。オブジェクト指向プログラムにおけるオブジェクトは一般に、あらゆるオブジェクトがクラスのインスタンスとなるように、クラスに従って定義される。例えば、エントリが生成されるとき、あるオブジェクトと関連したログレベル及び/又は詳細レベルは、そのオブジェクトと関連したイベント(例えば関数呼び出しなどのイベント)に応答して生成された任意のエントリで使用するログレベル及び/又は詳細レベルを決定するために用いられる。
エントリが記憶される(605)。エントリは、ログファイル、又はログエントリのデータベースのような別の種類のログに記憶され得る。例えば、ログファイルは、図1Aに示すアノテーション付きのログファイル106であり得る。
図6Bはプロセス610のフローチャートを示す。例えば、プロセス610は図1Aに示すコンピュータシステム100によって行われ得る。
第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログが受信される(612)。このログは第2のコンピュータシステムから受信され得るもので、エントリは各イベントが発生した時刻におけるコンピュータプログラムのうち少なくとも1つの実行の状態を記述するコンピュータプログラムの状態情報を含む。エントリのうち少なくともいくつかは、コンピュータプログラムのうち少なくとも1つの関数に対する呼び出しの実行と関連付けられ得る。
ある期間にわたるコンピュータプログラムのうち少なくとも1つの実行を表す情報を抽出するために、ログが解析される(613)。タグ付けされた状態情報は、タグを定義する仕様書に基づいて解釈され得る。
コンピュータプログラムの実行の可視化がログに基づいて生成される(614)。実装形態によっては、プロセス600はユーザインタフェースにおいて可視化を表示することを含む。
いくつかの例においては、可視化はコンピュータプログラムの関数の図形的表示を含む。関数の図形的表示は関数の実行の時間の図形的表示、例えば実行の時間を表す長さを有するバーを含み得る。図形的表示のうち少なくともいくつかは、ログファイルのエントリに基づいて決定される相互作用的な機能を含んでもよい。
いくつかの例においては、可視化は、コンピュータプログラムの状態情報の表形式の表示を含む。いくつかの例においては、ログファイルは、XML仕様書、例えばコンピュータプログラムの状態情報に対応するタグを定義するXML仕様書に従って定義されたフォーマットを有するフィールドを含む。
いくつかの例においては、図形的表示は、互いに関連して実行される複数の関数を表す範囲を含み、例えば、その複数の関数の各々は、コンピュータプログラムの実行中にその複数の関数のうちの別の関数によって呼び出されたものである。
いくつかの例においては、可視化は、複数のレイヤと、コンピュータプログラムの実行中に複数のレイヤで発生するイベント間の関係とを示す。例えば、レイヤはユーザ相互作用を表すレイヤを含み得るものであり、可視化はユーザ相互作用及び他のイベント(例えばクライアント‐サーバイベント)間の関係を示す。例えば、ユーザインタフェースレイヤで実行する関数(例えばユーザインタフェースにおけるボタンの押下のようなユーザインタフェースイベントに応答する関数)は、関数に、クライアント‐サーバレイヤにおいて実行させてもよい(例えば、ボタンの押下に応答してクライアントとサーバとの間のネットワーク通信を開始する関数)。
上述のプログラム実行を記録する技術は、コンピュータ、例えば図1Aに示すコンピュータシステム100又はコンピュータシステム104上で実行するためのソフトウェアを用いて実装され得る。例えば、ソフトウェアは、各々が少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶要素など)、少なくとも1つの入力装置又はポート、及び少なくとも1つの出力装置又はポートを備えた1つ以上のプログラムされた又はプログラム可能なコンピュータシステム(分散型、クライアント/サーバ、又は格子など、様々なアーキテクチャであり得る)上で実行する1つ以上のコンピュータプログラムにおけるプロシージャを形成する。ソフトウェアは、より大きなプログラムの1つ以上のモジュール又はコンポーネント又はレイヤ、例えば計算グラフの設計及び構成に関するサービスを提供するプログラムを形成し得る。グラフのノード及び要素は、コンピュータ読み取り可能な媒体に記憶されたデータ構造又はデータリポジトリに記憶されたデータモデルに準拠する他の組織的なデータとして実装され得る。
ソフトウェアは、記憶装置又はCD−ROMなどの汎用又は専用プログラム可能なコンピュータにより読み取り可能な媒体上に提供されてもよく、あるいはネットワークの通信媒体を介してそのソフトウェアが実行されるコンピュータへ配信(伝播信号中に符号化)されてもよい。機能のすべてが専用コンピュータ上で、又はコプロセッサなどの専用ハードウェアを用いて行われてもよい。ソフトウェアは、分散的に実装されて、ソフトウェアにより特定される計算の異なる部分が異なるコンピュータによって行われてもよい。そのようなコンピュータプログラムの各々は、好適には汎用又は専用のプログラム可能なコンピュータによって読み取り可能な記憶媒体又は装置(例えばソリッドステートメモリ又は媒体、あるいは磁気又は光学媒体)に記憶され又はダウンロードされて、本明細書に記載のプロシージャを行うべくこれらの記憶媒体又は装置がコンピュータシステムにより読み取られるときに、コンピュータを構成し動作させる。本発明のシステムは、コンピュータプログラムによって構成されたコンピュータ読み取り可能な記憶媒体として実装されるものと考えられてもよく、ここで、そのように構成された記憶媒体は、コンピュータシステムを、特定の所定の手法で動作させて、本明細書に記載の機能を行わせる。
本発明の多数の実施形態を説明した。しかし、本発明の精神及び範囲を逸脱することなく様々な変形が行われ得ることは理解されるであろう。例えば、上述したステップのうちいくつかは順序に非依存であってもよく、したがって記載されたものとは異なる順序で行われ得る。例えば、ログファイルを生成するコンピュータは、ログファイルの可視化又はコンピュータプログラムの実行の可視化を表示するためにも用いられ得る。例えば、コンピュータ100及び104は同一のコンピュータであり得る。図7に示すように、コンピュータシステム700は実行及びロギングモジュール702及び可視化モジュール704を備える。実行及びロギングモジュール702は、コンピュータプログラム706の関数が実行している間にデータをログファイルに書き込ませるログ指示708を含むコンピュータプログラム706(例えばプログラムコードからコンパイルされたプログラム)を受信する。実行及びロギングモジュール702は、コンピュータプログラム706の実行に基づいてアノテーション付きのログファイル710を出力する。アノテーション付きのログファイル710は可視化モジュール704に提供されることが可能であり、これが可視化712をコンピュータシステム700上で表示する(例えば、コンピュータモニタのような出力装置上でコンピュータシステムのユーザに対して可視化を表示する)。このようにすれば、コンピュータプログラムの可視化は、プログラムが実行しているのと同一のコンピュータシステム上で表示されることができる。可視化は実時間で表示され得る。例えば、ログエントリがアノテーション付きのログファイル710に現れるとすぐに、可視化712はコンピュータシステム700の出力装置上で更新され得る。
上述の記載は説明を意図したものであり、添付の特許請求の範囲によって規定される本発明の範囲を限定することを意図したものではないことが理解されるべきである。例えば、上述した多数の機能ステップは、全体の処理に実質的に影響を及ぼすことなく、異なる順序で実行され得る。他の実施形態は下記の特許請求の範囲内にある。

Claims (36)

  1. 1つ以上のコンピュータプログラムが実行しているコンピュータシステムにおいて、
    状態情報の種類を定義する仕様書を受信することと、
    前記コンピュータプログラムのうち少なくとも1つと関連したイベントであって前記コンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信することと、
    前記イベントが発生したときの前記コンピュータプログラムの前記実行の状態を記述する状態情報を収集することと、
    前記イベントに対応する、前記仕様書に従ってフォーマットされた前記収集された状態情報の要素を含むエントリを生成することと、
    前記エントリを記憶することと、
    を含む、コンピュータにより実施される方法。
  2. 各エントリが、前記エントリを含むログファイルを生成するデバッガ機構のネイティブフォーマットに従ってフォーマットされたデータの第1部分であってタイムスタンプとデバッガメッセージとのうち少なくとも1つを備えたデータの第1部分を含み、各エントリが、状態情報の種類を定義する前記仕様書に従ってフォーマットされたデータの第2部分を含み、前記仕様書に従ってフォーマットされた前記データが、前記ログファイルを生成するデバッガ機構のネイティブフォーマット以外のフォーマットであり、前記仕様書に従ってフォーマットされた前記データが、前記仕様書により定義されたタグに基づいて各々タグ付けされた前記状態情報の要素を含む、請求項1の方法。
  3. 前記仕様書が、前記関数が実行されたオブジェクトのインスタンスの識別を定義する、請求項1の方法。
  4. 前記仕様書が、前記関数の識別を定義するとともに、前記関数が呼び出された時刻の識別を定義する、請求項1の方法。
  5. 前記仕様書が、前記関数に渡される引数を定義するとともに、前記関数と関連した変数を定義する、請求項4の方法。
  6. 前記仕様書が、前記関数に渡される変数の識別、前記関数の出力、又は前記関数を呼び出した別の関数のうち少なくとも1つを定義する、請求項4の方法。
  7. 前記仕様書が、前記コンピュータプログラムのうち少なくとも1つの実行の可視化を生成する設備と互換性のあるフォーマットを定義する、請求項1の方法。
  8. 前記仕様書がXML仕様書である、請求項1の方法。
  9. 前記エントリ内の前記状態情報の種類のうち少なくともいくつかがタグにより識別される、請求項1の方法。
  10. 前記コンピュータプログラムのうち少なくとも1つの実行中にロギングのレベルを動的に調整することを含み、異なるレベルのロギングが特定されるときには、異なる種類のイベントがログをとられる、請求項1の方法。
  11. 前記コンピュータプログラムのうち少なくとも1つの実行中にロギングの詳細レベルを動的に調整することを含み、同じ種類のイベントについて、異なる詳細レベルのロギングが特定されるときには、異なる量の情報がログをとられる、請求項1の方法。
  12. 記録されるべきイベントの閾値を示す第1のコマンドと、各ログエントリに記録されるべき詳細レベルを示す第2のコマンドとを受信することと、
    前記示された詳細レベルで、記録されるべきイベントの前記閾値を満足するイベントについてエントリを生成することと、
    を含む、請求項1の方法。
  13. 記憶されるべきイベントの閾値を受信することと、
    関数が実行しているときに前記閾値を満足するイベントのエントリを生成することと、
    を含む、請求項1の方法。
  14. 各ログエントリに記録されるべき詳細レベルを受信することと、
    関数が実行しているときに前記詳細レベルでイベントのエントリを生成することと、
    を含む、請求項1の方法。
  15. 第1のコンピュータシステムにおいて、
    第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログを受信することと、
    ある期間にわたる前記コンピュータプログラムのうち少なくとも1つの前記実行を表す情報を抽出するために前記ログを解析することと、
    前記解析されたログに基づいて、前記コンピュータプログラムのうち少なくとも1つの前記実行の可視化を生成することと、
    を含み、
    前記エントリは、前記各イベントが発生した時刻における前記コンピュータプログラムのうち少なくとも1つの実行の状態を記述する状態情報を含み、
    前記可視化は、前記コンピュータプログラムのうち少なくとも1つの一部の前記実行と関連した時間の経過を表す少なくとも1つの図形を含む、コンピュータにより実施される方法。
  16. 前記エントリのうち少なくともいくつかが、前記コンピュータプログラムのうち少なくとも1つの関数に対する呼び出しの実行と関連している、請求項15の方法。
  17. 第2のコンピュータシステムで前記ログを生成することと、前記ログを前記第2のコンピュータシステムから前記第1のコンピュータシステムに提供することと、を含む、請求項15の方法。
  18. 前記可視化をユーザインタフェースにおいて表示することを含む、請求項15の方法。
  19. 前記可視化が前記コンピュータプログラムのうち少なくとも1つの関数の図形的表示を含む、請求項15の方法。
  20. 前記関数の前記図形的表示が前記関数の実行の時間の図形的表示を含む、請求項19の方法。
  21. 前記図形的表示のうち少なくともいくつかが、前記ログの前記エントリに基づいて決定される相互作用的な機能を含む、請求項19の方法。
  22. 前記図形的表示が、互いに関連して実行される複数の関数を表す範囲を含む、請求項19の方法。
  23. 前記複数の関数の各々が、前記コンピュータプログラムのうち少なくとも1つの前記実行中に前記複数の関数のうち別の関数によって呼び出された、請求項22の方法。
  24. 前記可視化が、前記コンピュータプログラムのうち少なくとも1つの状態情報の表形式の表示を含む、請求項15の方法。
  25. 前記ログがXML仕様書に従って定義されたフォーマットを含む、請求項15の方法。
  26. 前記XML仕様書がコンピュータプログラムの状態情報に対応するタグを定義する、請求項25の方法。
  27. 前記可視化が、複数のレイヤと、前記コンピュータプログラムの実行中に前記複数のレイヤで発生するイベント間の関係とを示す、請求項15の方法。
  28. 前記レイヤがユーザ相互作用を表すレイヤを含み、前記可視化がユーザ相互作用及び他のイベント間の関係を示す、請求項27の方法。
  29. 前記可視化が、各々が前記コンピュータプログラムのうち少なくとも1つの一部に対応するレイヤを含み、前記可視化が、前記少なくとも1つのコンピュータプログラムが実行されるときに実行される関数の表示を含み、関数の各表示が、前記関数に対応する前記コンピュータプログラムの一部に対応するレイヤに配置される、請求項15の方法。
  30. 前記可視化が前記コンピュータプログラムの前記実行の少なくとも一部の再生を含み、前記再生が、どの関数が呼び出されたのか、呼び出された前記関数に渡された値、及び前記コンピュータプログラムの前記実行中にユーザにより提供された入力を示す、請求項15の方法。
  31. 1つ以上のコンピュータプログラムが実行しているコンピューティングシステムに、
    状態情報の種類を定義する仕様書を受信することと、
    前記コンピュータプログラムのうち少なくとも1つと関連したイベントであって前記コンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信することと、
    前記イベントが発生したときの前記コンピュータプログラムの前記実行の状態を記述する状態情報を収集することと、
    前記イベントに対応する、前記仕様書に従ってフォーマットされた前記収集された状態情報の要素を含むエントリを生成することと、
    前記エントリを記憶することと、
    を含む動作を行わせる指示を記憶する、コンピュータ読み取り可能な記憶装置。
  32. 第1のコンピューティングシステムに、
    第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログを受信することと、
    ある期間にわたる前記コンピュータプログラムのうち少なくとも1つの前記実行を表す情報を抽出するために前記ログを解析することと、
    前記解析されたログに基づいて、前記コンピュータプログラムのうち少なくとも1つの前記実行の可視化を生成することと、
    を含む動作を行わせる指示を記憶する、コンピュータ読み取り可能な記憶装置であって、
    前記エントリは、前記各イベントが発生した時刻における前記コンピュータプログラムのうち少なくとも1つの実行の状態を記述する状態情報を含み、
    前記可視化は、前記コンピュータプログラムのうち少なくとも1つの一部の前記実行と関連した時間の経過を表す少なくとも1つの図形を含む、記憶装置。
  33. 1つ以上のコンピュータプログラムの実行中に動作を行うよう構成されたコンピュータシステムであって、前記動作が、
    状態情報の種類を定義する仕様書を受信することと、
    前記コンピュータプログラムのうち少なくとも1つと関連したイベントであって前記コンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信することと、
    前記イベントが発生したときの前記コンピュータプログラムの前記実行の状態を記述する状態情報を収集することと、
    前記イベントに対応する、前記仕様書に従ってフォーマットされた前記収集された状態情報の要素を含むエントリを生成することと、
    前記エントリを記憶することと、
    を含む、コンピュータシステム。
  34. 第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログを受信することと、
    ある期間にわたる前記コンピュータプログラムのうち少なくとも1つの前記実行を表す情報を抽出するために前記ログを解析することと、
    前記解析されたログに基づいて、前記コンピュータプログラムのうち少なくとも1つの前記実行の可視化を生成することと、
    を含む動作を行うよう構成された第1のコンピュータシステムであって、
    前記エントリは、前記各イベントが発生した時刻における前記コンピュータプログラムのうち少なくとも1つの実行の状態を記述する状態情報を含み、
    前記可視化は、前記コンピュータプログラムのうち少なくとも1つの一部の前記実行と関連した時間の経過を表す少なくとも1つの図形を含む、第1のコンピュータシステム。
  35. 1つ以上のコンピュータプログラムを実行するコンピュータシステムであって、
    状態情報の種類を定義する仕様書を受信する手段と、
    前記コンピュータプログラムのうち少なくとも1つと関連したイベントであって前記コンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信する手段と、
    前記イベントが発生したときの前記コンピュータプログラムの前記実行の状態を記述する状態情報を収集する手段と、
    前記イベントに対応する、前記仕様書に従ってフォーマットされた前記収集された状態情報の要素を含むエントリを生成する手段と、
    前記エントリを記憶する手段と、
    を備えた、コンピュータシステム。
  36. 第2のコンピュータシステム上での1つ以上のコンピュータプログラムの実行中に発生したイベントに基づいて生成されたエントリを含むログを受信する手段と、
    ある期間にわたる前記コンピュータプログラムのうち少なくとも1つの前記実行を表す情報を抽出するために前記ログを解析する手段と、
    前記解析されたログに基づいて、前記コンピュータプログラムのうち少なくとも1つの前記実行の可視化を生成する手段と、
    を備えた第1のコンピュータシステムであって、
    前記エントリは、前記各イベントが発生した時刻における前記コンピュータプログラムのうち少なくとも1つの実行の状態を記述する状態情報を含み、
    前記可視化は、前記コンピュータプログラムのうち少なくとも1つの一部の前記実行と関連した時間の経過を表す少なくとも1つの図形を含む、第1のコンピュータシステム。
JP2016500237A 2013-03-15 2014-02-11 プログラム実行の記録 Active JP6434957B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361798246P 2013-03-15 2013-03-15
US61/798,246 2013-03-15
US14/156,905 2014-01-16
US14/156,905 US9311221B2 (en) 2013-03-15 2014-01-16 Recording program execution
PCT/US2014/015846 WO2014149242A1 (en) 2013-03-15 2014-02-11 Recording program execution

Publications (2)

Publication Number Publication Date
JP2016514322A true JP2016514322A (ja) 2016-05-19
JP6434957B2 JP6434957B2 (ja) 2018-12-05

Family

ID=51534660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016500237A Active JP6434957B2 (ja) 2013-03-15 2014-02-11 プログラム実行の記録

Country Status (10)

Country Link
US (2) US9311221B2 (ja)
EP (1) EP2972665B1 (ja)
JP (1) JP6434957B2 (ja)
KR (1) KR102012342B1 (ja)
CN (1) CN104969144B (ja)
AU (1) AU2014238339B2 (ja)
CA (1) CA2892080C (ja)
HK (1) HK1220783A1 (ja)
SG (1) SG11201504062PA (ja)
WO (1) WO2014149242A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049562A (ja) * 2016-09-23 2018-03-29 東芝テック株式会社 決済装置およびプログラム

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311221B2 (en) 2013-03-15 2016-04-12 Ab Initio Technology Llc Recording program execution
US9244811B1 (en) * 2013-12-20 2016-01-26 Emc Corporation System and method for smart framework for network backup software debugging
SG11201700384WA (en) 2014-07-18 2017-02-27 Ab Initio Technology Llc Managing parameter sets
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US11256535B2 (en) 2016-02-18 2022-02-22 Micro Focus Llc Visualizations of computer program transactions
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US9946630B2 (en) * 2016-06-17 2018-04-17 International Business Machines Corporation Efficiently debugging software code
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10140056B2 (en) * 2016-09-27 2018-11-27 Intel Corporation Systems and methods for differentiating function performance by input parameters
US10481999B2 (en) 2016-12-05 2019-11-19 Microsoft Technology Licensing, Llc Partial process recording
US10235783B2 (en) * 2016-12-22 2019-03-19 Huawei Technologies Co., Ltd. System and method for visualization of a compute workflow
US9940369B1 (en) 2017-03-08 2018-04-10 Microsoft Technology Licensing, Llc Searching an indexed time-travel trace
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US9983978B1 (en) 2017-03-08 2018-05-29 Microsoft Technology Licensing, Llc Querying an indexed time-travel trace
US9959194B1 (en) 2017-03-08 2018-05-01 Microsoft Technology Licensing, Llc Indexing a trace by insertion of memory snapshots for replay responsiveness
US9934126B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
US11086782B2 (en) * 2017-06-21 2021-08-10 Tetra Laval Holdings & Finance S.A. Method of logging process data in a PLC controlled equipment
US11113138B2 (en) 2018-01-02 2021-09-07 Carrier Corporation System and method for analyzing and responding to errors within a log file
US10776091B1 (en) * 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
CN111831542B (zh) * 2019-04-23 2022-04-05 华为技术有限公司 Api应用调测方法及装置、存储介质
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
CN112445855B (zh) * 2020-11-17 2024-05-17 海光信息技术股份有限公司 用于图形处理器芯片的可视化分析方法和可视化分析装置
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06242989A (ja) * 1993-02-19 1994-09-02 Nec Corp メモリ割当トレース装置
JPH10293704A (ja) * 1997-04-18 1998-11-04 Hitachi Ltd ログデータの収集と管理をする情報処理装置
JP2002163129A (ja) * 2000-11-27 2002-06-07 Hitachi Ltd ログレベル定義方法および該方法を実現するプログラムを記録した記録媒体
WO2008072333A1 (ja) * 2006-12-14 2008-06-19 Fujitsu Limited 実行ログ生成プログラム、実行ログ生成装置および実行ログ生成方法
US20110214108A1 (en) * 2010-02-26 2011-09-01 Roland Grunberg Architecture, system and method for generating visualizations from running executable code

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991176A (en) 1989-06-07 1991-02-05 At&T Bell Laboratories Optimal test generation for finite state machine models
US5168554A (en) * 1989-10-13 1992-12-01 International Business Machines Corporation Converting trace data from processors executing in parallel into graphical form
US6219826B1 (en) * 1996-08-01 2001-04-17 International Business Machines Corporation Visualizing execution patterns in object-oriented programs
US5862381A (en) * 1996-11-26 1999-01-19 International Business Machines Corporation Visualization tool for graphically displaying trace data
US6202199B1 (en) * 1997-07-31 2001-03-13 Mutek Solutions, Ltd. System and method for remotely analyzing the execution of computer programs
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US6470388B1 (en) 1999-06-10 2002-10-22 Cisco Technology, Inc. Coordinated extendable system for logging information from distributed applications
US6421724B1 (en) 1999-08-30 2002-07-16 Opinionlab, Inc. Web site response measurement tool
US8055752B1 (en) 1999-11-16 2011-11-08 Ricoh Company, Ltd. Application unit monitoring and reporting system and method with usage data logged into a map structure
US6823497B2 (en) 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
AUPR230900A0 (en) 2000-12-22 2001-01-25 Canon Kabushiki Kaisha Print engine simulator
US6817010B2 (en) * 2000-12-27 2004-11-09 International Business Machines Corporation Monitoring messages during execution of a message flow
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US7007268B2 (en) * 2001-08-20 2006-02-28 Sun Microsystems, Inc. Method and apparatus for debugging in a massively parallel processing environment
US7559032B2 (en) * 2001-10-12 2009-07-07 National Instruments Corporation System and method for enabling a graphical program to respond to user interface events
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
US7281241B2 (en) * 2002-01-15 2007-10-09 Cadence Design (Israel) Ii Ltd. System and method for visual debugging of constraint systems
US7131113B2 (en) * 2002-12-12 2006-10-31 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
CN1567182A (zh) * 2003-06-20 2005-01-19 鸿富锦精密工业(深圳)有限公司 日志记录系统及方法
CA2433750A1 (en) * 2003-06-27 2004-12-27 Ibm Canada Limited - Ibm Canada Limitee Automatic collection of trace detail and history data
WO2005017743A2 (en) * 2003-08-07 2005-02-24 National Instruments Corporation A graphical program which executes a timed loop
US7404180B2 (en) * 2003-12-11 2008-07-22 Sap Ag Trace management in client-server applications
US7475401B1 (en) * 2003-12-30 2009-01-06 Sap Ag Filtered unified logging service
US7606893B2 (en) * 2003-12-30 2009-10-20 Sap Ag System and method for integrated logging and tracing functions in an enterprise network
US7376534B2 (en) 2004-05-21 2008-05-20 Bea Systems, Inc. Watches and notifications
US20060230385A1 (en) * 2005-04-12 2006-10-12 I-Lang Chang Method for displaying program profiling, software development program with profiling display and physical storage medium with software development program
US20060248512A1 (en) * 2005-04-28 2006-11-02 Microsoft Corporation Active execution tracing visualization
US7661094B2 (en) * 2005-05-10 2010-02-09 Alcatel-Lucent Usa Inc. Real-time software diagnostic tracing
US20070234306A1 (en) * 2006-03-31 2007-10-04 Klinger Uwe D Tracing performance of machine-readable instructions
US7926040B2 (en) * 2006-09-06 2011-04-12 International Business Machines Corporation Method and system for timing code execution in a korn shell script
GB0617449D0 (en) * 2006-09-06 2006-10-18 Ibm An apparatus for providing a visual representation of a sub-set of a visual program
US7840849B2 (en) * 2006-12-21 2010-11-23 Novell, Inc. Methods and apparatus for debugging software including divisions of an execution history of a debuggee program
US7689947B2 (en) 2007-01-04 2010-03-30 International Business Machines Corporation Data-driven finite state machine engine for flow control
US20080209405A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Distributed debugging for a visual programming language
US7962314B2 (en) * 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US9098626B2 (en) * 2008-04-01 2015-08-04 Oracle International Corporation Method and system for log file processing and generating a graphical user interface based thereon
US8464221B2 (en) * 2009-06-16 2013-06-11 Microsoft Corporation Visualization tool for system tracing infrastructure events
US8850403B2 (en) * 2009-12-04 2014-09-30 Sap Ag Profiling data snapshots for software profilers
US8453106B2 (en) * 2010-12-17 2013-05-28 Microsoft Corporation Graphical user interface for exploring source code execution behavior
US9645913B2 (en) * 2011-08-03 2017-05-09 Daniel Geist Method and apparatus for debugging programs
US10133653B2 (en) * 2012-02-23 2018-11-20 Cadence Design Systems, Inc. Recording and playback of trace and video log data for programs
US9342317B2 (en) * 2012-08-09 2016-05-17 International Business Machines Corporation Importing profiles for configuring specific system components into a configuration profile for the system
CN102880541A (zh) * 2012-09-28 2013-01-16 用友软件股份有限公司 日志信息的获取系统和获取方法
US8935673B1 (en) * 2012-11-30 2015-01-13 Cadence Design Systems, Inc. System and method for debugging computer program based on execution history
US9311221B2 (en) 2013-03-15 2016-04-12 Ab Initio Technology Llc Recording program execution

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06242989A (ja) * 1993-02-19 1994-09-02 Nec Corp メモリ割当トレース装置
JPH10293704A (ja) * 1997-04-18 1998-11-04 Hitachi Ltd ログデータの収集と管理をする情報処理装置
JP2002163129A (ja) * 2000-11-27 2002-06-07 Hitachi Ltd ログレベル定義方法および該方法を実現するプログラムを記録した記録媒体
WO2008072333A1 (ja) * 2006-12-14 2008-06-19 Fujitsu Limited 実行ログ生成プログラム、実行ログ生成装置および実行ログ生成方法
US20110214108A1 (en) * 2010-02-26 2011-09-01 Roland Grunberg Architecture, system and method for generating visualizations from running executable code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049562A (ja) * 2016-09-23 2018-03-29 東芝テック株式会社 決済装置およびプログラム

Also Published As

Publication number Publication date
HK1220783A1 (zh) 2017-05-12
AU2014238339B2 (en) 2018-11-01
EP2972665B1 (en) 2019-05-01
WO2014149242A1 (en) 2014-09-25
CN104969144A (zh) 2015-10-07
SG11201504062PA (en) 2015-09-29
US9852047B2 (en) 2017-12-26
CA2892080C (en) 2019-08-20
US20160188442A1 (en) 2016-06-30
US20140282418A1 (en) 2014-09-18
KR20150132086A (ko) 2015-11-25
JP6434957B2 (ja) 2018-12-05
EP2972665A1 (en) 2016-01-20
CN104969144B (zh) 2018-10-19
CA2892080A1 (en) 2014-09-25
AU2014238339A1 (en) 2015-06-04
US9311221B2 (en) 2016-04-12
KR102012342B1 (ko) 2019-08-20
EP2972665A4 (en) 2016-11-16

Similar Documents

Publication Publication Date Title
JP6434957B2 (ja) プログラム実行の記録
US8413108B2 (en) Architectural data metrics overlay
US8842119B2 (en) Displaying system performance information
US9176840B2 (en) Tool for analyzing and resolving errors in a process server
EP2831739A1 (en) Profile data visualization
Maalej et al. Collecting and processing interaction data for recommendation systems
Ng et al. Identification of behavioural and creational design motifs through dynamic analysis
Roehm et al. Monitoring user interactions for supporting failure reproduction
US7627857B2 (en) System and method for visualizing exception generation
Reiss et al. JOVE: Java as it happens
US20130275951A1 (en) Race detection for web applications
CN109240700B (zh) 关键代码定位方法与系统
CN109062784B (zh) 接口参数约束代码入口定位方法与系统
WO2007098615A1 (en) Legacy application modernization by capturing, processing and analysing business processes
CN109062785B (zh) 接口参数约束代码定位方法与系统
Zhou et al. TC4JPF: Using Trace Compass to Visualize JPF Traces
Borgfeld Tool Support for Layout Algorithm Development with ELK
Kunz et al. Poet: target-system-independent visualizations of complex distributed executions
Denker et al. Modeling features at runtime
Team Service Observability
Wessels High level performance analysis and dependency management
Li Visualizing Execution Phases Using Flame Graph
Kurtz SoftViz: A Run-time Software Visualization Environment
CN116804924A (zh) 一种通用的Swing程序用户行为采集方法和装置
CN114999663A (zh) 用于临床研究项目的数据管理方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180622

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: 20181011

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181109

R150 Certificate of patent or registration of utility model

Ref document number: 6434957

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250