(57)【要約】【課題】ソフトウェアのデバッグ等において、監視対象の変数を効率的に設定することが可能なソフトウェア開発支援技術を提供する。【解決手段】ターゲットマシン２００にて実行される機械語オブジェクト３２０を開発するソフトウェア開発支援装置１００の開発支援ツール１７０において、条件モニタ機能１７４によって監視対象の変数の変数値３３３の採取条件を定義する採取条件情報３５０の設定時に、画面表示中のソースコード３１０に含まれる変数を自動的に監視対象の変数として選択して監視対象変数情報３４０に格納する。この監視対象変数情報３４０をターゲットマシン２００のアドレス一覧メモリ２５３に設定して、採取条件の成立時に値保持メモリ２５２に変数値３３３を格納させ、ソフトウェア開発支援装置１００に回収してソースコード３１０の該当変数とともに表示する。【選択図】図１
2008293138.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードからターゲットマシンで実行される機械語オブジェクト、および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成する処理と、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録する処理と、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録する処理と、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録する処理と、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定する処理と、
前記機械語オブジェクトおよび前記採取条件および前記アドレス情報を前記ターゲットマシンに転送する処理と、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示する処理と、
をコンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項２】
請求項１記載のソフトウェア開発支援プログラムにおいて、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録する処理を前記コンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項３】
請求項１または２のいずれかに記載のソフトウェア開発支援プログラムにおいて、
前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録することを特徴とするソフトウェア開発支援プログラム。
【請求項４】
請求項１または２のいずれかに記載のソフトウェア開発支援プログラムにおいて、
さらに、登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効／無効の設定を受け付ける処理を前記コンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項５】
請求項１乃至4のいずれか一項に記載のソフトウェア開発支援プログラムにおいて、
前記ターゲットマシンは、プログラマブルロジックコントローラ（ＰＬＣ）であることを特徴とするソフトウェア開発支援プログラム。
【請求項６】
ソースコードからターゲットマシンで実行される機械語オブジェクト、および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成するステップと、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録するステップと、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録するステップと、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録するステップと、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定するステップと、
前記機械語オブジェクトおよび前記採取条件および前記アドレス情報を前記ターゲット
マシンに転送するステップと、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示するステップと、
を含むことを特徴とするソフトウェア開発支援方法。
【請求項７】
請求項６記載のソフトウェア開発支援方法において、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録することを特徴とするソフトウェア開発支援方法。
【請求項８】
請求項６または７のいずれかに記載のソフトウェア開発支援方法において、
登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効／無効の設定を行うことを特徴とするソフトウェア開発支援方法。
【請求項９】
請求項６または７のいずれかに記載のソフトウェア開発支援方法において、
監視対象の前記変数の登録を自動的に行うステップでは、前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録することを特徴とするソフトウェア開発支援方法。
【請求項１０】
請求項６乃至９のいずれか一項に記載のソフトウェア開発支援方法において、
前記ターゲットマシンは、プログラマブルロジックコントローラ（ＰＬＣ）であることを特徴とするソフトウェア開発支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援技術に関し、ソフトウェアのデバッグ工程等に適用して有効な技術に関する。
【背景技術】
【０００２】
ソフトウェア開発支援ツールのデバッグ機能の一つに、条件モニタという機能がある。この機能は、ある条件が成立した時点で、監視対象のアドレス値を保存しておき、任意のタイミングで、その値を表示する機能である。条件が成立してもプログラムを停止しないでデバッグする理由は、ターゲットマシンを停止できない状態が多いことに起因する。例えば、ターゲットマシンとしてプログラマブルロジックコントローラ（ＰＬＣ）を用いた現場等である。
【０００３】
一方で、変数のモニタ機能においては、定期的にデータをターゲットマシンから獲得するため、必ずしも条件が成立した時点の値が表示されるわけでは無い。そのため、デバッグを実施する場合、プログラムの論理を確認するためには、ある特定の条件（以下、採取条件と記す）が成立した時点の値を保持する、いわゆる条件モニタ機能が必要とされる。
【０００４】
条件モニタ機能を実行する場合、採取条件と監視対象アドレスを予めターゲットマシンに設定する必要がある。プログラミングにおいてユーザが直接アドレスで記述していた場合、監視対象アドレスをアドレスの範囲で指定していた。
【０００５】
しかし、ソフトウェアの規模が大きくなり、開発効率を高めるため、ユーザのプログラミングがアドレスで指定する方法から変数で指定する方法に変わってきた。変数値等のデバッグ情報の可読性を高めて、開発効率を向上させるためである。
【０００６】
そのため、監視対象の指定方法も、アドレスから変数（変数名）で指定するようになってきた。変数のアドレスはソースコードから機械語オブジェクトに変換する際にコンパイラが決定する。そのため、監視対象としてアドレスで指定することは困難であり、ユーザは変数を一つずつ指定することになる。
【０００７】
監視対象のアドレス値を保持するためには、ターゲットマシンの側でそれらの値を保持する必要がある。しかしながら、ターゲットマシンのメモリ容量、アドレス内容の保存をするための処理時間等の制約により、保存できるアドレスの個数に上限があり、モニタ可能な変数全てを監視対象として登録できない。そのため、監視対象のアドレスの個数は上限以内で設定する必要がある。
【０００８】
このようにプログラミングがアドレス記述から変数名での記述になるとともに、ターゲットマシンのメモリ容量も増加し、使用可能なアドレスの個数も増加している。これに伴い、デバッグにおける、監視対象の変数の個数も増加している。
【０００９】
従って、ソースコードにおける数ある変数の中から、監視対象の変数を効率的に指定する技術が求められている。
特許文献１には、アプリケーションプログラムに記述されているラベル名と対応するアドレス値を格納したテーブルを実行可能ファイルに随伴させてプログラマブルロジックコントローラに書き込み、デバッグ時には、当該実行可能ファイルとテーブルを読み出して、アドレス値をラベル名で置換して表示することにより、デバッグ効率を向上させる技術が開示されている。
【００１０】
しかしながら、この特許文献１の場合には、上述のような多数の変数から監視対象の変数を効率的に指定するという技術的課題は認識されていない。
一方、特許文献２には、デバッグ割り込みの都度、利用者プログラム番号とステップ番号と変数の値をトレースバッファに格納し、このトレースバッファの値を読み出して表示する技術が開示されている。しかし、この特許文献２の場合にも、多数の変数から効率的に監視対象の変数の指定する、という上述の技術的課題の認識は見られない。
【特許文献１】特開平１１−３３８７３２号公報
【特許文献２】特開平７−３３４２１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、ソフトウェアのデバッグ等において、監視対象の変数を効率的に設定することが可能なソフトウェア開発支援技術を提供することにある。
本発明の他の目的は、ターゲットマシンに必要以上に大きなメモリ容量を必要とすることなく、効率的なデバッグを行うことが可能なソフトウェア開発支援技術を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の観点は、ソースコードからターゲットマシンで実行される機械語オブジェクト、および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成する処理と、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録する処理と、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録する処理と、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録する処理と、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定する処理と、
前記機械語オブジェクトおよび前記採取条件および前記アドレス情報を前記ターゲットマシンに転送する処理と、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示する処理と、
をコンピュータに実行させるソフトウェア開発支援プログラムを提供する。
【００１３】
本発明の第２の観点は、第１の観点に記載のソフトウェア開発支援プログラムにおいて、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録する処理を前記コンピュータに実行させるソフトウェア開発支援プログラムを提供する。
【００１４】
本発明の第３の観点は、第１の観点または第２の観点のいずれかに記載のソフトウェア開発支援プログラムにおいて、
前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録するソフトウェア開発支援プログラムを提供する。
【００１５】
本発明の第４の観点は、第１の観点または第２の観点のいずれかに記載のソフトウェア
開発支援プログラムにおいて、
さらに、登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効／無効の設定を受け付ける処理を前記コンピュータに実行させるソフトウェア開発支援プログラムを提供する。
【００１６】
本発明の第５の観点は、第１の観点乃至第４の観点のいずれか一つに記載のソフトウェア開発支援プログラムにおいて、
前記ターゲットマシンは、プログラマブルロジックコントローラ（ＰＬＣ）であるソフトウェア開発支援プログラムを提供する。
【００１７】
本発明の第６の観点は、ソースコードからターゲットマシンで実行される機械語オブジェクト、および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成するステップと、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録するステップと、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録するステップと、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録するステップと、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定するステップと、
前記機械語オブジェクトおよび前記採取条件および前記アドレス情報を前記ターゲットマシンに転送するステップと、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示するステップと、
を含むソフトウェア開発支援方法を提供する。
【００１８】
本発明の第７の観点は、第６の観点に記載のソフトウェア開発支援方法において、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録するソフトウェア開発支援方法を提供する。
【００１９】
本発明の第８の観点は、第６の観点または第７の観点のいずれかに記載のソフトウェア開発支援方法において、
登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効／無効の設定を行うソフトウェア開発支援方法を提供する。
【００２０】
本発明の第９の観点は、第６の観点または第７の観点のいずれかに記載のソフトウェア開発支援方法において、
監視対象の前記変数の登録を自動的に行うステップでは、前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録するソフトウェア開発支援方法を提供する。
【００２１】
本発明の第１０の観点は、第６の観点乃至第９の観点のいずれか一つに記載のソフトウェア開発支援方法において、
前記ターゲットマシンは、プログラマブルロジックコントローラ（ＰＬＣ）であるソフトウェア開発支援方法を提供する。
【００２２】
デバッグ時、監視対象変数の登録を手動で実施するのは、手間のかかる作業であり、本発明では、効率よく変数を登録できるように操作性を改善する。
ユーザがデバッグをする場合、複数のソースコードにまたがって採取条件を設定する。大抵ソースコードは、機能毎に記述されてあるため、ソースコード単位で、監視対象の変数を登録することになる。しかし、監視対象の変数の個数には、上限が存在するため、上限を超えた場合、監視対象の変数を減らす必要がある。監視対象の変数を１つずつ指定するのは、効率が悪いため、本発明では、必要に応じて、ソースコード単位で有効／無効の設定を変更できるようにする。
【００２３】
本発明は、コンピュータ上で動作する開発支援ツールに適用することができる。開発支援ツールは、プログラム編集機能、コンパイル機能、通信機能を有する。更に、各機能が利用するための情報を記録する機能を有する。
【００２４】
コンパイラ機能は、ユーザが作成した、ソースコードをコンパイルする時、変数を実際のターゲットマシン上で動作するアドレスに割り付ける。それらの情報を変数アドレス対応表として保存する。
【００２５】
条件モニタの採取条件を設定する時、ユーザは、プログラム編集機能上で、採取条件を設定する。その場合、プログラム編集機能で画面表示されている変数を抽出し、抽出した変数を監視対象変数の候補として開発支援ツールが登録する。
【００２６】
開発支援ツールは、候補として登録された変数を一覧としてユーザに表示する画面を有する。ユーザがソースコード上で採取条件を設定した前後の変数は、ユーザにとって、監視対象にする変数であることが多いためである。
【００２７】
監視対象の変数の個数には、上限がある。そのため、上限以内に監視対象変数の個数を収める必要がある。開発支援ツールでは、候補の変数を一覧で表示する画面を有し、その画面上で、候補の個々の変数に対して、監視対象として有効／無効の設定を実施できる機能を有する（例えば、変数名の前にチェックボックスを付け、有効／無効を設定する）。更に、ある単位毎に候補の変数を表示できるようにし（例えば、ソースコード単位で変数を表示する）、表示されている変数全てに対して有効／無効の設定を一括で実施できるようにする。
【発明の効果】
【００２８】
本発明によれば、ソフトウェアのデバッグ等において、監視対象の変数を効率的に設定することが可能なソフトウェア開発支援技術を提供することができる。
また、ターゲットマシンに必要以上に大きなメモリ容量を必要とすることなく、効率的なデバッグを行うことが可能なソフトウェア開発支援技術を提供することができる。
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図１は、本発明の一実施の形態であるソフトウェア開発支援方法を実施するソフトウェア開発支援装置の原理を示すブロック図、図２は、本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンの構成例を示す概念図である。
【００３０】
図２に例示されるように、本実施の形態のプログラマブルコントローラシステムは、ソフトウェア開発支援装置１００と、ターゲットマシン２００を含んでいる。
ソフトウェア開発支援装置１００は、マイクロプロセッサ１１０、主記憶１２０、外部記憶装置１３０、キーボード１４１、ディスプレイ１４２、通信インタフェース１５０を含むコンピュータで構成されている。
【００３１】
主記憶１２０には、基本ソフトウェアとしてオペレーティングシステム１６０が実装され、マイクロプロセッサ１１０がこのオペレーティングシステム１６０を実行することで、ソフトウェア開発支援装置１００の全体を制御する。
【００３２】
本実施の形態の場合、この主記憶１２０には、ソフトウェアとしての開発支援ツール１７０が実装されている。
そして、マイクロプロセッサ１１０が、この開発支援ツール１７０を実行することで、後述のような各種のソフトウェア開発支援処理を行う。
【００３３】
すなわち、本実施の形態の場合には、開発支援ツール１７０は、図１に例示されるようにモニタ機能１７１、ユーザインタフェース機能１７２、コンパイル機能１７３、条件モニタ機能１７４、通信機能１７５を備えている。
【００３４】
モニタ機能１７１は、後述のように通信機能１７５を利用しターゲットマシン２００の値保持メモリ２５２からアドレス情報３３２に対応した変数値３３３の情報を読み出し、その値を表示する処理を行う。
【００３５】
ユーザインタフェース機能１７２は、ソースコード３１０の編集機能等を提供する。
コンパイル機能１７３は、ソースコード３１０から機械語オブジェクト３２０に変換する処理および変数−アドレス対応表３３０を生成する処理を行う。
【００３６】
条件モニタ機能１７４は、ユーザからの条件入力を受け付けて、採取条件情報３５０に格納する処理を行うとともに、後述のように監視対象の変数を監視対象変数情報３４０に自動的に格納する処理を行う。
【００３７】
通信機能１７５は、ターゲットマシン２００との間の情報通信を行う。
図２に例示されるように外部記憶装置１３０は、ソースコード３１０、機械語オブジェクト３２０、変数−アドレス対応表３３０、監視対象変数情報３４０、採取条件情報３５０をファイルとして保持する。
【００３８】
キーボード１４１、ディスプレイ１４２は、ソフトウェア開発支援装置１００を制御するためのユーザ入力や、ソースコード３１０の編集、デバッグ時の監視対象の変数の指定や採取条件の指定入力等に用いられる。
【００３９】
通信インタフェース１５０は、上述の通信機能１７５の制御下で、ターゲットマシン２００とソフトウェア開発支援装置１００との間の情報通信を実行する。
図３は、監視対象変数情報３４０の構成例を示す概念図である。監視対象変数情報３４０は、変数名３４１と、有効フラグ３４２からなる。
【００４０】
変数名３４１は、監視対象として選択された変数に付与された名称である。有効フラグ３４２は、選択済みの変数名３４１を、一時的に有効にしたり無効にしたりするためのフラグである。この有効フラグ３４２は、後述の監視対象変数一覧画面４４０の有効／無効チェックボックス４４３の操作によってＯＮ（有効）／ＯＦＦ（無効）される。
【００４１】
図１に例示されるように、採取条件情報３５０は、監視対象の変数の変数値３３３の採取のトリガーを規定する採取条件３５０ａが設定される。
図４は、変数−アドレス対応表３３０の構成例を示す概念図である。変数−アドレス対応表３３０は、変数名３３１とアドレス情報３３２からなる。
【００４２】
変数名３３１には上述の変数名３４１が設定される。アドレス情報３３２には、ターゲットマシン２００におけるアドレスの位置を特定する“アドレス番地”等の情報が格納される。そこで、アドレス情報３３２は変数名３３１のアドレス番地に相当する。
【００４３】
一方、本実施の形態のターゲットマシン２００は、たとえば、産業機器を制御するプログラマブルロジックコントローラからなる。図２に例示されるように、ターゲットマシン２００は、汎用マイコン２１０、システムメモリ２２０、通信インタフェース２３０、不揮発メモリ２４０を含んでいる。
【００４４】
システムメモリ２２０には、汎用マイコン２１０が実行するソフトウェアやデータが格納される。
不揮発メモリ２４０には、ソフトウェア開発支援装置１００から受信した機械語オブジェクト３２０が格納される。
【００４５】
通信インタフェース２３０は、汎用通信線２３１を介してソフトウェア開発支援装置１００との情報通信を行う。なお、ソフトウェア開発支援装置１００と、ターゲットマシン２００との通信方法は汎用通信線２３１を介したものに限っておらず、例えば無線であっても、記憶媒体を介した方法であっても良い。
【００４６】
また、通信インタフェース２３０は、被制御機器通信線２３２を介して、プログラマブルロジックコントローラとして機能するターゲットマシン２００（ユーザプログラム３２０Ａ）の制御対象である図示しない産業機器等との間における情報通信を行う。
【００４７】
上述のシステムメモリ２２０には、不揮発メモリ２４０に格納された一つまたは複数の機械語オブジェクト３２０の組合せからなるユーザプログラム３２０Ａが格納され、このユーザプログラム３２０Ａを汎用マイコン２１０が実行することで、プログラマブルコントローラとしての所望の機能が実現される。
【００４８】
この場合、システムメモリ２２０には、ユーザプログラム３２０Ａの実行を管理したり、ソフトウェア開発支援装置１００と連携してユーザプログラム３２０Ａのデバッグを実現するターゲット管理部２５０、条件判定部２５１等のプログラムが格納されている。
【００４９】
また、システムメモリ２２０には、ターゲット管理部２５０、条件判定部２５１が使用する値保持メモリ２５２、アドレス一覧メモリ２５３が格納されている。
アドレス一覧メモリ２５３には、後述のようにしてソフトウェア開発支援装置１００のモニタ機能１７１から受信した監視対象の変数に対応する一つまたは複数のアドレス情報３３２と、対応する採取条件３５０ａが格納される。
【００５０】
値保持メモリ２５２には、採取条件３５０ａが成立した時に、アドレス一覧メモリ２５３に設定されたアドレス情報３３２に格納されている値（変数値３３３）が記録される。
以下、本実施の形態のソフトウェア開発支援装置１００およびターゲットマシン２００のデバッグ時の作用を説明する。
【００５１】
上記で説明したように、ソフトウェア開発支援装置１００上で開発支援ツール１７０が動作する（図２参照）。
次に、図１に例示されるように、開発支援ツール１７０は、モニタ機能１７１、ユーザがソースコード３１０を記述するユーザインタフェース機能１７２と、ユーザが作成したソースコード３１０をターゲットマシン２００上で動作する機械語オブジェクト３２０に変換するコンパイル機能１７３と、監視対象変数情報３４０、採取条件情報３５０を設定する条件モニタ機能１７４と、開発支援ツール１７０とターゲットマシン２００間でデー
タを送受信する通信機能１７５を含んでいる。
【００５２】
モニタ機能１７１は、通信機能１７５を利用しターゲットマシン２００の値保持メモリ２５２からアドレス情報３３２に対応した変数値３３３の情報を読み出し、その値を表示する。
【００５３】
ソースコード３１０は、開発支援ツール１７０のコンパイル機能１７３により、機械語オブジェクト３２０と変数−アドレス対応表３３０に変換される。
機械語オブジェクト３２０は、ターゲットマシン２００上で動作する命令の集合体であり、一つまたは複数の機械語オブジェクト３２０が組み合わされてユーザプログラム３２０Ａとしてターゲットマシン２００上で動作する。
【００５４】
変数−アドレス対応表３３０は、ソースコード３１０上でユーザが記述した変数（変数名３３１）と、コンパイル機能１７３が割り付けたアドレス情報３３２との対応関係の情報である。
【００５５】
モニタ機能１７１は、ユーザインタフェース機能１７２の画面上にソースコードと変数の値を表示する。図５は、このとき、ソフトウェア開発支援装置１００のディスプレイ１４２に表示されるモニタ画面４１０の一例を示す図である。
【００５６】
モニタ画面４１０は、ソースコード表示領域４１１、変数値表示領域４１２、シーケンスチャート表示領域４１３を含んでいる。
ソースコード表示領域４１１にはソースコード３１０が表示される。このソースコード３１０は、ユーザインタフェース機能１７２によってユーザが入力したものである。
【００５７】
変数値表示領域４１２には、ターゲットマシン２００の値保持メモリ２５２から読み出された変数値３３３が、ソースコード表示領域４１１の変数と対応する行に表示される。
すなわち、変数の値（変数値３３３）は、コンパイル機能１７３が作成した変数−アドレス対応表３３０から変数のアドレス情報３３２を取り出し、ターゲットマシン２００のターゲット管理部２５０に対して、通信機能１７５を経由して当該アドレス情報３３２を通知して値保持メモリ２５２から読み出すことで獲得する。獲得した変数値３３３は、モニタ機能１７１によりモニタ画面４１０の変数値表示領域４１２に表示する。
【００５８】
なお、本実施の形態の場合、モニタ画面４１０のシーケンスチャート表示領域４１３には、ＰＬＣでよくに用いられているラダープログラムに対応したシーケンスチャートが表示される。機械語オブジェクト３２０は、上述のラダープログラムと等価な機能をターゲットマシン２００で実現するようにプログラムされている。
【００５９】
モニタ画面４１０のように、シーケンスチャート表示領域４１３とソースコード表示領域４１１とを同時に表示する事により、ユーザはシーケンスチャートとソースコード３１０とを対応付けて確認できる。
【００６０】
条件モニタ機能１７４は、ユーザがモニタ上から採取条件を入力する。図６は、この条件モニタ機能１７４の操作画面である採取条件設定画面４３０の例を示している。この採取条件設定画面４３０には、条件入力欄４３１、比較データ入力欄４３２等の入力欄が設けられている。これらの入力欄を用いてユーザから設定された採取条件は、採取条件情報３５０に保存する。図６の例では、変数の値が１００になった時、当該変数の変数値３３３を採取して保存する採取条件が成立する。
【００６１】
図７に示されるように、ユーザがソースコード表示領域４１１のソースコード３１０上
で、対象となる変数（ここでは、ｃｎｔ１）のダブルクリック等の動作を行うと、これを検知した条件モニタ機能１７４はより採取条件設定画面４３０（図６参照）を表示する。この時、ソースコード表示領域４１１のソースコード上に表示されている複数の変数を監視対象変数情報３４０に登録する。
【００６２】
すなわち、本実施の形態の場合には、一例として、条件モニタ機能１７４は、ソースコード表示領域４１１に表示中のソースコードの可視範囲に存在する変数や関数の一つをユーザがダブルクリック等の動作で選択したことを契機に、当該変数（関数）および／または可視範囲に存在する関数に含まれる変数のすべてを監視対象変数情報３４０に自動的に登録する。
【００６３】
なお、関数は一例であり、サブルーチン名、分岐先名等の任意の論理ブロック名でもよい。
図８は、監視対象変数一覧画面４４０の一例を示している。監視対象変数一覧画面４４０は、変数表示欄４４１、インスタンス表示欄４４２を含んでいる。ソースコード表示領域４１１のソースコード上には、変数としてｃｎｔ、ｃｎｔ１が表示されているため（図７、参照）、監視対象の変数としてこれらを登録できる。変数の抽出技術には、既存の仕組みを利用する。例えば、コンパイル時に、ソースコードの位置と変数を関連付ける方法や、表示されているソースコード３１０を文法解析（パージング）し、変数名３４１の文字列を取り出す方法、等を用いる。
【００６４】
監視対象に登録できる変数には、上限があるため、条件モニタ機能１７４を実行する時、その上限を検査する。もし、上限を超えている場合は、図９に例示されるようなエラー警告メッセージ４４９等を監視対象変数一覧画面４４０に表示して、採取条件に基づいて変数の変数値３３３を採取する条件モニタを実施できないようにする。
【００６５】
上限以内の場合は、条件モニタを実行する。監視対象の変数を削除する方法としては、図１０に例示される監視対象変数一覧画面４４０の画面上の変数一覧で削除対象の変数を選択し削除する。大抵は、ソースコード毎で監視対象変数が変わるため、図１０の監視対象変数一覧画面４４０のように画面毎に変数の一覧を表示するようにし、変数全てを選択し削除できるようにする。
【００６６】
登録された変数を削除すると、再度登録するための煩雑な操作が必要となるので、操作性を向上させるため、一旦登録された各変数毎に有効／無効の状態を持つようにする。
例えば、図１０に例示される監視対象変数一覧画面４４０では、画面の左端に各変数の表示位置に対応して有効／無効チェックボックス４４３を設け、この有効／無効チェックボックス４４３にチェックが付いている場合は有効であることを示し、外れている場合は無効であることを示す。全て削除ボタンの他に、全て有効ボタン４４４、全て無効ボタン４４５等のボタンを追加し、これらのボタンを押された場合、各変数の有効／無効の状態を変更する。すなわち、上述の監視対象変数情報３４０の有効フラグ３４２を設定する。有効フラグ３４２の状態が有効のものが監視対象の変数である。
【００６７】
開発支援ツール１７０は、監視対象の変数（変数名３３１）から変数−アドレス対応表３３０を用いて変数のアドレス情報３３２を獲得する。獲得したアドレス情報３３２と採取条件情報３５０を通信機能１７５でターゲットマシン２００に送信する。
【００６８】
ターゲットマシン２００は、それらの情報をアドレス一覧メモリ２５３に保持する。ターゲットマシン２００は、機械語オブジェクト３２０（機械語オブジェクト３２０で構成されたユーザプログラム３２０Ａ）の実行中に、条件判定部２５１によって条件成立の検査を実施する。条件が成立した時、アドレス一覧メモリ２５３に設定された監視対象の変
数のアドレス情報３３２から、ユーザプログラム３２０Ａにおける監視対象のアドレスにある値（変数値３３３）を保存する。
【００６９】
モニタ機能１７１は、定期的にターゲットマシン２００の状態を監視し、条件が成立した場合、値保持メモリ２５２に保存されているデータを読み出す。
モニタ機能１７１は、通常の表示（定期的にターゲットマシン２００から読み出した値の表示）と条件が成立した場合の表示を区別するための情報を画面に表示する。例えば、図１１に例示される条件成立時表示画面４５０の表示例のようにステータスバー４５１に条件が成立し、条件モニタが停止していることを示す文字列（メッセージ４５２）（この場合、“条件モニタ停止中”）を表示する。
【００７０】
条件モニタの場合、監視対象として登録した変数のアドレス以外の値は、不定になる。そのため、登録した以外の変数の値は、不定であることを画面上で表示する。例えば、監視対象に登録されている変数は変数値３３３を表示し、それ以外の変数は、図１２に例示されるソースコード表示画面４２０のように、不定文字列４１４として“？？？”を表示する。
【００７１】
図１３は、本実施の形態のソフトウェア開発支援装置１００およびターゲットマシン２００におけるデバッグ時の一連の連携動作を示す図である。
ソフトウェア開発支援装置１００の側では、開発支援ツール１７０のユーザインタフェース機能１７２がユーザからの入力を受け付けることによりソースコード３１０の作成／編集を行う（ステップ６０１）。
【００７２】
次に、ユーザからの指示により、コンパイル機能１７３は、ソースコード３１０から機械語オブジェクト３２０および変数−アドレス対応表３３０の生成を行う（ステップ６０２）。
【００７３】
次に、条件モニタ機能１７４は、ユーザからの指示入力を受け付けて、採取条件情報３５０の設定、および当該設定に連動した監視対象の変数の候補の登録を行い、ユーザが候補から監視対象を選択しないときは、監視対象の候補を監視対象として全て選択する（ステップ６０３）。
【００７４】
そして、開発支援ツール１７０のモニタ機能１７１は、機械語オブジェクト３２０、および採取条件情報３５０、さらには監視対象の変数（変数名３３１）に対応したアドレス情報３３２（機械語オブジェクト３２０内のアドレス値）をターゲットマシン２００に送る（ステップ６０４）。
【００７５】
ターゲットマシン２００のターゲット管理部２５０は、ソフトウェア開発支援装置１００から受信した機械語オブジェクト３２０を不揮発メモリ２４０に格納し、また採取条件情報３５０、アドレス情報３３２をアドレス一覧メモリ２５３に格納する（ステップ７０１）。
【００７６】
その後、ソフトウェア開発支援装置１００の側からターゲットマシン２００に対してデバッグのためのユーザプログラム３２０Ａの実行指令が送信されると（ステップ６０５）、これを受けたターゲットマシン２００のターゲット管理部２５０は、不揮発メモリ２４０に格納されている機械語オブジェクト３２０からユーザプログラム３２０Ａを生成してシステムメモリ２２０にロードしてユーザプログラム３２０Ａを起動する（ステップ７０２）。
【００７７】
そして、条件判定部２５１は、ユーザプログラム３２０Ａの実行状態を監視しつつ、ア
ドレス一覧メモリ２５３に設定された採取条件情報３５０の採取条件が成立するか否かを判別し（ステップ７０３）、成立した場合には、アドレス一覧メモリ２５３に登録されているアドレス情報３３２に対応したユーザプログラム３２０Ａのアドレスの値（変数値３３３）を採取して値保持メモリ２５２に格納する（ステップ７０４）。
【００７８】
一方、ソフトウェア開発支援装置１００の開発支援ツール１７０は、ターゲットマシン２００における採取条件情報３５０の成立の有無を定期的にターゲット管理部２５０に問い合わせて監視している（ステップ６０６）。
【００７９】
同様にターゲットマシン２００のターゲット管理部２５０は、ソフトウェア開発支援装置１００の側からの変数値３３３の転送指令（ステップ６０６）の有無を監視し（ステップ７０５）、当該転送指令が検出された場合には、値保持メモリ２５２に格納されているアドレス情報３３２と変数値３３３のペアの情報を、ソフトウェア開発支援装置１００のモニタ機能１７１に転送する（ステップ７０６）。
【００８０】
そして、ソフトウェア開発支援装置１００のモニタ機能１７１は、上述のステップ７０６でターゲットマシン２００の側から送られてきたアドレス情報３３２と変数値３３３のペアの情報のうち、アドレス情報３３２に基づいて変数−アドレス対応表３３０を検索して対応する変数名３３１を特定し、図１１に例示される条件成立時表示画面４５０をディスプレイ１４２に表示して、ソースコード表示領域４１１に表示されたソースコード３１０の対応する変数名３３１の表示行に対応する位置に変数値３３３を変数値表示領域４１２に出力する。
【００８１】
また、上述のように、条件成立時表示画面４５０のステータスバー４５１にはメッセージ４５２を出力して、定期的な表示と区別する。
ターゲットマシン２００の側のターゲット管理部２５０は、ユーザプログラム３２０Ａの実行完了を監視し（ステップ７０７）、終了した場合には、ソフトウェア開発支援装置１００の開発支援ツール１７０に通知する（ステップ７０８）。
【００８２】
なお、上述の図１３の例では、ターゲットマシン２００におけるユーザプログラム３２０Ａの開始に先立って、予め、アドレス情報３３２および採取条件３５０ａをターゲットマシン２００の側に転送してアドレス一覧メモリ２５３に設定してデバッグを行う例を示したが、これに限らず、ターゲットマシン２００におけるユーザプログラム３２０Ａの開始後に、随時、アドレス情報３３２および採取条件３５０ａをターゲットマシン２００に設定してデバッグを行うこともできる。
【００８３】
このような例を図１４のフローチャートに示す。上述の図１３と異なる点を示すと以下の通りである。
すなわち、この図１４のフローチャートにおいては、ソフトウェア開発支援装置１００からターゲットマシン２００に対して、機械語オブジェクト３２０を送信して（ステップ６０４Ａ）、実行指令を与えて、当該機械語オブジェクト３２０を含むユーザプログラム３２０Ａの実行を開始（ステップ７０２）させた後に（ステップ６０５）、随時、キーボード１４１から採取条件３５０ａの入力を受け付けて（ステップ６０３Ａ）、対応するアドレス情報３３２とともにターゲットマシン２００に送信して（ステップ６０４Ｂ）、アドレス一覧メモリ２５３に設定してデバッグを行う点が、上述の図１３のフローチャートの場合と異なっている。
【００８４】
この図１４のフローチャートの場合には、ターゲットマシン２００におけるユーザプログラム３２０Ａの実行中においても、採取条件３５０ａ等を可変させ、ユーザプログラム３２０Ａの実行を中断せずにデバッグを継続できる利点がある。
【００８５】
以上説明したように、本実施の形態のソフトウェア開発支援装置１００では、ターゲットマシン２００で実行される機械語オブジェクト３２０（ユーザプログラム３２０Ａ）のデバッグを、開発支援ツール１７０を用いて実施する時、たとえば、開発支援ツール１７０の条件モニタ機能１７４における採取条件情報３５０の設定に際してソースコード表示領域４１１に表示中のソースコード３１０の変数を、監視対象の変数として自動で登録する。
【００８６】
これにより、一つずつ手動で監視対象の変数を指定する場合に比較して、格段に開発支援ツール１７０の使い勝手が向上する。
更に、ソースコード３１０の量が多くなると、複数箇所でソースコード３１０の検証を実施する必要があり、検証するソースコード３１０の位置が変われば、監視対象の変数も変更する必要がある。従って、本実施の形態の開発支援ツール１７０のように自動で監視対象の変数を登録することによりユーザのデバッグ効率が向上する。
【００８７】
また、ソフトウェア開発支援装置１００の開発支援ツール１７０から、監視対象の変数のアドレス情報３３２をターゲットマシン２００に送ってアドレス一覧メモリ２５３に設定することにより、ターゲットマシン２００では、ユーザプログラム３２０Ａのデバッグに際して、アドレス一覧メモリ２５３に設定されたアドレス情報３３２に対応する変数値３３３のみを値保持メモリ２５２に格納するだけで済む。
【００８８】
これにより、ユーザプログラム３２０Ａに含まれる多数の変数の値を網羅的にトレースメモリ等に記録する場合に比較して、値保持メモリ２５２やアドレス一覧メモリ２５３の容量を節約できる。
【００８９】
すなわち、ターゲットマシン２００に必要以上に大きなメモリ容量を必要とすることなく、機械語オブジェクト３２０からなるユーザプログラム３２０Ａの効率的なデバッグを行うことが可能となる。
【００９０】
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
たとえば、上述の実施の形態では、ターゲットマシンの例としてプログラマブルロジックコントローラを挙げて説明したが、一般の情報処理装置や制御機器等に実装されるソフトウェアのデバッグに広く適用することができる。
【図面の簡単な説明】
【００９１】
【図１】本発明の一実施の形態であるソフトウェア開発支援方法を実施するソフトウェア開発支援装置の原理を示すブロック図である。
【図２】本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンの構成例を示す概念図である。
【図３】本発明の一実施の形態であるソフトウェア開発支援装置にて用いられる監視対象変数情報の構成例を示す概念図である。
【図４】本発明の一実施の形態であるソフトウェア開発支援装置にて用いられる変数−アドレス対応表の構成例を示す概念図である。
【図５】本発明の一実施の形態である開発支援ツールのモニタ画面の一例を示す図である。
【図６】本発明の一実施の形態である開発支援ツールの採取条件設定画面の一例を示す図である。
【図７】本発明の一実施の形態である開発支援ツールのソースコード表示画面の一例を示す図である。
【図８】本発明の一実施の形態である開発支援ツールの監視対象変数一覧画面の一例を示す図である。
【図９】本発明の一実施の形態である開発支援ツールのエラー発生時の監視対象変数一覧画面の一例を示す図である。
【図１０】本発明の一実施の形態である開発支援ツールの監視対象変数一覧画面の一例を示す図である。
【図１１】本発明の一実施の形態である開発支援ツールの条件成立時表示画面の一例を示す図である。
【図１２】本発明の一実施の形態である開発支援ツールのソースコード表示画面の一例を示す図である。
【図１３】本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンにおけるデバッグ時の連携動作の関係を示す図である。
【図１４】本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンにおけるデバッグ時の連携動作の関係の変形例を示す図である。
【符号の説明】
【００９２】
１００  ソフトウェア開発支援装置
１１０  マイクロプロセッサ
１２０  主記憶
１３０  外部記憶装置
１４１  キーボード
１４２  ディスプレイ
１５０  通信インタフェース
１６０  オペレーティングシステム
１７０  開発支援ツール
１７１  モニタ機能
１７２  ユーザインタフェース機能
１７３  コンパイル機能
１７４  条件モニタ機能
１７５  通信機能
２００  ターゲットマシン
２１０  汎用マイコン
２２０  システムメモリ
２３０  通信インタフェース
２３１  汎用通信線
２３２  被制御機器通信線
２４０  不揮発メモリ
２５０  ターゲット管理部
２５１  条件判定部
２５２  値保持メモリ
２５３  アドレス一覧メモリ
３１０  ソースコード
３２０  機械語オブジェクト
３２０Ａ  ユーザプログラム
３３０  変数−アドレス対応表
３３１  変数名
３３２  アドレス情報
３３３  変数値
３４０  監視対象変数情報
３４１  変数名
３４２  有効フラグ
３５０  採取条件情報
３５０ａ  採取条件
４１０  モニタ画面
４１１  ソースコード表示領域
４１２  変数値表示領域
４１３  シーケンスチャート表示領域
４１４  不定文字列
４２０  ソースコード表示画面
４３０  採取条件設定画面
４３１  条件入力欄
４３２  比較データ入力欄
４４０  監視対象変数一覧画面
４４１  変数表示欄
４４２  インスタンス表示欄
４４３  有効／無効チェックボックス
４４４  全て有効ボタン
４４５  全て無効ボタン
４４９  エラー警告メッセージ
４５０  条件成立時表示画面
４５１  ステータスバー
４５２  メッセージ
【図１】
2008293138.tif 000003
【図２】
2008293138.tif 000004
【図３】
2008293138.tif 000005
【図４】
2008293138.tif 000006
【図１３】
2008293138.tif 000007
【図１４】
2008293138.tif 000008
【図５】
2008293138.tif 000009
【図６】
2008293138.tif 000010
【図７】
2008293138.tif 000011
【図８】
2008293138.tif 000012
【図９】
2008293138.tif 000013
【図１０】
2008293138.tif 000014
【図１１】
2008293138.tif 000015
【図１２】
2008293138.tif 000016