"コンピュータに、アプリケーションプログラムの一部分に対応するソースコードを修正して得られるソースコードに含まれる静的変数を、大域変数に変更し、前記アプリケーションプログラムの処理により前記静的変数の変数値が格納されたアドレスと、前記大域変数と、を関連付けて記憶手段に記憶し、前記アプリケーションプログラムの処理において前記アプリケーションプログラムの前記一部分が呼び出された場合に、前記静的変数を前記大域変数に置き換えて得られるソースコードをコンパイルして得られるプログラムが実行されるように設定し、前記アプリケーションプログラムの処理において前記大域変数が呼び出された場合に、前記大域変数と関連付けられて前記記憶手段に記憶された前記アドレスから変数値が読み出されるように設定する、処理を実行させることを特徴とするデバッグ支援プログラム。前記大域変数は、ユニークな名称が付される、ことを特徴とする請求項1に記載のデバッグ支援プログラム。前記一部分に対応するソースコードを修正する処理は、前記ソースコードにおける手続きの名称をユニークな名称に変更する処理であり、前記設定する処理は、前記ソースコードにおける前記手続きが呼び出された場合に、前記ユニークな名称の手続きにブランチさせる設定を行う処理を含む、ことを特徴とする請求項1又は請求項2に記載のデバッグ支援プログラム。コンピュータが、アプリケーションプログラムの一部分に対応するソースコードを修正して得られるソースコードに含まれる静的変数を、大域変数に変更し、前記アプリケーションプログラムの処理により前記静的変数の変数値が格納されたアドレスと、前記大域変数と、を関連付けて記憶手段に記憶し、前記アプリケーションプログラムの処理において前記アプリケーションプログラムの前記一部分が呼び出された場合に、前記静的変数を前記大域変数に置き換えて得られるソースコードをコンパイルして得られるプログラムが実行されるように設定し、前記アプリケーションプログラムの処理において前記大域変数が呼び出された場合に、前記大域変数と関連付けられて前記記憶手段に記憶された前記アドレスから変数値が読み出されるように設定する、処理を実行することを特徴とするデバッグ方法。第1の装置と、アプリケーションプログラムを実行する第2の装置と、を含むデバッグ支援システムであって、前記第1の装置が、前記アプリケーションプログラムのうちの一部のプログラムに対応するソースコードを修正して得られるソースコードに含まれる静的変数を、大域変数に変更する変更手段と、変更後のソースコードをコンパイルして得られる修正プログラムを、前記第2の装置に送信する送信手段と、を含み、前記第2の装置が、前記アプリケーションプログラムの処理により前記静的変数が格納されたアドレスと、前記大域変数と、を関連付ける関連付け手段と、前記アプリケーションプログラムの処理において前記一部のプログラムが呼び出された場合に、前記静的変数を前記大域変数に置き換えた前記修正プログラムが実行されるように設定する設定手段と、を含む、ことを特徴とするデバッグ支援システム。しかし、従来のアプリケーションを動的に修正する技術では、動的にリンクを生成して修正箇所を呼び出すものの、修正箇所関数手続き内にネストされた静的変数の値が継承されないという問題点がある。そこで、本発明の一側面として、アプリケーションの動的な修正において、修正箇所に含まれる静的変数の値を継承可能とすることを目的とする。コンピュータが、アプリケーションプログラムの一部分に対応するソースコードを修正して得られるソースコードに含まれる静的変数を、大域変数に変更し、アプリケーションプログラムの処理により静的変数の変数値が格納されたアドレスと、大域変数と、を関連付けて記憶手段に記憶する。また、コンピュータが、アプリケーションプログラムの処理においてアプリケーションプログラムの一部分が呼び出された場合に、静的変数を大域変数に置き換えて得られるソースコードをコンパイルして得られるプログラムが実行されるように設定する。さらに、コンピュータが、アプリケーションプログラムの処理において大域変数が呼び出された場合に、大域変数と関連付けられて記憶手段に記憶されたアドレスから変数値が読み出されるように設定する。アプリケーションの動的な修正において、修正箇所に含まれる静的変数の値を継承することができる。以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。本実施形態でデバッグ対象となるアプリケーションプログラムは、複数のソースコードをコンパイルして得られる複数のプログラム部分により構成される。各プログラム部分が呼び出されると、各プログラム部分に応じた処理が実行される。本実施形態では、アプリケーションの動的な修正において、静的変数の値を継承するために、デバッガとして動作するコンピュータが次のような処理を実行する。まず、コンピュータが、デバッグ対象であるアプリケーションのうちの修正されたソースコードに基づいてダイナミックリンクライブラリを生成し、生成したダイナミックリンクライブラリについて、静的変数を大域変数に置き換える処理を行なう。ここで、静的変数とは、例えば、C言語におけるstatic変数など、アプリケーションが終了するまで値が保持される変数である。一方、大域変数とは、例えば、C言語におけるextern変数など、他のファイルなどで定義された変数を使用するために宣言する外部変数である。また、コンピュータが、静的変数を保持する領域の実際のアドレス実アドレスと大域変数とを関連付けて、アプリケーションに対してダイナミックライブラリをリンクする。そして、コンピュータが、アプリケーションについて、ダイナミックリンクライブラリの手続きが実行されるように変更する。次に、本実施形態の一例について説明する。アプリケーションの開発を支援するツールとして、統合開発環境IntegratedDevelopmentEnvironmentが存在する。統合開発環境は、ソースコードの編集、ソースコードの管理、アプリケーションのビルド方法の管理、ビルドの実行、アプリケーションの実行、デバッグ作業のためのデバッガなどの機能を持つ。デバッガは、利用者の指示に応答して、アプリケーションの停止再開や、変数の値の参照変更などを行うことができる。デバッグ対象となるアプリケーションは、C言語、FORTRAN言語などの高級言語で記述され、このような高級言語で記述されたプログラムを対象とするデバッグが可能なデバッガはソースレベルデバッガと呼ばれている。ここでは、デバッガとして、高級言語であるC言語を扱う、ソースレベルデバッガを前提とする。図1は、アプリケーション100を実行するホストコンピュータ200第2の装置と、ホストコンピュータ200を操作する少なくとも1台の利用者端末300第1の装置と、を有するコンピュータシステムにより構築した、統合開発環境400の一例を示す。統合開発環境400のデバッガは、ホストコンピュータ200に備えられた内部デバッガ410及び外部デバッガ420と、利用者端末300に備えられたデバッガ制御装置430と、を有する。内部デバッガ410は、アプリケーション100と一体化されたモジュールであって、外部デバッガ420からの指示に応答して、アプリケーション100の実行停止などを制御する。外部デバッガ420は、アプリケーション100とは別のプロセスとして起動させるモジュールであって、デバッガ制御装置430からの指示に応答して、内部デバッガ410を介してアプリケーション100にアタッチして制御する。デバッガ制御装置430は、利用者へのユーザインターフェースを提供するモジュールであって、利用者の指示に応答して外部デバッガ420に各種指示などを送信する。ここで、ホストコンピュータ200及び利用者端末300は、図2に示すように、メモリA、CPUCentralProcessingUnitなどのプロセッサB、ハードディスクC、ドライブ装置D及び通信装置Eを有する。メモリA、プロセッサB、ハードディスクC、ドライブ装置D及び通信装置Eは、シリアルATAATAttachmentなどのバスFにより相互に接続される。ドライブ装置Dは、例えば、CD-ROMCompactDiskReadOnlyMemory、DVD-ROMDigitalVersatileDiskReadOnlyMemoryなどのリムーバブルディスクGからデータを読み込む。リムーバブルディスクGに代えて、フラッシュメモリを内蔵したUSBUniversalSerialBusメモリなどを使用することもできる。通信装置Eは、ホストコンピュータ200と利用者端末300とを接続する、例えば、NICNetworkInterfaceCardなどである。図3は、デバッガを使用したアプリケーション100のデバッグ作業の大まかな手順を示す。なお、デバッグ作業の前提として、デバッグ対象であるアプリケーション100がビルド済みであるものとする。ステップ1図ではS1と略記する。以下同様。では、利用者が、デバッガによりアプリケーション100を実行させ、その動作を検証する。なお、デバッグ作業は、アプリケーション100の途中から開始することも可能である。ステップ2では、利用者が、アプリケーション100の動作検証結果に基づいて、アプリケーション100にバグがあるか否かを判断する。そして、利用者がアプリケーション100にバグがあると判断すればステップ3の手順へと進める一方Yes、利用者がアプリケーション100にバグがないと判断すればデバッグ作業を終了させるNo。ステップ3では、利用者が、例えば、変数の値の参照変更などを通して、バグの原因を究明する。ステップ4では、利用者が、ソースコードを修正する。ステップ5では、利用者によるアプリケーション100の再ビルド指示に応答して、デバッガが、ソースコードの修正部分を再ビルドし、これを実行中のアプリケーション100に適用する。その後、ステップ1以降の手順を繰り返す。以上説明したデバッグ作業においては、ステップ5における手順を除き、公知のデバッガを使用したデバッグ手法と同様の処理手順で実行可能である。ステップ1~4のデバッグ処理手順は、デバッグ処理を自動化するツールをコンピュータに実行させても良い。また、ステップ5の再ビルド指示は、デバッグ処理を実行化するツールの処理により行なわれるものであっても良い。図4は、図3におけるステップ5の処理、即ち、修正したソースコードを実行中のアプリケーション100に適用する方法の概念を示す。統合開発環境400に含まれるビルダコンパイラ440は、利用者が修正したソースコード500から、パッチとして機能するダイナミックリンクライブラリ600を生成する。ソースコード500は、アプリケーション100の動作を規定するプログラムコードである。ソースコード500で規定される実体には、大域変数、局所変数、大域手続き、局所手続きが含まれる。局所変数としては、大別すると、図5に示すように、ファイルに局所的な変数X、手続きに局所的な変数A,Y、ブロックに局所的な変数B,Zが存在する。手続き又はブロックに局所的な変数には、記憶クラスとしてauto自動とstatic静的が存在する。auto変数自動変数は、参照されるたびに生成初期化されるが、static変数静的変数は、アプリケーション100の起動から終了までの間に1つの実体のみが存在する。ダイナミックリンクライブラリ600は、アプリケーション100の一部となるロードモジュールであって、大域変数、局所変数、大域手続き、局所手続きなどの実体や、変数名、手続き名などの名称情報リロケーション情報及びデバッグ情報を含む。ビルダコンパイラ440により生成されたダイナミックリンクライブラリ600は、デバッガ制御装置430及び内部デバッガ420により、内部デバッガ410に受け渡される。内部デバッガ410は、ダイナミックリンカ450を介して、ダイナミックリンクライブラリ600をアプリケーション100のロードモジュール110にダイナミックリンクする。次に、図6~図9のフローチャートを参照し、修正したソースコード500を実行中のアプリケーション100に適用する処理アプリケーション適用処理の具体例について説明する。図6は、アプリケーション適用処理のメインルーチンの一例を示す。ステップ11では、ビルダコンパイラ440が、修正したソースコード500からパッチとしてのダイナミックリンクライブラリ600をビルドする、後述するサブルーチンを実行する。ステップ12では、デバッガ制御装置430及び外部デバッガ420が協働して、ビルダコンパイラ440により生成されたダイナミックリンクライブラリ600を内部デバッガ410に転送する、後述するサブルーチンを実行する。ステップ13では、内部デバッガ410が、ダイナミックリンクライブラリ600を実行中のアプリケーション100に適用する、後述するサブルーチンを実行する。図7は、ビルダコンパイラ440が実行するサブルーチンの一例を示す。ステップ21では、ビルダコンパイラ440が、アプリケーション100に関するすべてのソースコード500の中から、利用者によって修正されたソースコード500を特定する。ソースコード500の特定は、公知の差分ビルド手法と同様に、各ソースコード500のタイムスタンプと、各ソースコード500をコンパイルしたオブジェクトコードのタイムスタンプと、を比較することで容易に実現することができる。なお、ソースコード500の特定単位としては、ファイル単位であってもよい。ステップ22では、ビルダコンパイラ440が、アプリケーション100のパッチとして、ステップ21で特定されたソースコード500から、ダイナミックリンクライブラリ600を生成する。このとき、ビルダコンパイラ440は、修正されたソースコード500について、静的変数をユニークな名称を付した大域変数に置き換えると共に、大域手続きをユニークな名称を付した大域手続きに置き換えて、ダイナミックリンクライブラリ600を生成する。ここで、静的変数名及び大域手続き名をユニークな名称に置き換える理由としては、アプリケーション100における静的変数及び大域手続きの独自性を保証するためである。なお、ダイナミックリンクライブラリ600の生成は、一時的なソースコード500において静的変数及び大域手続きの置き換えを行って実行してもよく、また、静的変数及び大域手続きの置き換えを実際に行わずに、置き換えたものとみなして実行してもよい。ここで、具体例を使用して、ソースコード500における静的変数及び大域手続きの置き換え処理について説明する。図5に示すソースコードにおいて、静的変数は、ファイルに局所的な変数X、手続きに局所的な変数Y、ブロックに局所的な変数Zであり、大域手続きは、手続きfuncである。静的変数X、Y及びZについて、図10に示すように、staticをexternに置き換えて大域変数化すると共に、大域変数化された変数X、Y及びZをユニークな名称を付した名称に置き換える。また、大域手続きfuncについて、ユニークな名称XXfuncに置き換える。なお、静的変数及び大域手続きの置き換えに際しては、図10に示すような名称への置き換えに限らず、予め決められた規則に則った名称への置き換えでもよい。図8は、デバッガ制御装置430及び外部デバッガ420が協働して実行するサブルーチンの一例を示す。ステップ31では、デバッガ制御装置430及び外部デバッガ420が協働して、ビルダコンパイラ440により生成されたダイナミックリンクライブラリ600をアプリケーション100の内部デバッガ410に転送する。具体的には、デバッガ制御装置430が、ダイナミックリンクライブラリ600を外部デバッガ420に転送すると共に、外部デバッガ420が、デバッガ制御装置430から転送されたダイナミックリンクライブラリ600を内部デバッガ410に転送する。図9は、内部デバッガ410が実行するサブルーチンの一例を示す。ステップ41では、内部デバッガ410が、大域変数化された静的変数について、DWARF情報などのデバッグ情報を参照し、実行中のアプリケーション100における実アドレスを求める。ステップ42では、内部デバッガ410が、ステップ41で求めた静的変数の実アドレスと大域変数とを関連付けてダイナミックリンカ450に伝え、ダイナミックリンク処理でダイナミックリンクライブラリ600を利用可能とする。ステップ43では、内部デバッガ410が、ダイナミックリンカ450を呼び出し、アプリケーション100のロードモジュール110に対してダイナミックリンクライブラリ600をダイナミックリンクする。このダイナミックリンクにより、ダイナミックリンクライブラリ600中の大域変数の参照、大域変数化された静的変数の参照ができるようになる。ステップ44では、内部デバッガ410が、実行中のアプリケーション100に含まれる手続きについて、パッチであるダイナミックリンクライブラリ600に含まれている大域手続きが実行されるように変更する。具体的には、内部デバッガ410は、実行中のアプリケーション100の手続きを、ダイナミックリンクライブラリ600の大域手続きにブランチするように変更する。これにより、ダイナミックリンクライブラリ600において定義されている大域手続きの参照が可能となる。かかるデバッガによれば、実行中のアプリケーション100を一時停止した状態で、アプリケーション100のバグを解消するためにソースコード500を修正すると、修正したソースコード500から、アプリケーション100にダイナミックリンク可能なダイナミックリンクライブラリ600が生成される。このとき、修正したソースコード500について、局所的な静的変数がユニークな名称の大域変数に置き換えられると共に、大域手続きがユニークな名称の手続きに書き換えられて、ダイナミックリンクライブラリ600が生成される。また、生成されたダイナミックリンクライブラリ600が、次のようにして、実行中のアプリケーション100に適用される。即ち、大域変数化された静的変数の実アドレスと大域変数とを関連付けて、ダイナミックリンカ450を呼び出すことで、大域変数が静的変数の値を継承できるようにする。さらに、実行中のアプリケーション100の手続きについて、ダイナミックリンクライブラリ600の大域手続きが実行されるように変更することで、アプリケーション100の手続きに代えて、ダイナミックリンクライブラリ600の大域的手続きが実行されるようにする。ここで、大域変数が静的変数の値を継承できる仕組みについて説明する。図5に示すソースコード500について、静的変数Xの実アドレスが、XXXXであると仮定する。このソースコード500における静的変数Xを大域変数化することで、図10に示すように、静的変数Xは大域変数X_001となる。そして、静的変数Xについて、その実アドレスXXXXと大域変数X_001とが関連付けられているので、大域変数X_001を参照することは、アドレスXXXXを参照することと同一となる。アドレスXXXXは静的変数Xの実アドレスであるため、大域変数X_001を参照することは、静的変数Xを参照することとなり、静的変数Xの値を継承することができる。そして、一時停止していたアプリケーション100の実行を再開すると、ダイナミックリンクライブラリ600の手続きが実行されるようにアプリケーション100が変更されているため、修正したソースコード500により規定した手続きが実行されることとなる。このため、動的なアプリケーションの修正を実現することができる。従って、アプリケーションの動的な修正において、静的変数の値を継承することができるようになる。なお、本実施形態は、ホストコンピュータ200と少なくとも1台の利用者端末300とを有するコンピュータシステムに限らず、PCPersonalComputer、WSWorkStationなどのコンピュータシステムにも適用可能である。また、高級言語としては、C言語に限らず、静的変数、大域変数などを扱うことができる、C言語、FORTRAN言語などにも適用可能である。"