コントローラ用の制御プログラムをデバッグするためのデバッグ装置であって、シミュレーションプログラムとデバッグプログラムをコンピュータのOS上で実行させることで実現され、前記シミュレーションプログラムは、前記コントローラの機能をエミュレートするものであって、前記コントローラが制御プログラムを実行する機能をエミュレートするタスクスレッドと、前記コントローラが外部装置との通信を行う機能をエミュレートする通信スレッドとを含む1つのプロセスとして、前記OS上で動作するものであり、前記デバッグプログラムは、前記コンピュータを、デバッグ対象とする制御プログラムを前記シミュレーションプログラムに与えて、前記シミュレーションプログラムを動作させる動作手段、前記OSが提供するデバッグ用の命令を使って、前記制御プログラムのブレークポイントで前記シミュレーションプログラムのプロセスを一時停止する停止手段、および、前記停止手段による前記プロセスの一時停止後に、前記プロセスにおける前記通信スレッドの動作を再開する再開手段、として機能させるものである、ことを特徴とするデバッグ装置。前記シミュレーションプログラムの少なくともタスクスレッドの部分は、前記コントローラのファームウェアのソースコードを利用して作成されたものであることを特徴とする請求項1に記載のデバッグ装置。コントローラ用の制御プログラムをデバッグするためのプログラムであって、コンピュータのOS上で実行されるシミュレーションプログラムとデバッグプログラムを含み、前記シミュレーションプログラムは、前記コントローラの機能をエミュレートするものであって、前記コントローラが制御プログラムを実行する機能をエミュレートするタスクスレッドと、前記コントローラが外部装置との通信を行う機能をエミュレートする通信スレッドとを含む1つのプロセスとして、前記OS上で動作するものであり、前記デバッグプログラムは、前記コンピュータに、デバッグ対象とする制御プログラムを前記シミュレーションプログラムに与えて、前記シミュレーションプログラムを動作させる動作ステップと、前記OSが提供するデバッグ用の命令を使って、前記制御プログラムのブレークポイントで前記シミュレーションプログラムのプロセスを一時停止する停止ステップと、前記停止ステップによる前記プロセスの一時停止後に、前記プロセスにおける前記通信スレッドの動作を再開する再開ステップと、を実行させることを特徴とするプログラム。請求項3に記載のプログラムを記録していることを特徴とするコンピュータ読取可能な記録媒体。コントローラ用の制御プログラムをデバッグするためのデバッグ方法であって、コンピュータが、シミュレーションプログラムとデバッグプログラムを前記コンピュータのOS上で実行することで実現され、前記シミュレーションプログラムは、前記コントローラの機能をエミュレートするものであって、前記コントローラが制御プログラムを実行する機能をエミュレートするタスクスレッドと、前記コントローラが外部装置との通信を行う機能をエミュレートする通信スレッドとを含む1つのプロセスとして、前記OS上で動作するものであり、前記コンピュータが、前記デバッグプログラムを実行することにより、デバッグ対象とする制御プログラムを前記シミュレーションプログラムに与えて、前記シミュレーションプログラムを動作させる動作ステップと、前記コンピュータが、前記デバッグプログラムを実行することにより、前記OSが提供するデバッグ用の命令を使って、前記制御プログラムのブレークポイントで前記シミュレーションプログラムのプロセスを一時停止する停止ステップと、前記コンピュータが、前記デバッグプログラムを実行することにより、前記停止ステップによる前記プロセスの一時停止後に、前記プロセスにおける前記通信スレッドの動作を再開する再開ステップと、を有することを特徴とするデバッグ方法。本発明は、コントローラの制御プログラムのデバッガを簡単に実現するための技術を提供することを目的とする。上記目的を達成するために、本発明は以下の構成を採用する。本発明のデバッグ装置は、コントローラ用の制御プログラムをデバッグするためのデバッグ装置であって、シミュレーションプログラムとデバッグプログラムをコンピュータのOSOperatingSystem上で実行させることで実現され、前記シミュレーションプログラムは、前記コントローラの機能をエミュレートするものであって、前記コントローラが制御プログラムを実行する機能をエミュレートするタスクスレッドと、前記コントローラが外部装置との通信を行う機能をエミュレートする通信スレッドとを含む1つのプロセスとして、前記OS上で動作するものであり、前記デバッグプログラムは、前記コンピュータを、デバッグ対象とする制御プログラムを前記シミュレーションプログラムに与えて、前記シミュレーションプログラムを動作させる動作手段、前記OSが提供するデバッグ用の命令を使って、前記制御プログラムのブレークポイントで前記シミュレーションプログラムのプロセスを一時停止する停止手段、および、前記停止手段による前記プロセスの一時停止後に、前記プロセスにおける前記通信スレッドの動作を再開する再開手段、として機能させるものである、ことを特徴とする。本発明のデバッグ装置では、シミュレーションプログラムはコントローラ例えばPLCの機能をエミュレートするだけの非常にシンプルなものであり、デバッグ機能は有していない。本発明のデバッグ装置では、デバッグ機能はデバッグプログラムが有しており、デバッグプログラムがOSのサービスデバッグ用の命令を使ってシミュレーションプログラムのプロセスを一時停止するという方法により、デバッグを実現する。このようなプログラム構成を採用することにより、PLCの新製品が出たり、PLCの仕様が変更されたりしても、シミュレーションプログラムの部分を入れ替えるだけで済み、デバッグプログラムの部分は流用可能であるため、デバッグ装置の開発工数や開発工数を従来に比べて低減することが期待できる。ただし、上記のようなプログラム構成においては、デバッグプログラムがシミュレーションプログラムのプロセスを単純に一時停止すると、タスクスレッドにより実行されている制御プログラムの動作が停止するだけでなく、通信スレッドのように外部装置との通信を行う機能も停止してしまう。これでは、シミュレーションプログラムによりエミュレートされているPLC以下、仮想PLCと称する。の状態や内部変数などを外部から確認することができず、制御プログラムのデバッグを行うことができない。そこで、本発明では、シミュレーションプログラムのプロセスを一時停止した後に、通信スレッドの動作を強制的に再開させるという構成上の工夫を採用している。これにより、デバッグプログラムなどの外部のプロセスが、通信スレッドを通じて仮想PLCの状態や内部変数などの情報を取得することが可能となるため、制御プログラムのデバッグ作業を遂行することができる。ところで、PLC自体の基本機能制御プログラムを実行する機能、外部装置と通信する機能なども、PLCのマイクロプロセッサ上で動作するプログラムで実現されているのが一般的である以下、PLC自体の基本機能を実現するプログラムを、スレーブ装置等の制御のためにPLCに実行させる制御プログラムと区別するため、ファームウェアと称する。。したがって、本発明のシミュレーションプログラムのようにPLCの機能をエミュレートするだけのシンプルな機能のものは、PLCのファームウェアのソースコードをそのまま若しくは若干の修正を加えて、デバッグ装置のコンピュータのOS用にリコンパイルするだけで、作成することも可能である。この場合は、シミュレーションプログラムの部分の開発は実質的に必要無くなるため、従来に比べて開発工数や開発コストを格段に低減することができる。また、PLCのファームウェアのソースコードを利用することにより、仮想PLCにおいてPLC実機の機能を忠実に再現することができるという利点もある。なお、本発明は、制御プログラムのデバッグを行うためのものであるため、少なくともタスクスレッドに相当する部分のファームウェアのソースコードを利用するとよい。もちろん、タスクスレッド以外の部分通信スレッドなどのソースコードを利用することも好ましい。また、本発明は、上記手段の少なくとも一部を有するデバッグ装置として捉えてもよいし、上記処理の少なくとも一部を含むデバッグ方法、または、かかる方法を実現するためのプログラムやそのプログラムを記録した記録媒体として捉えることもできる。なお、上記手段及び処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。本発明によれば、コントローラの制御プログラムのデバッガを簡単に実現することができる。システム構成図1は、本実施形態に係るデバッグ装置の機能構成を示すブロック図である。このデバッグ装置1000は、コントローラの制御プログラムをデバッグするための装置である。本実施形態では、コントローラがプログラマブルコントローラPLC130である場合を例に説明する。PLC130は、図7に例示したような産業用のネットワークシステムにおけるマスター装置図7では符号200として利用されるものである。産業用ネットワークには様々な規格が存在し、またPLC製品についても様々な仕様のものが存在するが、本実施形態のデバッグ装置1000はそのいずれにも適用可能である。デバッグ装置1000は、CPU、主記憶装置メモリなど、補助記憶装置ハードディスクなど、各種入出力インターフェース、入力装置キーボード、マウスなど、表示装置等を備える汎用のコンピュータにより構成可能である。例えば、マイクロソフト社のWindows登録商標シリーズ、アップル社のMacOSシリーズなどの汎用のOSオペレーションシステムで動作するコンピュータを好ましく利用できる。デバッグ装置1000の機能を実現するシミュレーションプログラム及びデバッグプログラムは補助記憶装置に格納されており、CPUがこれらのプログラムを主記憶装置にロードし、OS上で実行することにより、後述するデバッグ装置1000の各種の機能が実現される。プログラム構成図1において、シミュレータ110は、シミュレーションプログラムにより実現される機能を示し、プログラミングツール120は、デバッグプログラムにより実現される機能を示す。なお、図1には、比較のために実機のPLC130も示している。実機のPLC130においても、その基本機能は、PLC用のリアルタイムOS上で動作するプログラムで実現されている。図1の例では、制御プログラムを実行して各種スレーブ装置を制御する機能をタスクスレッド132が担い、制御プログラムの内部変数、エラーコード、PLC130やスレーブ装置のステイタスなどの各種情報を外部装置との間で送受する機能を通信スレッド133が担っている。シミュレータ110は、PLC130の機能をエミュレートする仮想PLCである。シミュレータ110のプログラムは、1つのプロセス111としてOS上で実行され、タスクスレッド112、通信スレッド113など複数のスレッドを含むマルチスレッドプログラムである。タスクスレッド112は、PLC130が制御プログラムを実行する機能をエミュレートするものである。即ち、シミュレータ110の制御プログラムの実行結果と、PLC130の制御プログラムの実行結果は基本的に一致する。通信スレッド113は、PLC130が外部装置との通信を行う機能をエミュレートするものである。本実施形態では、シミュレータ110のプログラムタスクスレッド112の部分と通信スレッド113の部分は、実機のPLC130用に開発されたファームウェアのソースコードをそのまま若しくは若干の修正を加えたものを利用して作成されている。通常、デバッグ装置1000のOSと、PLC130のOSとは異なるため、シミュレータ110の実行ファイルは、ファームウェアのソースコードをデバッグ装置1000のOS用にリコンパイルビルドして作成されるが、もし両者のOSが互換性を有しているような場合は、PLC130のファームウェア実行ファイルをそのままシミュレータ110として利用することも可能である。プログラミングツール120は、デバッグ機能部121と表示制御部122を有する。デバッグ機能部121は、上記OSが提供するデバッグ用のAPIApplicationProgramInterfaceを使って、デバッグ機能を果たす。例えば、上記OSが提供するデバッグ用の命令を使って、PLC130の制御プログラムのブレークポイントでシミュレーションプログラムのプロセスを一時停止する停止手段。表示制御部122は、通信スレッド113及び、PLC130の通信スレッド133との通信結果を不図示の表示装置に表示する。表示制御部122から通信スレッドに出力する通信コマンド、及び、通信スレッドからの応答の一例を図2に示す。例えば、実行中の制御プログラム内の変数のリストを取得したい場合には、表示制御部122は、ListVarというコマンドを出力する。それにより、通信スレッドからVar1~Var3といった変数のリストが返される。変数は、例えば、上記実行結果や該実行結果を算出する際に使用される変数などである。また、実行中の制御プログラム内の変数の現在値を取得したい場合には、表示制御部122はGetVarというコマンドを出力する。それにより、通信スレッドから変数の現在値が返される図2の例では、変数Var1を指定してGetVarが出力されたため、変数Var1の現在値230が返される。シミュレーション実行時の処理の流れ図3は、本実施形態に係るデバッグ装置のシミュレーション実行時の処理の流れの一例を示す図である。まず、ユーザは、プログラミングツール120のエディタ123を用いて、制御プログラムのソースファイル301ソースプログラムを作成するステップS301。そして、プログラミングツール120のコンパイラ124が、ユーザからの指示に応じて、ソースファイル301をコンパイルするステップS302。それにより、制御プログラムの実行ファイル302とデバッグ情報303とが作成される。デバッグ情報303は、ソースファイル301内の位置と、タスクスレッド112が制御プログラムを実行する際に実行ファイル302が展開されるメモリ上のアドレスとを対応付ける情報である。次に、プログラミングツール120のタスク設定部125が、ユーザからの指示に応じて、タスク設定ステップS302で作成された複数の実行ファイル302の実行手順の設定を行い、設定結果としてタスク設定情報304を生成するステップS303。そして、プログラミングツール120が、ユーザからの指示に応じてシミュレータ110を起動する。次に、ステップS305~S311において、プログラミングツール120が、デバッグ対象とする制御プログラムをシミュレータ110に与え、シミュレータを動作させる動作手段。具体的には、シミュレータ110のスケジューラ114が、ステップS303で生成されたタスク設定情報304を読み込み、タスクスレッド112を生成するステップS305。また、スケジューラ114が、ステップS302で作成された複数の実行ファイル302を読み込むステップS306。次に、デバッグ機能部121が、プロセス111にアタッチするステップS307。これにより、デバッグ可能となる。そして、プログラミングツール120が、シミュレータ110に接続するステップS308。ここで、接続するとは、例えば、プログラミングツール120とシミュレータ110とを互いに通信可能な状態にすることを意味する。次に、プログラミングツール120が、通信スレッド113にシミュレーションの実行コマンドを発行するステップS309。通信スレッド113は、実行コマンドが発行されると、スケジューラ114に対してシミュレーションの実行開始を指示するステップS310。スケジューラ114は、シミュレーションの実行開始が指示されると、タスクスレッド112に実行を指示するステップS311。それにより、タスクスレッド112が動作し、シミュレーションが開始される。そして、表示制御部122は、通信スレッド113に通信コマンドを発行しステップS312、通信スレッド113がそれに応答することによりステップS313、所望の情報が表示装置で表示される。以上が、本実施形態に係るデバッグ装置のシミュレーション実行時の処理の流れである。図1の構成における課題上述したように、図1に示すようなデバッグ装置を用いることにより、PLCの制御プログラムのデバッガを簡単に実現することが可能となる。しかしながら、本実施形態に係るデバッグ装置では、シミュレータ110は1つのプロセス111として動作しており、デバッグ機能部121はOSが提供するデバッグ用のAPIを用いてデバッグ機能を果たしている。そのため、ブレークポイントで、タスクスレッド112のみではなく、プロセス111全体が一時停止してしまい、通信スレッド113との通信が途絶してしまう。これでは、プログラミングツール120から、シミュレータ110による仮想PLCの内部変数やステイタスなどを確認することができず、制御プログラムが正常に動作しているか否かを確認することができない。即ち、デバッグ装置がデバッガとして機能しなくなってしまう。以下、上記課題について、図4を用いて説明する。図4は、図1の構成における課題を示す図であり、プロセス111の一時停止時の処理の流れの一例を示す図である。まず、ユーザが、エディタ123を用いて、ブレークポイントを設定するステップS401。それにより、ソースファイル上のブレークポイントの位置情報401が生成される。次に、デバッグ機能部121が、ステップS401で生成された位置情報401とデバッグ情報303を用いて、ブレークポイントに対応するメモリ上のアドレス402を求めるステップS402。そして、デバッグ機能部121は、ステップS402で求めたアドレスに、OSが提供するデバッグ用のブレーク命令停止命令を書き込むステップS403。それにより、ユーザが設定したブレークポイントでプロセス111全体が一時停止するステップS404。その結果、通信スレッド113は一時停止するため、ステップS405で表示制御部122が通信スレッドに通信コマンドを発行したとしても、表示制御部122は、通信スレッド113から該通信コマンドに対する応答を得ることができなくなってしまう。なお、このような課題は、シミュレータ110の機能をシンプルなものにし、かつ、OSのサービスであるデバッグ用APIを利用してプロセスの一時停止を行う構成を採用したために、生じるものである。言い換えると、ステップ実行などのデバッグ機能を備える高機能なシミュレータを用いれば、発生しない課題である。しかしながら、このような高機能なシミュレータを作成するには前述のように多大な開発工数と開発コストが必要となるため好ましくない。そこで本実施形態では、別の工夫を加えることにより、上記課題を解決することとした。上記課題を解決するための構成上記課題を解決するために、本実施形態では、デバッグ機能部121によるプロセス111の一時停止後に、通信スレッド113の動作を自動で再開する処理を行う再開手段。なお、本実施形態では、当該処理はデバッグ機能部121により行われるものとするが、デバッグ機能部121以外の機能により行われてもよい。なお、再開するスレッドは通信スレッド113のみに限らない。タスクスレッド112以外の複数のスレッドの動作が自動で再開されてもよい。また、デバッグ装置をデバッガとして機能させるために必要なスレッド以外のスレッドが自動で再開されてもよい。以下、上記処理を含めた本実施形態に係るデバッグ装置1000の処理の流れについて図5を用いて説明する。図5は、本実施形態に係るデバッグ装置1000の処理の流れの一例を示す図である。まず、シミュレータ110のスレッド情報出力スレッド115が、スレッド情報501を出力するステップS501。そして、デバッグ機能部121が、出力されたスレッド情報501を取得するステップS502。スレッド情報501は、例えば、一時停止するスレッドを示す情報である。具体的には、各スレッドには識別子が設定されており、スレッド情報501として、図6Aに示すような、一時停止するスレッドのリストが用いられる。図6Aのスレッド情報は、CycleTask1_RUN、CycleTask1_IO_IN、CycleTask1_IO_OUT、CycleTask2_RUN、CycleTask2_IO_IN、CycleTask2_IO_OUT、TimeGeneratorの6つのタスクスレッドが一時停止するスレッドであることを示す。図中、=の後に付加されている数値は、各スレッドの識別子である。スレッド情報501は、ブレークポイントがヒットする前例えば、シミュレーションの実行開始直後や、プログラミングツール120とシミュレータ110の接続ステップS308直後に出力される。次に、デバッグ機能部121が、OSが提供するデバッグ用のAPIを用いて、タスクスレッド112にブレークポイントを設定するステップS503。即ち、図4のステップS403と同様の処理が行われる。それにより、ユーザが設定したブレークポイントでプロセス111全体が一時停止するステップS504。プロセス111全体が一時停止すると、デバッグ機能部121は、ステップS502で取得したスレッド情報に基づいて、動作の再開が必要なスレッドを解釈し、シミュレータ110に対して当該スレッドの動作の再開を指示するステップS505。本実施形態では、図6Aのリストに含まれないスレッドの動作の再開が指示される。それにより、通信スレッド113の動作が再開される。なお、デバッグ機能部121は、この時点でスレッド情報501を取得してもよい。その結果、表示制御部122は、ステップS506で通信スレッド113に通信コマンドを発行した場合に、ステップS507で通信スレッド113から該通信コマンドに対するして応答を得ることができ、所望の情報を表示装置に表示することができる。即ち、デバッグ装置をデバッガとして機能させることができる。以上述べたように本実施形態のデバッグ装置1000では、シミュレータ110はPLC130の機能をエミュレートするだけの非常にシンプルなものであり、デバッグ機能は有していない。そして、プログラミングツール120のデバッグ機能部121がOSのサービスデバッグ用の命令を使ってシミュレータ110のプロセス111を一時停止するという方法により、デバッグを実現する。このようなプログラム構成を採用することにより、PLCの新製品が出たり、PLCの仕様が変更されたりしても、シミュレータ110のプログラムの部分を入れ替えるだけで済み、プログラミングツール120の部分は流用可能であるため、デバッグ装置全体の開発工数や開発工数を従来に比べて低減することが期待できる。また本実施形態では、PLC130のファームウェアのソースコードを利用して、デバッグ装置1000のシミュレータ110を作成している。これにより、シミュレータ110のプログラムの部分の開発は実質的に必要無くなるため、従来に比べて開発工数や開発コストを格段に低減することができる。また、PLC130のファームウェアのソースコードを利用することにより、シミュレータ110の仮想PLCにおいて実機のPLC130の機能を忠実に再現することができるという利点もある。なお、本実施形態では、スレッド情報に基づいて動作を再開するスレッドが決定される構成としたが、スレッド情報は用いなくてもよい。スレッドの動作の再開を指示するデバッグ機能部121等に動作を再開するスレッドを予め把握させておいてもよい。なお、本実施形態では、スレッド情報が一時停止するスレッドを示す情報である場合について説明したが、スレッド情報はこれに限らない。例えば、スレッド情報は動作を再開するスレッドを示す情報であってもよい。具体的には、スレッド情報501として、図6Bに示すような、動作を再開するスレッドのリストを用いてもよい。図6Bのスレッド情報は、通信スレッドであるConnectionとCommunicationが再開するスレッドであることを示す。スレッド情報が動作を再開するスレッドのリストである場合、ステップS505では、リストに含まれるスレッドの動作の再開を指示すればよい。