JP2005011342A - プラグ可能構成要素におけるブレークポイントのデバッグ - Google Patents

プラグ可能構成要素におけるブレークポイントのデバッグ Download PDF

Info

Publication number
JP2005011342A
JP2005011342A JP2004178867A JP2004178867A JP2005011342A JP 2005011342 A JP2005011342 A JP 2005011342A JP 2004178867 A JP2004178867 A JP 2004178867A JP 2004178867 A JP2004178867 A JP 2004178867A JP 2005011342 A JP2005011342 A JP 2005011342A
Authority
JP
Japan
Prior art keywords
breakpoint
task
runtime
component
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004178867A
Other languages
English (en)
Other versions
JP2005011342A5 (ja
Inventor
Kirk J Haselden
ハーゼルデン ジェイ.カーク
Brian J Hartman
ジェイ.ハートマン ブライアン
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005011342A publication Critical patent/JP2005011342A/ja
Publication of JP2005011342A5 publication Critical patent/JP2005011342A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】プラグ可能構成要素上でのブレークポイントによるデバッグの提供。拡張可能なプラグ可能構成要素を有するコンピューティング環境では、エラーの観察、追跡、構成要素のランタイム中の様々なポイントでブレークポイントの設定を可能にする。
【解決手段】コンピューティング環境にはクライアント、ランタイム、およびタスクが含まれる。オペレーションでは、クライアントは、ランタイムおよびタスクと通信してデバッグオペレーションを実行する。タスクはブレークポイントを設定し、ランタイムを介してクライアントに送信される。ブレークポイントに遭遇するとタスクは中断され、タスクの実行に問題がある場合、クライアントはデバッグを実行することができる。満足すると、クライアントはランタイムを介してタスクオペレーションを再開する。
【選択図】 図3

Description

本発明はデバッガに関し、より具体的には、オブジェクトモデルでのプラグ可能構成要素のブレークポイントのデバッグ(debugging breakpoint)に関する。
デバッグには、必ずとは言えないが、通常は、プログラマがランタイムのプログラムの挙動を観察し、意味エラーの場所を特定することができるようにする強力なツールである、デバッガの使用が含まれる。言語およびその関連ライブラリに組み込まれた、一定のデバッグ特徴を使用することもできる。多くのプログラマが問題を特定しようとする場合、第一に、出力機能への呼出しをそのコードに追加することによるデバッグを経験することになる。これはまったく正当なデバッグ技法であるが、いったん問題がみつかって処理されてしまうと、そうした特別な機能の呼出しをコードからすべて除去しなければならなくなる。たとえ単一の呼出しであっても、新しいコードを追加することによってデバッグ中のコードの挙動を変えてしまう場合もあり得る。
これに代わる方法が、問題およびエラーに関するコードを読み取って分析するコンピューティングアプリケーションである、デバッガを使用することである。デバッガを使用するプログラマは、値を出力するために追加の呼出しを挿入する必要なしに、プログラム中の変数のコンテンツを検査する機能が使用できる。さらに、デバッガを使用して、プログラムコードにブレークポイントを挿入し、該当するポイントで実行を中止させることができる。プログラムが中止される(ブレークモード)と、デバッガ機構(たとえば監視ウィンドウ(watch window))を使用して、ローカル変数および他の関連データを検査することができる。ブレークモード中は、コンテンツを表示できるだけでなく、変更および/または編集することもできる。
具体的に言えば、ブレークポイントとは、ある一定のポイントでプログラムの実行を一時的に中断するようにデバッガに伝える信号のことである。ブレークポイントで実行が中断されると、プログラムにはブレークモードに入ったことが伝えられる。ブレークモードに入ることは、プログラムの実行を打切るかまたは終了することではない。実行はいつでも再開(続行)可能である。
ブレークモードは、スポーツイベントのタイムアウトのようなものと考えることができる。プレーヤはすべてフィールド上に残ったまま(機能、変数、およびオブジェクトはメモリ内に残ったまま)であるが、その動きや動作は中断される。タイムアウト中は、審判員が彼らの位置や状態を調べて、違反(バグ)を探すことができる。審判員には、タイムアウト中にプレーヤを調整する権限が与えられている。ブレークモード中は、プログラムへの調整が実行できる。たとえば、変数の値を変更することができる。また、実行ポイントは移動可能であり、これによって、次に実行が再開されたときに実行される予定のステートメントが変更される。
ブレークポイントは、所望の場所および時間にプログラムの実行を中断することができる強力なツールを提供するものである。プログラムは、コードを1行ごとまたは命令ごとに進んでいくのではなく、ブレークポイントにヒットするまで実行し、その後デバッグを開始するように設定することができる。これによって、デバッグプロセスは大幅にスピードアップされる。この機能なしで大規模なプログラムをデバッグするのは、事実上不可能であろう。
多くのプログラム言語は、実行を中断し、プログラムをブレークモードにする、ステートメントまたは構成体(construct)を有する。たとえばVisual Basicは、Stopステートメントを有する。
ブレークポイントは、プログラムに追加しなければならない実際のソースコードではないため、これらのステートメントとは異なる。ブレークポイントステートメントは、ソースウィンドウに入力されるのではなく、いくつかの一般的なデバッガインターフェースを介して要求され、次にデバッガがブレークポイントを設定する。
プラグ可能構成要素(たとえばデータ変換システム(DTS))を有するコンピューティング環境のランタイム状況では、デバッグはより複雑になる。
具体的に言えば、ランタイムは対抗して働く構成要素のソースコードを持たないことから、プラグ可能構成要素を備えたランタイムは一意のデバッグ問題であるため、デバッグは困難である。
さらに、ランタイムパッケージ(たとえばDTSパッケージ)の実行の多くが、ランタイム外で発生する。
また、タスクはそれら自体の実行を制御するものであり、これは、それらを(たとえばデバッグの目的で)いつ一時停止するかを制御することを意味する。特定のタスクを一時停止するためのランタイムの場合、ランタイム(データファイルの表示および/または実行のために、データファイルに付随するコンピューティングアプリケーション)は、その特定のタスクと協働していることが必要である。
現在の実施においては、ランタイムでのデバッグには対処しているが、ランタイムとタスクの間の協働は対象とされていないため、ランタイムでのプラグ可能構成要素のデバッグには取り組んでいない。
端的に言えば、ランタイムはプラグ可能構成要素の実行をほとんど制御しない。
以下の内容から、従来技術を克服するシステムおよび方法が求められていることを理解されよう。
プラグ可能構成要素上でのブレークポイントのデバッグが提供される。拡張可能なプラグ可能構成要素を有するコンピューティング環境では、エラーの観察、追跡、および解決が可能なように、構成要素のランタイム(たとえば実行)中の様々なポイントでブレークポイントの設定を可能にするためのシステムおよび方法が提供される。
例示的な実施では、コンピューティング環境にはクライアント、ランタイム、およびタスクが含まれる。オペレーションでは、クライアントが実行可能ファイルを作成するか、またはパッケージをランタイムにロードする。ランタイムはタスクを作成し、そのタスクがブレークポイントを作成できるように構成する。
次に、タスクはブレークポイントを作成し、ブレークポイント情報をランタイムに送信する。
次に、クライアントは、ブレークポイントの集まりを列挙することによって、ブレークポイントを実行可能にする。タスクはブレークポイントに遭遇すると、実行を停止し、ランタイムに制御を与える。
ランタイムは、ブレークポイント呼出しをクライアントに転送する。さらに、ランタイムは、こうしたオペレーションをサポートしているすべてのタスク上で、中断呼出しも実行する。クライアントが満足すると、ランタイムと通信することによってパッケージを再開し、次にすべてのタスクの再開をトリガする。
本発明の一態様として、以下、プラグ可能構成要素上でのブレークポイントのデバッグに関するシステムおよび方法について、添付の図面を参照して説明する。
概要
ソフトウェアデバッグは、開発者がコンピュータプログラムから符号化の不具合を除去しようとする際に使用するプロセスである。ソフトウェア開発のデバッグ段階が、開発全体の60〜70%の時間を占めることは、めずらしくない。実際に、ソフトウェアプロジェクトオーバラン全体の約80%は、デバッグが原因である。結局のところ、ソフトウェアデバッグのきわめて重要なプロセスは、多くの困難や不確実性に取り囲まれている。これは、エラー検出プロセスの各段階で、不具合が実際に修正されるのか否かはおろか、エラーを見つけて修正するのにどのぐらいの時間がかかるのかを特定することが困難であるためである。ソフトウェアからバグを除去するために、開発者は第一に、問題が存在することを発見し、次いでエラーを分類し、実際に問題がコード内のどこにあるのかを突き止め、最終的に(他の問題を誘導することなく)状況を修復する解決策を作成しなければならない。問題の中には見つかりにくいものもあるため、プログラマがそれらを見つけるために何カ月も、極端な場合には何年も費やす場合もある。開発者は、ソフトウェアデバッグのプロセスを改良および合理化するための方法を常に探し求めている。同時に、エラー検出に使用される技法を自動化することも試みられてきている。
何年にもわたり、デバッグ技術は大幅に改良されてきており、近未来に向かって大幅な発展が続くであろう。
デバッグ技術の研究により、興味深い傾向が見えてきた。デバッグ改革のほとんどは、人間の能力および対話への依存度を削減することに集中してきた。デバッグ技術は、いくつかの段階を通じて開発されてきた。コンピュータ時代の創成期には、実行したプログラムに関する出力をコンピュータに生成させることは、プログラマにとって困難であった。プログラマは、使用したプログラムに関する情報を得るための様々な方法を開発せざるを得なかった。バグを修復するだけでなく、バグを見つけるツールも構築しなければならなかった。スコープやプログラム制御バルブなどのデバイスが、初期のデバッグ技法として使用された。
やがてプログラマは、プログラム内に印刷命令を入れることによって、バグを検出し始めた。このようにしてプログラマは、プログラム経路および重要な変数の値を追跡できるようになった。印刷ステートメントの使用によって、プログラマは、自分専用のデバッグツールを構築するという時間のかかるタスクから解放された。この技法は今でも一般に使用されており、実際に特定の種類の問題には好適である。
印刷ステートメントはデバッグ技法における改良点であったが、それでもなお、プログラマはかなりの時間と努力を要求された。プログラマに求められたものは、一度に1つのプログラム命令を実行し、プログラム内の任意の変数の値を印刷できるツールであった。これは、プログラムを進行させながら実行するものであるため、印刷ステートメントを入れる時点を事前に決定する必要性からプログラマを解放するものであった。このようにして生まれたのが、ランタイムデバッガである。原則として、ランタイムデバッガは自動印刷ステートメント以外の何者でもない。これは、プログラマが、コード内に印刷ステートメントを入れる必要なしに、プログラム経路および変数を追跡できるようにするものである。
今日では、事実上、市場のあらゆるコンパイラはランタイムデバッガに付属して売られている。デバッガは、プログラムのコンパイル時にコンパイラに渡されるスイッチとして実施される。このスイッチは、ほとんどの場合に「−g」スイッチと呼ばれている。スイッチは、ランタイムデバッガを使用して実行できるように十分な情報を実行可能ファイルに組み込むよう、コンパイラに指示する。ランタイムデバッガは、プログラマがエラーを絞り込もうとする際に、ソースの修正および再コンパイルを行うのではなく、単一のコンパイルでコンパイルおよび実行できるようにするものであるため、印刷ステートメントにとっては大きな改良点であった。ランタイムデバッガは、プログラム内のエラーの検出を容易にするものではあったが、エラーの原因を見つけられるものではなかった。プログラマには、ソフトウェアの不具合を突き止めて修正するためのさらに良いツールが必要であった。
ソフトウェア開発者は、メモリ破損およびメモリリークなどのいくつかのクラスのエラーが、自動的に検出できることを発見した。これはバグの発見プロセスを自動化するものであったため、デバッグ技法を前進させるステップとなった。ツールが開発者にエラーを通知するので、開発者はそれを修正するだけでよかった。自動デバッガにはいくつかの種類がある。最も単純なものは、プログラムにリンク可能な機能の単なるライブラリである。プログラムが実行されるとこれらの機能が呼び出され、デバッガがメモリの破損をチェックする。この状態を見つけると報告する。こうしたツールの弱点は、実際にメモリの破損が発生しているプログラム内のポイントを検出できないことである。これはデバッガが、プログラムが実行するあらゆる命令を監視しておらず、わずかな数のエラーしか検出できないためである。
ランタイムデバッガの次のグループは、OCI技術に基づくものである。これらのツールは、コンパイラによって生成されたオブジェクトコードを読み取り、プログラムがリンクされる前に取り付けられる。これらのツールの基本原理は、メモリにアクセスするプロセッサ命令を探すことである。オブジェクトコードでは、メモリにアクセスするどのような命令も破損をチェックするように修正される。これらのツールは、ライブラリ技法に基づくものよりも有用であるが、それでもまだ完全とは言えない。これらのツールはメモリ命令によってトリガされるため、メモリに関するエラーしか検出できない。これらのツールは、動的メモリ内のエラーは検出できるが、スタック上での検出機能は制限されており、静的メモリでは動作しない。OCI技術の弱点により、他のタイプのエラーは検出できない。オブジェクトレベルでは、ソースコードに関する多くの重要な情報が永久に失われ、エラーを突き止める一助としては使用できない。これらのツールの他の欠点は、メモリリークの発生を検出できないことである。オブジェクトレベルではポインタと整数が区別できないため、リークが検出できない原因となる。
ランタイムデバッガの第3のグループは、SCI技術に基づくものである。このツールはプログラムのソースコードを読み取り、これを分析し、あらゆるプログラム命令がツールの命令の間に入るようにこれを取り付ける。ツールはソースコードを読み取るため、メモリに関するエラーおよび他の多数のクラスのエラーを発見することができる。さらに、メモリ破損エラーの場合、ツールは、ヒープ、静的、およびスタックメモリを含むすべてのメモリセグメントでエラーを検出することができる。このツールの大きな利点は、プログラム内部のポインタを追跡できること、および、リークを追跡してどこで発生したかを示すことができることである。この世代のツールは、今なお進化を続けている。これらのツールは、メモリエラーを探すことに加えて、言語特有のエラーおよびアルゴリズムのエラーを検出することができる。これらのツールは、次の段階の技術開発に基づくものとなろう。
これらすべてのツールに共通の欠点が1つある。それは、依然としてプログラマが、プログラムがコンパイルされた後にランタイムエラーを見つける特別なステップを実行しなければならないことである。ある意味でこのプロセスは、デバッグの石器時代からそれほど変化していないと言える。第1にコードが作成され、その後コードのエラーがチェックされる。この2段階のプロセスは、高水準にのみ依然として存在している。これを1つの段階に統合する手順が求められている。
ブレークポイントは、実行をデバッグ目的で一時的に休止することができる。典型的なソフトウェア開発環境では、アプリケーションが実行されているスレッドを一時停止し、ソースコード内でアプリケーションが停止する場所を様々な状態に基づいて決定することによって、ブレークポイントの挙動を提供する。ランタイムは、以下の3つの理由でこれを実行することができない。1)タスクは構成要素であるため、いったん実行が中止されると参照するソースコードがなくなる。2)DTSパッケージの実行の多くは、ランタイムの制御外で発生する。タスクはそれ自体の実行を制御する。DTSランタイムはそれらを停止するために、タスクが実行されているスレッドを一時停止する必要がある。3)タスクはどのような時でも、一時中止のできない、影響を受けやすい状態にある可能性がある。
本明細書に記載されたシステムおよび方法は、ブレークポイントにヒットしたことをタスクがランタイムに通知した場合、ブレークポイントを実現させる(expose)ことおよび正しく応答することによってタスクがランタイムと協働できるようにし、かつ、プラグ可能構成要素がそれらの例示中のいつでもブレークポイントを作成できるようにする、メカニズムを提供することによって、既存の実施の欠点を改善することを目的とする。言い換えれば、デバッガは、拡張可能構成要素と協働して、ランタイム時の問題の追跡および解決に使用できるブレークポイントを設定する。
本明細書に記載されたシステムおよび方法は、プラグ可能構成要素でのブレークポイントのデバッグに関連して説明しているが、デバッグ技法は、提示した例の範囲を超えた様々な方法で使用できるものであることを理解されよう。
A.例示的なコンピューティング環境
図1は、本発明が実施できる好適なコンピューティングシステム環境100の一例を示す図である。コンピューティングシステム環境100は好適なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関していかなる制限も示唆することを意図するものではない。また、コンピューティング環境100は、例示的なオペレーティング環境100に示された構成要素のいずれか1つまたはいずれかの組合せに関して、どのような依存性または要件をも有するものとして解釈されるべきではない。
本発明は、多くの他の汎用または特定用途向けのコンピューティングシステム環境または構成で動作可能である。本発明と共に使用するのに好適な場合がある、よく知られたコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのうちのいずれかを含む分散コンピューティング環境、およびその他が含まれるが、これらに限定されるものではない。
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な状況で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データストラクチャなどが含まれる。本発明は、通信ネットワークまたは他のデータ伝送媒体を介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリ記憶デバイスを含むローカルおよびリモートの両方のコンピュータ記憶媒体内に配置することができる。
図1を参照すると、本発明を実施するための例示的システムは、コンピュータ110の形の汎用コンピューティングデバイスを含む。コンピュータ110の構成要素は、処理ユニット120と、システムメモリ130と、システムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121とを含むことができるが、これらに限定されるものではない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかのタイプのバスストラクチャのうちのいずれかであってよい。例を挙げると、こうしたアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、拡張ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バス(メザニンバスとも呼ばれる)が含まれるが、これらに限定されるものではない。
コンピュータ110は、通常、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ110によってアクセス可能な任意の使用可能媒体であってよく、揮発性および不揮発性の媒体、取外し可能および取外し不能の媒体の、両方を含む。例を挙げると、コンピュータ読取り可能媒体はコンピュータ記憶媒体および通信媒体を含むことができるが、これらに限定されるものではない。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データストラクチャ、プログラムモジュール、または他のデータなどの、情報を記憶するための任意の方法または技術で実施された、揮発性および不揮発性、取外し可能および取外し不能の、両方の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは、所望の情報を記憶するために使用可能かつコンピュータ110によってアクセス可能な任意の他の媒体を含むが、これらに限定されるものではない。通信媒体は、典型的には、コンピュータ読取り可能命令、データストラクチャ、プログラムモジュール、または他のデータを、搬送波または他の移送メカニズムなどの変調データ信号で具体化するものであり、任意の情報送達媒体を含む。「変調データ信号」という用語は、その特徴のうちの1つまたは複数を、信号内で情報を符号化するような方式で設定または変更した信号を意味する。例を挙げると、通信媒体は、有線ネットワークまたはダイレクトワイヤード接続などの有線媒体、ならびに、音波、RF、赤外線、および他の無線媒体などの無線媒体を含むが、これらに限定されるものではない。上記のいずれかの組合せも、コンピュータ読取り可能媒体の範囲に含まれるものとする。
システムメモリ130は、ROM 131およびRAM 132などの揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間での情報転送を助ける基本ルーチンを含む、基本入出力システム133(BIOS)は、典型的にはROM 131に格納される。RAM 132は、典型的には、処理ユニット120によって即時アクセス可能であり、かつ/またはその上で現在動作中の、データおよび/またはプログラムモジュールを含む。例を挙げると、図1には、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137が示されているが、これらに限定されるものではない。
コンピュータ110は、他の取外し可能/取外し不能、揮発性/不揮発性の、コンピュータ記憶媒体も含むことができる。単なる例として、図1には、取外し不能不揮発性磁気媒体からの読取りまたはこれへの書込みを行うハードディスクドライブ140と、取外し可能不揮発性磁気ディスク152からの読取りまたはこれへの書込みを行う磁気ディスクドライブ151と、CD−ROMまたは他の光媒体などの取外し可能不揮発性光ディスク156からの読取りまたはこれへの書込みを行う光ディスクドライブ155が示されている。例示的オペレーティング環境で使用可能な、他の取外し可能/取外し不能、揮発性/不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ141は、通常、インターフェース140などの取外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取外し可能メモリインターフェースによってシステムバス121に接続される。
上記で論じ図1に示された、ドライブおよびそれらに関連付けられたコンピュータ記憶媒体は、コンピュータ読取り可能命令、データストラクチャ、プログラムモジュール、およびコンピュータ110に関する他のデータのストレージを提供する。たとえば図1では、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するように示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであるかまたは異なるかの、いずれの場合も可能なことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、少なくとも異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード162、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力デバイスを介して、コンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバスに結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの、他のインターフェースおよびバスストラクチャによって接続することもできる。モニタ191または他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介して、システムバス121に接続される。コンピュータは、モニタに加えて、出力周辺インターフェース195を介して接続可能な、スピーカ197およびプリンタ196などの他の周辺出力デバイスも含むことができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用する、ネットワーク環境で動作可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードであってよく、図1にはメモリ記憶デバイス181のみが示されているが、通常は、コンピュータ110に関して上記で述べた要素のうちの多くまたはすべてが含まれる。示された論理接続には、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれるが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットでよく見られるものである。
LANネットワーキング環境で使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は通常、インターネットなどのWAN 173を介した通信を確立するためのモデム172または他の手段を含む。モデム172は内蔵または外付けであってよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示されたプログラムモジュールまたはその一部を、リモートメモリ記憶デバイスに格納することができる。例を挙げると、図1では、リモートアプリケーションプログラム185がメモリデバイス181上に常駐しているように示されているが、これに限られるものではない。示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用できることを理解されよう。
B.例示的なネットワークコンピューティング環境
前述のコンピュータ環境100は、コンピュータネットワークの一部として配置することができる。一般に、コンピュータに関する上記の記述は、ネットワーク環境内に配置されたサーバコンピュータとクライアントコンピュータの両方に適用する。図2は、本発明が使用可能な、ネットワークを介してクライアントコンピュータと通信しているサーバを備えた、例示的なネットワーク環境を示す図である。図2に示されるように、いくつかのサーバ10a、10bなどが、通信ネットワーク14(LAN、WAN、イントラネット、インターネット、または他のコンピュータネットワークであってよい)を介して、いくつかのクライアントコンピュータ20a、20b、20c、または携帯電話15、陸線電話16、および携帯情報端末17などのコンピューティングデバイスと相互接続される。通信ネットワーク160がたとえばインターネットであるネットワーク環境では、サーバ10は、クライアント20がハイパーテキスト転送プロトコル(HTTP)または無線アプリケーションプロトコル(WAP)などのいくつかの知られたプロトコルのいずれかを介して通信する際に使用する、Webサーバであってよい。各クライアントコンピュータ20は、サーバ10へのアクセスを得るために、ブラウザ180aを備えることができる。同様に、様々なデータを表示および受信するために、携帯情報端末17はブラウザ180bを備え、携帯電話15はブラウザ180cを備えることができる。
オペレーション時に、ユーザ(図示せず)は、プラグ可能構成要素内でブレークポイントのデバッグを実行しているクライアントコンピューティングデバイス上で実行中のコンピューティングアプリケーションと対話することができる。デバッグアクティビティはサーバコンピュータ上に格納され、通信ネットワーク14を介してクライアントコンピューティングデバイスを通じて協働するユーザに送信することができる。ユーザは、クライアントコンピューティングデバイス上のコンピューティングアプリケーションとインターフェースすることによって、デバッグに従事することができる。これらのトランザクションは、クライアントコンピューティングデバイスによって、処理および格納のためにサーバコンピュータへ送ることができる。サーバコンピュータは、プラグ可能構成要素のデバッグに従事するために、コンピューティングアプリケーションをホストすることができる。
したがって、本発明は、ネットワークにアクセスしこれと対話するためのクライアントコンピューティングデバイスと、クライアントコンピュータと対話するためのサーバコンピュータとを有する、コンピュータネットワーク環境で使用可能である。ただし、本明細書に記載されたシステムおよび方法は、様々なネットワークベースアーキテクチャで実施可能であるため、示された例に限定されるものではない。次に、本明細書に記載されたシステムおよび方法について、現在の例示的な実施を参照しながらより詳細に説明しよう。
C.ブレークポイントのデバッグ
サーフェス上のDTS(データ変換サービス)でのデバッグの概念は、他の環境でのそれと同様である。パッケージ作成者は、パッケージの実行を停止し、変数を検査および変更して、実行を続行するための方法を必要とする。プログラマは、ブレークポイントを介して実行を制御し、監視を介して変数の検査および修正を行うことによって、これを実行する。DTSでの異なる点は、実行の多くがランタイムの制御の外にあるパッケージで発生することである。DTSはTask上のインターフェースメソッドへの呼出し間を除き、またTaskのスレッドの中断などの強力な戦術を使用した、Taskへのアクセスまたはその制御を持つことがない。ブレークポイントを設定できる場所にわたる、より詳細な制御が望まれる。したがって、オブジェクトモデルは、好ましくは何の変数、イベント、およびメソッドをブレークポイントターゲットにできるかを記述するための方法をTaskに提供する。インターフェース定義では、デバッグインターフェースを実施することになるエンティティを記述するために、総称「オブジェクト」が使用される。デバッグおよびブレークポイント機能を実現させることを望むオブジェクトモデルにおけるTaskとオブジェクトは、どちらもこれらのインターフェースを使用しなければならないため、これは、熟慮の上でのことである。
例示的な実施では、ユーザはTaskを有するパッケージを作成する。ランタイム中に問題が発生し、プログラマはなぜTaskが自分の考えた通りに動作していないのかを理解しようとする。ブレークポイントは、3行を1行に集約する変換のTask上に設定される。協働するユーザインターフェースを使用することによって、プログラマはその変換の実現されたプロパティおよび変数を見ることができる。変換されている行および結果として生じる実行途中の変換を見ることによって、集約に関する論理が損なわれるのを減らすことができる。
第2の例示的実施では、プログラマは、1つのループ内で実行される2つのTaskを備えたパッケージを有する。第1のTaskは、第2のTaskが使用するグローバル変数を設定する。何からの理由で、ループが部分的にしか完了されていないときに第2のTaskは失敗する。プログラマは、その理由をグローバル変数が無効な値に設定されようとしているからであると考え、疑わしい反復上にあるときにループ上にブレークポイントを設定し、グローバル変数を検査する。プログラマは、疑わしいグローバル変数の値を見つけるまで、その反復の各ステップを実行していく。疑わしい値を見つけると、プログラマはループに入って、第2のTaskが失敗するのを見る。
一般に、ブレークポイントは、タスクがその実施および使用において課題に直面することがないことを意図して設計される。ランタイムは、どのブレークポイントをタスクが実現しているか、およびクライアントがそれらを実行可能であるかどうか、に関するすべての情報を維持し、タスク作成者がほとんど問題なく作業できるようにする。ランタイム時のすべてのブレークポイントの状態を維持することによって、それが正しく実行されていることを知るという追加の利点が与えられる。
例示的な実施に従ってブレークポイントを実現させるために、タスクはIDTSBreakpointSiteを実施することが好ましい。このインターフェースは、IDTSSuspendから導出する。タスクが第1に作成されると、ランタイムはタスク上のIDTSBreakpointSite.AcceptBreakpointManagerを呼び出し、タスクが実現させて、それらのブレークポイントがクライアントによって実行可能になっているかどうかをチェックしたいブレークポイントをランタイムに通知するために使用できる、ブレークポイントマネージャに移る。典型的には、タスクは、AcceptBreakpointManager呼出し中にいくつかのブレークポイントを作成し、その後、実行中にIsBreakpointEnabledを数回呼び出すことになる。
各ブレークポイントは、タスク定義済みおよびタスク範囲指定済み(task−scoped)IDによって識別される。ブレークポイントの実現例は、以下の通りである。
AcceptBreakpointManager(IDTSBreakpointManager*pManager)
{
m_pManager=pManager;
m_pManager->CreateBreakpoint(1,"Break when the task is about to do X", NULL);
}

Execute(...)
{
VARIANT_BOOL isEnabled;
m_pManager->IsBreakpointEnabled(1,&isEnabled);
}
ブレークポイントマネージャは、実行中のブレークポイントの作成および削除などの、より複雑なシナリオをサポートする。さらに、クライアントは、パッケージ内で実現されたすべてのブレークポイントのリスト、またはIDTSPackage上でGetBreakpoints()を呼び出すことによって特に実行可能なもののみのリストを取り出すことができる。集まりの中の各ブレークポイントオブジェクトは、ブレークポイントの記述と、設定されるとタスクを実行中にそのポイントで停止させることになる実行可能フラグとを含む。
図3は、ブレークポイントのデバッグを理解するための、拡張可能構成要素とコンピューティング環境内での通信とを有する、例示的なコンピューティング環境を示すブロック図である。MICROSOFT(登録商標)によってサポートされているDTSは、こうしたコンピューティング環境の一例である。
多くの組織では、企業の意思決定を改善するために、データを集中化する必要がある。ただしそのデータは、様々なフォーマットで、様々な場所に格納することができる。データ変換サービス(DTS)は、異種のソースからのデータを、DTSの接続性によってサポートされる単一または複数の宛先に抽出、変換、および統合することを可能にする、ツールのセットを提供することによって、この不可欠な業務のニーズに対処する。DTSパッケージをグラフィカルに構築するためにDTSツールを使用することによって、またはDTSオブジェクトモデルを使ってパッケージをプログラミングすることによって、組織の特化された業務ニーズに合わせたカスタムデータの動きの解決策を作成することができる。
DTSパッケージとは、DTSツールを使用するかまたはプログラムに基づくかのいずれかでアセンブルされ、かつ、MICROSOFT(登録商標)SQL Server(商標)、SQL Server 2000 Meta Data Services、構造化ストレージファイル、またはMicrosoft Visual Basic(登録商標)のファイルに保存された、接続、DTSタスク、DTS変換、およびワークフロー制約の、組織化された集まりである。一般に、各パッケージには、パッケージが実行されたときに順次または並列に実行される、1つまたは複数のステップが含まれる。実行されると、パッケージは正しいデータソースに接続し、データおよびデータベースオブジェクトをコピーし、データを変換し、他のユーザまたはプロセスにイベントを通知する。パッケージは、編集、パスワードの保護、実行のスケジューリング、およびバージョンごとの取出しが可能である。
DTSパッケージと共に、DTSタスクも存在する。DTSタスクは、パッケージ内で単一のステップとして実行される機能の離散セットである。各タスクは、実行される作業項目を、データの動きおよびデータの変換プロセスの一部として、または実行されるジョブとして定義する。一般に使用されるDTSタスクの例には、1)データのインポートおよびエクスポート、2)データの変換、3)データベースオブジェクトのコピー、ならびに4)他のユーザおよびパッケージとの間でのメッセージの送信および受信、が含まれる。
DTSの構成要素およびオペレーションを完了することが、DTS変換である。DTS変換とは、データが宛先に到達する前に1つのデータに対して適用される、1つまたは複数の機能またはオペレーションのことである。
図3に示されるように、例示的なコンピューティング環境には、クライアント、ランタイム、およびタスクが含まれる。矢印および数字は、クライアント、ランタイム、およびタスクの間の、通信およびオペレーションの順序を示す。1番の矢印によって示される第1の通信はクライアントとランタイムとの間で行われるものであり、クライアントは実行可能ファイルを作成するか、あるいはランタイムにパッケージをロードする。ランタイムはクライアントに応答して、2番の矢印によって示されるようにタスクを作成する。その後タスクは、3番の矢印によって示されるように、適切と思われる場所にブレークポイントを作成し、そのブレークポイントの場所をランタイムに伝達する。実際には、ブレークポイントは、パッケージおよび/または実行可能ファイルが作成された時点でプログラマによって作成される。タスクは、実質上、コンピューティング環境内にブレークポイントを設定し、その実行に備えるだけである。
タスクのブレークポイント設定に応答して、クライアントは、4番の矢印によって示されるように、ブレークポイントの集まりを列挙することでブレークポイントを実行可能にする。この状況では、クライアントはブレークポイントを実行可能にするためにランタイムと通信する。次にクライアントは、5.1番の矢印によって示されるように、ランタイムでパッケージおよび/または実行可能ファイルを実行する。次にランタイムは、5.2番の矢印によって示されるように、実行されたパッケージのタスクを実行する。タスクは実行中に、以前に設定されたブレークポイントに遭遇することがある。この状況では、6番の矢印で示されるように、タスクはブレークポイントとの遭遇をランタイムに伝達する。ランタイムは、7番の矢印で示されるように、ブレークポイント呼出しをクライアントに転送する。これでクライアントは、問題に遭遇したかどうかを判別し、発見された任意の問題の出所を調査するために、ブレークポイントまでの実行を検査する状況になる。クライアントは満足すると、9番の矢印で示されるようにパッケージに関して再開を呼び出す。この呼出しはランタイムに対して実行され、次にランタイムは、10番の矢印で示されるように、すべてのタスクについて再開を呼び出す。
図4は、プラグ可能構成要素でのブレークポイントのデバッグを理解するために実行されるプロセスを示す図である。図に示されるように、プロセスはブロック400で開始されてブロック405へ進み、クライアントはオブジェクトモデルにおいてパッケージを作成する。次にプロセスはブロック410へ進み、ランタイムはタスクを作成する。次にタスクはブロック415でブレークポイントを作成する。このブレークポイント作成に応答して、ブロック420でクライアントはブレークポイントを実行可能にする。クライアントは425でパッケージを実行し、ランタイムはブロック430でこのタスクを実行する。タスクは、設定されたブレークポイントにブロック435で遭遇し、ブレークポイントとの遭遇はブロック440でクライアントに通知される。ランタイムはブロック445でオペレーションの中断を呼び出す。満足すると、クライアントはブロック450でタスクの再開を呼び出し、ランタイムはブロック455でタスクの再開を呼び出す。その後、プロセスはブロック460に進んで終了する。
D.結論
要するに、本明細書に記載されたシステムおよび方法は、プラグ可能構成要素でのブレークポイントのデバッグを提供するものである。ただし、本発明は様々な修正形態および代替の構成が可能であることを理解されよう。本発明を、本明細書に記載された特定の構成に限定する意図はない。反対に、本発明は、本発明の範囲および精神に当てはまるすべての修正形態、代替構成、および均等物をカバーするものと意図される。
本発明は、様々なコンピュータ環境(非無線および無線の両方のコンピュータ環境を含む)、部分的なコンピューティング環境、および実世界環境で実施可能であることも留意されたい。本明細書に記載された様々な技法は、ハードウェアまたはソフトウェア、あるいはその両方の組合せで実施可能である。好ましくは、この技法は、それぞれがプロセッサ、プロセッサによる読取りが可能な記憶媒体(揮発性および不揮発性のメモリおよび/またはストレージ要素を含む)、少なくとも1つの入力デバイス、ならびに少なくとも1つの出力デバイスを含む、プログラム可能コンピュータ上で実行中の、コンピュータプログラム内で実施される。プログラムコードは、前述の機能を実行するためおよび出力情報を生成するために、入力デバイスを使用して入力されたデータに適用される。出力情報は、1つまたは複数の出力デバイスに適用される。各プログラムは、コンピュータシステムと通信するために、高水準の手続き型またはオブジェクト指向のプログラミング言語で実施されることが好ましい。ただしプログラムは、所望であればアセンブリまたはマシン言語で実施することができる。いずれの場合も、言語はコンパイル済みまたは解釈済みの言語であってよい。こうしたコンピュータプログラムは、それぞれ、記憶媒体またはデバイスがコンピュータによって読み取られたときに前述の手順を実行するように、コンピュータを構成および動作するために、汎用または特定用途向けのプログラム可能コンピュータによって読み取り可能な、記憶媒体またはデバイス(たとえばROMまたは磁気ディスク)上に格納されることが好ましい。さらにシステムは、コンピュータプログラムを使用して構成されたコンピュータ読取り可能記憶媒体として実施されるものとみなすことも可能であり、そのように構成された記憶媒体は、特定の事前に定義された方法でコンピュータを動作させる。
以上、本発明の例示的な実施について詳細に述べてきたが、当業者であれば、この例示的な実施形態では、本発明の新規な教示および利点から著しく逸脱することなしに、多くの追加の修正が可能であることを容易に理解されよう。したがって、これらおよびすべてのこうした修正は、本発明の範囲内に含められるものであることが意図される。本発明は、添付の例示的な特許請求の範囲によって、より適切に定義することができる。
本発明に好適な例示的コンピューティング環境を示す概略図である。 例示的なネットワーク化されたコンピューティング環境を示す図である。 プラグ可能構成要素環境においてブレークポイントを実行する場合に実行される、例示的な処理を示すブロック図である。 本明細書に記載されたシステムおよび方法に従ってブレークポイントをデバッグする場合に実行される処理を示す流れ図である。
符号の説明
1 クライアントは実行可能ファイルを作成するか、またはパッケージをロードする
2 ランタイムはタスクを作成し、IDTSBreakpointSiteでAcceptBreakpointManagerを呼び出す
3 タスクはIDTSBreakpointManagerでCreateBreakpointを呼び出すことによって、ブレークポイントを作成する
4 クライアントはIDTSPackageでブレークポイントの集まりを列挙することによって、ブレークポイントを実行可能にする
5.1 クライアントはパッケージを実行する
5.2 ランタイムはタスクを実行する
6 タスクはそのコード内でブレークポイントに遭遇し、IDTSBreakpointManagerでIsBreakpointEnabledを呼び出す。これが実行可能であれば、タスクはOnBreakpointHitを呼び出す
7 ランタイムはOnBreakpointHit呼出しをクライアントに転送する
8 ランタイムはIDTSSuspendを実施するすべてのタスクに関する中断を呼び出す
9 クライアントはパッケージに関する再開を呼び出す
10 ランタイムはすべてのタスクに関する再開を呼び出す

Claims (20)

  1. オブジェクトモデルをデバッグするための方法であって、
    実行環境のデバッグインターフェースを介してブレークポイントのセットを実現させる工程と、
    所定の期間で前記ブレークポイントの状況をチェックする工程と
    中断および再開の要求に応答する工程と
    を具えたことを特徴とする方法。
  2. パッケージ配置構成要素とプラグ可能構成要素との間で通信する工程をさらに具えたことを特徴とする請求項1記載の方法。
  3. 前記デバッグインターフェースによって処理するために入力を受け取る工程をさらに具え、
    前記入力はパッケージを実行または配置するための命令を示すものであることを特徴とする請求項1記載の方法。
  4. 少なくとも1つのタスクにおいて、前記ブレークポイントを設定する工程をさらに具えたことを特徴とする請求項1記載の方法。
  5. 前記タスク実行中に、該タスクによって設定された前記ブレークポイントに遭遇することをさらに具えたことを特徴とする請求項4記載の方法。
  6. 前記ブレークポイントを前記デバッグインターフェースに伝達する工程をさらに具えたことを特徴とする請求項5記載の方法。
  7. 前記設定されたブレークポイントに遭遇する前に、前記タスクの状態を前記デバッグインターフェースによって分析する工程をさらに具えたことを特徴とする請求項6記載の方法。
  8. 前記デバッグインターフェースによって前記タスクを再開する工程をさらに具えたことを特徴とする請求項7記載の方法。
  9. コンピュータに指示するための命令を有するコンピュータ読取り可能媒体であって、
    実行環境のデバッグインターフェースを介してブレークポイントのセットを実現させる工程と、
    所定の期間で前記ブレークポイントのセットの状況をチェックする工程と、
    中断および再開の要求に応答する工程と
    を具えたことを特徴とするコンピュータ読取り可能媒体。
  10. オブジェクトモデルをデバッグするための方法であって、
    前記オブジェクトモデルの1つまたは複数の構成要素と通信するインターフェースマネージャを提供する工程と、
    ブレークポイントの場所を決定する工程と、
    前記ブレークポイントに遭遇するようにランタイムを実行する工程と
    を具えたことを特徴とする方法。
  11. パッケージを実行する工程をさらに具えたことを特徴とする請求項10記載の方法。
  12. 前記パッケージの実行の結果として、少なくとも1つのタスクを実行する工程をさらに具えたことを特徴とする請求項11記載の方法。
  13. 前記決定するステップは、前記インターフェースマネージャによってブレークポイントを設定する工程を具えたことを特徴とする請求項10記載の方法。
  14. ブレークポイントに遭遇すると、前記ブレークポイントを含むオブジェクトモデル構成要素を中断する工程をさらに具えたことを特徴とする請求項10記載の方法。
  15. ランタイムの問題が存在するかどうかを判別するために、中断中に前記オブジェクトモデル構成要素を分析する工程をさらに具えたことを特徴とする請求項14記載の方法。
  16. 中断されたオブジェクトモデル構成要素を再開する工程をさらに具えたことを特徴とする請求項14記載の方法。
  17. コンピュータに指示するためのコンピュータ読取り可能命令を有するコンピュータ読取り可能媒体であって、
    オブジェクトモデルの1つまたは複数の構成要素と通信するインターフェースマネージャを提供する工程と、
    ブレークポイントの場所を決定する工程と、
    前記ブレークポイントに遭遇するようにランタイムを実行する工程と
    を具えたことを特徴とするコンピュータ読取り可能媒体。
  18. プラグ可能構成要素においてブレークポイントをデバッグするためのシステムであって、
    構成要素の挙動を観察するためおよび構成要素を制御するために、ランタイム中に前記プラグ可能構成要素と通信することが可能なデバッグインターフェースと、
    ランタイム時にブレークポイントに遭遇すると、前記デバッグインターフェースが、プラグ可能構成要素のオペレーションを観察するために、前記プラグ可能構成要素のオペレーションを中断および/または再開することが可能であるように、前記プラグ可能構成要素内に設定されるブレークポイントと
    を具えたことを特徴とするシステム。
  19. 前記デバッグインターフェースは、前記プラグ可能構成要素内に前記ブレークポイントを設定することを特徴とする請求項18記載のシステム。
  20. 前記デバッグインターフェースは、ランタイム時および中断時に前記プラグ可能構成要素の状態を表示することを特徴とする請求項19記載のシステム。

JP2004178867A 2003-06-20 2004-06-16 プラグ可能構成要素におけるブレークポイントのデバッグ Pending JP2005011342A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/600,066 US7162664B2 (en) 2003-06-20 2003-06-20 Debugging breakpoints on pluggable components

Publications (2)

Publication Number Publication Date
JP2005011342A true JP2005011342A (ja) 2005-01-13
JP2005011342A5 JP2005011342A5 (ja) 2007-08-02

Family

ID=33418561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004178867A Pending JP2005011342A (ja) 2003-06-20 2004-06-16 プラグ可能構成要素におけるブレークポイントのデバッグ

Country Status (5)

Country Link
US (1) US7162664B2 (ja)
EP (1) EP1489512A3 (ja)
JP (1) JP2005011342A (ja)
KR (1) KR101004543B1 (ja)
CN (1) CN100590604C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019537150A (ja) * 2016-12-05 2019-12-19 ナグラビジョン エス アー セルフデバッギング
WO2023053641A1 (ja) * 2021-09-28 2023-04-06 パナソニックIpマネジメント株式会社 作成支援方法、プログラム及び作成支援システム

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406625B2 (en) * 2004-08-17 2008-07-29 International Business Machines Corporation Protecting a code range in a program from breakpoints
US8639652B2 (en) * 2005-12-14 2014-01-28 SAP France S.A. Apparatus and method for creating portable ETL jobs
CN100464312C (zh) * 2006-08-25 2009-02-25 上海普元信息技术有限责任公司 构件化软件系统中实现非Java构件的调试的方法
TW200846904A (en) * 2007-05-24 2008-12-01 Via Tech Inc Method and system for parsing the content information of a memory device
US20080307397A1 (en) * 2007-06-08 2008-12-11 Bill Angell Program Analysis by Partial Emulation
US7979847B2 (en) * 2007-09-28 2011-07-12 Microsoft Corporation Visual debugger for declarative/data-flow applications
US8196140B2 (en) * 2008-01-11 2012-06-05 Microsoft Corporation Service function redirection for avoiding function evaluation blockages
US7971100B2 (en) * 2008-01-22 2011-06-28 Microsoft Corporation Failure location detection using types in assembly files
US20090300154A1 (en) * 2008-05-29 2009-12-03 International Business Machines Corporation Managing performance of a job performed in a distributed computing system
US20100095281A1 (en) * 2008-10-14 2010-04-15 Riverside Research Institute Internal Function Debugger
US8370807B2 (en) * 2009-03-12 2013-02-05 Microsoft Corporation Debugging for runtime type systems
CN101971562B (zh) 2009-03-20 2015-03-25 华为技术有限公司 控制自动运行过程执行的方法、装置及系统
US8122292B2 (en) * 2009-08-19 2012-02-21 Oracle International Corporation Debugging of business flows deployed in production servers
US8806446B2 (en) * 2010-03-22 2014-08-12 Analog Devices, Inc. Methods and apparatus for debugging programs in shared memory
US8429622B2 (en) * 2010-04-15 2013-04-23 Oracle International Corporation Business process debugger with parallel-step debug operation
US9141422B2 (en) 2010-05-18 2015-09-22 Microsoft Technology Licensing, Llc Plug-in task scheduler
US8843899B2 (en) 2010-10-29 2014-09-23 International Business Machines Corporation Implementing a step-type operation during debugging of code using internal breakpoints
US8806447B2 (en) * 2010-10-29 2014-08-12 International Business Machines Corporation Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints
US9015676B2 (en) 2010-10-29 2015-04-21 International Business Machines Corporation Varying removal of internal breakpoints during debugging of code
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9274931B2 (en) * 2013-05-06 2016-03-01 International Business Machines Corporation Inserting implicit sequence points into computer program code to support debug operations
CN103298013B (zh) * 2013-06-24 2016-08-10 京信通信系统(中国)有限公司 一种进行业务恢复的方法及装置
US9507691B2 (en) 2014-01-10 2016-11-29 International Business Machines Corporation Conditional component breakpoint setting system and method
US20160371166A1 (en) * 2015-06-19 2016-12-22 International Business Machines Corporation Stream-based breakpoint for too many tuple creations
CN105260316A (zh) * 2015-11-16 2016-01-20 浪潮软件股份有限公司 一种软件系统动态测试的方法、装置及系统
US10310960B2 (en) 2016-06-02 2019-06-04 International Business Machines Corporation Debugging for SQL statement
US10261885B2 (en) * 2016-11-02 2019-04-16 Servicenow, Inc. Debug event handling
US10255160B2 (en) 2016-11-23 2019-04-09 Microsoft Technology Licensing, Llc. Data breakpoint with compacting garbage collection
CN109117381A (zh) * 2018-10-24 2019-01-01 北京奇虎科技有限公司 处理任务的调测方法及装置
KR101995176B1 (ko) * 2018-11-26 2019-07-01 한국과학기술원 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003504950A (ja) * 1999-07-09 2003-02-04 カナル プラス ソシエテ アノニム アプリケーションの実行および試験

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4635193A (en) * 1984-06-27 1987-01-06 Motorola, Inc. Data processor having selective breakpoint capability with minimal overhead
EP0470322B1 (en) * 1990-08-07 1996-04-03 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Message-based debugging method
JP3372106B2 (ja) * 1993-06-21 2003-01-27 株式会社東芝 プログラムデバッグ装置
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5815653A (en) * 1995-11-13 1998-09-29 You; Lawrence L. Debugging system with portable debug environment-independent client and non-portable platform-specific server
US6324683B1 (en) 1996-02-23 2001-11-27 International Business Machines Corporation System, method and program for debugging external programs in client/server-based relational database management systems
US6249907B1 (en) * 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
US6598178B1 (en) * 1999-06-01 2003-07-22 Agere Systems Inc. Peripheral breakpoint signaler
US6957421B2 (en) * 2001-01-26 2005-10-18 Hewlett-Packard Development Company, L.P. Providing debugging capability for program instrumented code
CA2345416C (en) * 2001-04-27 2005-05-03 Ibm Canada Limited-Ibm Canada Limitee High performance debugging in a message flow environment
US6836857B2 (en) * 2001-10-18 2004-12-28 Sun Microsystems, Inc. Mechanism for debugging a computer process
US7225431B2 (en) * 2002-10-24 2007-05-29 International Business Machines Corporation Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003504950A (ja) * 1999-07-09 2003-02-04 カナル プラス ソシエテ アノニム アプリケーションの実行および試験

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019537150A (ja) * 2016-12-05 2019-12-19 ナグラビジョン エス アー セルフデバッギング
JP7042270B2 (ja) 2016-12-05 2022-03-25 ナグラビジョン エス アー セルフデバッギング
WO2023053641A1 (ja) * 2021-09-28 2023-04-06 パナソニックIpマネジメント株式会社 作成支援方法、プログラム及び作成支援システム

Also Published As

Publication number Publication date
CN100590604C (zh) 2010-02-17
KR101004543B1 (ko) 2011-01-03
KR20040111141A (ko) 2004-12-31
US7162664B2 (en) 2007-01-09
CN1573713A (zh) 2005-02-02
EP1489512A2 (en) 2004-12-22
US20040268183A1 (en) 2004-12-30
EP1489512A3 (en) 2009-03-18

Similar Documents

Publication Publication Date Title
JP2005011342A (ja) プラグ可能構成要素におけるブレークポイントのデバッグ
US9064049B2 (en) Remote debugging of server side code without blocking or high-level privileges
US7478366B2 (en) Debugger and method for debugging computer programs across multiple programming languages
US8645938B2 (en) System and method for replacing code
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
EP2359247B1 (en) Transforming user script code for debugging
US7770154B2 (en) Lightweight highly available infrastructure to trace program execution
US9003367B2 (en) Specific debug trace collecting
US20040205720A1 (en) Augmenting debuggers
US6698016B1 (en) Method for injecting code into another process
EP2386951A1 (en) Failsafe mechanism for dynamic instrumentation of software using callbacks
US10545852B2 (en) Diagnostics of state transitions
US8677321B2 (en) User-space probe based debugging
JP2004086910A (ja) コンピュータ・プログラムをデバックするための方法、システムおよびソフトウェア・プロダクト
US6493834B1 (en) Apparatus and method for dynamically defining exception handlers in a debugger
US7322027B2 (en) Detecting termination and providing information related to termination of a computer system process
US9158935B2 (en) Automatic mediation of resource access in mobile applications
US7322026B2 (en) Scoring assertions
US20080127119A1 (en) Method and system for dynamic debugging of software
US6957421B2 (en) Providing debugging capability for program instrumented code
US20080127118A1 (en) Method and system for dynamic patching of software
US20050114738A1 (en) Systems and methods for monitoring object activity through an external agent using a proxy object
US20070250814A1 (en) Debugging in an operating system with multiple subsystems
US8104019B2 (en) Debugging in an operating system with multiple subsystems
US11579954B2 (en) Data collecting in issue tracking systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070618

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100917

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101215

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111124

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111219

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120113

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701