JP5589670B2 - デバッグ方法 - Google Patents

デバッグ方法 Download PDF

Info

Publication number
JP5589670B2
JP5589670B2 JP2010184259A JP2010184259A JP5589670B2 JP 5589670 B2 JP5589670 B2 JP 5589670B2 JP 2010184259 A JP2010184259 A JP 2010184259A JP 2010184259 A JP2010184259 A JP 2010184259A JP 5589670 B2 JP5589670 B2 JP 5589670B2
Authority
JP
Japan
Prior art keywords
machine language
language object
debuggable
optimized
source code
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.)
Active
Application number
JP2010184259A
Other languages
English (en)
Other versions
JP2012043215A (ja
Inventor
那津子 竹内
大助 吉原
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2010184259A priority Critical patent/JP5589670B2/ja
Publication of JP2012043215A publication Critical patent/JP2012043215A/ja
Application granted granted Critical
Publication of JP5589670B2 publication Critical patent/JP5589670B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、ソースコードを機械語オブジェクトに変換するコンパイラを備え、ソースコード上でデバッグを行なうデバッグ方法に関する。
高速に処理を行なうために、プログラムのコンパイル時に最適化を行なう方法が提案されている。しかし、最適化機械語オブジェクトは、実行順序の変更、不明変数の削除等が行なわれている可能性があり、ソースコード上でデバックすることが困難になる。
そこで、従来、最適化オブジェクトファイルの内容を入力し、この最適化オブジェクトの内容に対応して逆コンパイラによりソースコードデバッグ用ソースコードを生成するとともに、最適化オブジェクトファイルの内容に基づき前記ソースコードデバッグ用ソースコードに対応するマシンコード部分およびシンボル情報部分から構成されたオブジェクトファイルを生成し、シンボル情報部分及びソースコードデバッグ用ソースコードを使用してソースコードデバッグを行なうようにしたソースコードレベルデバッグ装置が提案されている(例えば、特許文献1参照)。
特開平6−242942号公報(第1頁、図4)
しかしながら、上記特許文献1に記載の従来例にあっては、最適化オブジェクトから逆コンパイルすることによりデバッグ用のソースコードを生成するようにしているので、最適化オブジェクトを逆コンパイルしてデバッグ用のソースコードを正確に生成することが困難であるとともに時間がかかるという未解決の課題がある。
そこで、本発明は、上記従来例の未解決の課題に着目してなされたものであり、最適化オブジェクトを逆コンパイルすることなく、デバッグ時にソースコード上でデバッグできるとともに、コンパイル及びダウンロード時間を必要最小限とすることができるデバッグ方法を提供することを目的としている。
上記目的を達成するために、請求項1に係るデバッグ方法は、プログラムを機械語オブジェクトに変換するコンパイラを有する支援装置を備え、該コンパイラは最適化機械語オブジェクトとデバッグ可能な機械語オブジェクトとを生成可能に構成され、通常時は前記最適化機械語オブジェクトのみをコンパイルしてターゲットにダウンロードし、当該ターゲットで最適化機械語オブジェクトを実行し、デバッグ時は前記コンパイラでデバッグ可能な機械語オブジェクトをコンパイルして前記ターゲットにダウンロードし、デバッグを実施するようにし、前記ターゲットは、前記最適化機械語オブジェクトを保持する第一の記憶領域と、前記デバッグ可能な機械語オブジェクトを保持する第二の記憶領域と、
前記最適化機械語オブジェクトの先頭アドレスまたは前記デバッグ可能な機械語オブジェクトの先頭アドレスを登録するテーブルとこのテーブルに登録されたいずれかの前記先頭アドレスを指定して前記最適化機械語オブジェクトまたは前記デバッグ可能な機械語オブジェクトを実行するプログラム実行部と、を有し、前記支援装置からのデバッグ指示に基づき前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に保持されているかを判定し、この判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に既に保持されていると判定されたとき、前記第二の記憶領域に保持されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させ、前記判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に未保持と判定されたとき、前記支援装置から前記デバッグ可能な機械語オブジェクトを受信して前記第二の記憶領域に転送した後、該転送されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させることを特徴としている。
また、請求項に係るデバック方法は、請求項に係る発明において、前記ターゲットは前記支援装置からプログラムの実行の停止位置を示すブレーク位置情報を受信すると、該ブレーク位置情報に基づき前記デバッグ可能な機械語オブジェクトの所定箇所にプログラムの実行を停止するためのブレーク命令を挿入し、前記プログラム実行部は前記ブレーク命令の実行に伴い前記デバッグ可能な機械語オブジェクトの実行を停止し、この停止状態を前記支援装置に送信することを特徴としている。
また、請求項に係るデバック方法は、請求項1又は2に係る発明において、前記コンパイラは、IEC言語で記述されたプログラムを機械語オブジェクトに変換するように構成され、前記ターゲットはプログラマブルコントローラで構成され、前記支援装置はプログラマブルコントローラのローダ機能を具備していることを特徴としている。
本発明によれば、コンパイラでプログラムを最適化機械語オブジェクトとデバッグ可能な機械語オブジェクトとを生成可能に構成し、通常時は最適化機械語オブジェクトだけをコンパイルしてターゲットにダウンロードすることにより、ターゲットで最適化機械語オブジェクトを実行し、デバッグ時にはデバッグ可能な機械語オブジェクトをコンパイルしてターゲットにダウンロードしデバッグを実施するので、逆コンパイル等の処理が不要であり、また、最初から最適化機械語オブジェクト及びデバッグ可能な機械語オブジェクトの双方をコンパイルし、両者をターゲットにダウンロードする場合に比較して、コンパイル時間及びターゲットに対するダウンロード時間を必要最小限とすることができ、ユーザの効率の良いソフトウェア開発を実施することができるという効果が得られる。
本発明の一実施形態を示すブロック図である。 本発明の一実施形態を示すシステム構成図である。 支援装置の支援処理手順の一例を示すフローチャートである。 メニュー画面を示す説明図である。 プログラマブルコントローラのオブジェクト実行処理手順の一例を示すフローチャートである。 送信する機械語オブジェクトの構成を示す説明図である。 オブジェクト実行時のアドレステーブルの展開状態を示す説明図である。 デバッグ時に送信するデバッグ情報を示す説明図である。 デバッグ時のアドレステーブルの展開状態を示す説明図である。
以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本発明の一実施形態を示すブロック図であり、図中、支援装置1は入力されるソースプーグラムを機械語オブジェクトに変換する例えばプログラムローダで構成され、この支援装置1から機械語オブジェクトがターゲット、例えばプログラマブルコントローラ2にダウンロードされる。支援装置1には、表示装置3、入力装置4(例えばキーボードやポインティングデバイス等)及び記憶装置5が内部バス6を介してCPU7に接続されている。
また、プログラマブルコントローラ2は、入出力モジュール等の制御対象機器との通信を行う際に、専用線であるバスの調停を行うバスコントローラ8、システムプログラムやユーザープログラムを電源遮断時も保存するために記憶するフラッシュメモリMF、このフラッシュメモリMFからシステムプログラムやユーザープログラムを展開・実行するプログラムメモリMP及びシステムプログラムやユーザープログラムがリード/ライトする情報を管理・保存するデータメモリMDを備え、これらが内部バス9を介してシステムプログラム及びユーザープログラムを実行するプログラム実行部としてのCPU10に接続されている。
支援装置1は、図2に示すように、ユーザインタフェース部11でIEC(International Electrotechnical Commission)言語によって記述されたプログラムを書いてソースコードを作成し、作成したソースコードをコンパイラ12に供給し、このコンパイラ12で、通常時はソースコードに対して最適化処理を行なって、ソースコードを最適化機械語オブジェクトに変換し、最適化機械語オブジェクト13として記憶装置5に格納するとともに、この最適化機械語オブジェクト13をRS232C等のデータ通信部14を介してプログラマブルコントローラ2にダウンロードする。一方、デバッグ時には、コンパイラでソースコードをデバッグ可能な機械語オブジェクトに変換し、デバッグ可能な機械語オブジェクト15として記憶装置5に格納するとともに、このデバッグ可能な機械語オブジェクト15を、データ通信部14を介してプログラマブルコントローラ2にダウンロードする。
プログラマブルコントローラ2は、データ通信部21を有し、このデータ通信部21を通じて支援装置1から入力される最適化機械語オブジェクト13をフラッシュメモリMFに格納し、この最適化機械語オブジェクト13をプログラムメモリMPに最適化機械語オブジェクト22として展開するとともに、データ通信部21を通じて支援装置1から入力されるデバッグ可能な機械語オブジェクト15をフラッシュメモリMFに格納し、このデバッグ可能な機械語オブジェクト15をデバッグ可能な機械語オブジェクト23としてプログラムメモリMPに展開する。そして、通常時はプログラムメモリMFに展開されている最適化機械語オブジェクト22を実行する。このとき、機械語オブジェクトの先頭アドレスをアドレステーブル24に展開し、このアドレステーブル24のアドレスに基づいて最適化機械語オブジェクトを実行する。すなわち、プログラマブルコントローラ2はアドレステーブル24を参照して、該アドレステーブル24の情報を間接アドレス指定して、そのアドレス先に保持された機械語オブジェクトを実行する(プログラム実行部)。通常時、アドレステーブル24には最適化機械語オブジェクト22の先頭アドレスが保持されており、プログラマブルコントローラ2は最適化機械語オブジェクト22を実行することで高速化が図られている。
また、デバッグ時は、プログラムメモリMPに展開されているデバッグ可能な機械語オブジェクト23を実行するが、この機械語オブジェクトの先頭アドレスをアドレステーブル24に展開し、このアドレステーブルを参照してデバッグを行い、デバッグの終了時にアドレステーブル24を通常時の機械語オブジェクトの先頭アドレスに切換える。
ここで、支援装置1の具体的な処理の一例を説明する。図3は、支援装置の支援処理手順の一例を示している。この支援処理は、先ず、ステップS1で、処理メニューを表示する。この処理メニューとしては図4に示すように、コンパイル開始メニュー31、デバッグ開始メニュー32、終了ボタン33が少なくとも設定されており、これらメニュー31〜33のうちの所望のメニュー上に例えばマウス、キーボード等の入力装置4によってカーソルを移動させ、この状態で例えばマウスをクリックすることにより、メニューを選択することができる。
次いで、ステップS2に移行して、コンパイル開始メニュー31が選択されたか否かを判定し、コンパイル開始メニュー31が選択されていないときには、後述するステップS7に移行し、コンパイル開始メニュー31が選択されたときには、ステップS3に移行して、ソースコードを最適化コンパイルして最適化機械語オブジェクトに変換するとともに、このときのソースコードと識別番号との対応表を作成し、最適化機械語オブジェクト13及びソースコード・識別番号対応表を記憶装置5の所定記憶領域に格納する。なお、識別番号については後述するが、コンパイル後の機械語オブジェクトを一意に識別する情報(番号)であって、その記述方法はどのような形式でも構わない。
次いで、記憶装置5の所定記憶領域に格納されている最適化機械語オブジェクト13を、データ通信部14を介してプログラマブルコントローラ2に送信するダウンロードを行なってからステップS6に移行する。
このステップS6では、デバッグ開始メニュー32が選択されたか否かを判定し、デバッグ開始メニュー32が選択されていないときにはステップS7に移行して、支援処理を終了するか否かを判定する。この判定は、処理メニューに表示されている終了ボタン33が選択されているか否かを判定し、終了ボタン33が選択されているときには、支援処理を終了し、終了ボタン33が選択されていないときには前記ステップS1に戻る。
また、ステップS6の判定結果で、デバッグ開始メニュー32が選択されているときには、ステップS8に移行して、デバッグ時に処理を停止させるブレークポイントを設定して後述するデバッグ情報を作成し、次いでステップS9に移行して、プログラマブルコントローラ2に対してデバッグ開始通知を送信する。なお、ブレークポイントについては後述するが、ソースコードにおける任意の位置に相当する箇所で、プログラム実行を中止させる為の一種のマーカー(識別子)であって、その実現方法はどのような形式でも構わない。以降の説明では、一例として、ブレーク命令としてのブレークポイント処理コードを挿入する方法を用いるものとする。
次いで、ステップS10に移行して、プログラマブルコントローラ2からデバッグしたいオブジェクトのデバッグ可能な機械語オブジェクトの有無を表すオブジェクト有無通知を受信したか否かを判定し、オブジェクト有無通知を受信していないときにはオブジェクト有無通知を受信するまで待機し、オブジェクト有無通知を受信したときにはステップS11に移行する。
このステップS11では、オブジェクト有無通知の内容がデバッグ可能な機械語オブジェクトが存在するものであるか否かを判定し、デバッグ可能な機械語オブジェクトが存在する場合には後述するステップS17に移行し、デバッグ可能な機械語オブジェクトが存在しない場合にはステップS12に移行する。
このステップS12では、ソースコードをコンパイルしてデバッグ可能な機械語オブジェクトを生成し、次いでステップS13に移行して、生成したデバッグ可能な機械語オブジェクトについてのソースコードと機械語オブジェクトとの対応を表すソースコード・機械語オブジェクト対応表を作成し、次いでステップS14に移行して、デバッグ可能な機械語オブジェクト15及びソースコード・機械語オブジェクト対応表を記憶装置5の所定記憶領域に格納してからステップS15に移行する。
このステップS15では、記憶装置5の所定記憶領域に格納されたデバッグ可能な機械語オブジェクト15、ソースコード・機械語オブジェクト対応表及びデバッグ情報を、データ通信部14を介してプログラマブルコントローラ2に送信してダウンロードする。
次いで、ステップS16に移行して、プログラマブルコントローラ2から、後述するブレークポイント処理コードの注入処理が完了した処理完了通知を受信したか否かを判定し、処理完了通知を受信していないときには処理完了通知を受信するまで待機し、処理完了通知を受信したときにはステップS17に移行する。
このステップS17では、デバッグ処理を実行し、次いで、ステップS18に移行して、デバッグ処理が終了したか否かを判定し、デバッグ処理が終了していないときにはこれが終了するまで待機し、デバッグ処理が終了したときにはステップS19に移行して、デバッグ終了通知を、データ通信部14を介してプログラマブルコントローラ2に送信してから前記ステップS7に移行する。
ここで、プログラマブルコントローラ2の具体的な処理の一例を説明する。図5は、プログラマブルコントローラ2のオブジェクト実行処理手順の一例を示している。このオブジェクト実行処理は、先ず、ステップS31で、支援装置1から最適化機械語オブジェクト13及びソースコード・識別番号対応表を受信したか否かを判定し、最適化機械語オブジェクト13及びソースコード・識別番号対応表を受信していないときにはステップS32に移行して、プログラマブルコントローラ2のフラッシュメモリMFの第一の記憶領域に最適化機械語オブジェクト22及びソースコード・識別番号対応表が格納されているか否かを判定し、最適化機械語オブジェクト22及びソースコード・識別番号対応表が格納されているときには後述するステップS35に移行し、最適化機械語オブジェクト22及びソースコード・識別番号対応表が格納されていないときには前記ステップS31に戻る。
また、前記ステップS31の判定結果において、最適化オブジェクト13及びソースコード・識別番号対応表を受信しているときには、ステップS33に移行して、受信した最適化機械語オブジェクト13をプログラムメモリMPの所定記憶領域等に最適化機械語オブジェクト22として展開し、次いでステップS34に移行して、ソースコード・識別番号対応表に基づいてアドレステーブル24を最適化用アドレスに設定する。
次いで、ステップS35に移行して、アドレステーブル24の最適化用アドレスを参照して最適化機械語オブジェクト22を実行する。
次いで、ステップS36に移行して、最適化機械語オブジェクト22の実行が終了したか否かを判定し、最適化機械語オブジェクト22の実行が終了していないときには前記ステップS35に戻り、最適化機械語オブジェクトの実行が終了したときにはステップS37に移行して、支援装置1からデバッグ開始通知を受信したか否かを判定し、デバッグ開始通知を受信していないときには前記ステップS37に戻りデバッグ開始通知を待つ。デバッグ開始通知を受信したときにはステップS38に移行する。
このステップS38では、フラッシュメモリMFの第二の記憶領域へのデバッグ可能な機械語オブジェクト23の格納の有無を表すオブジェクト有無通知を作成し、次いでステップS39に移行して、作成したオブジェクト有無通知を、データ通信部21を介して支援装置1に送信してからステップS40に移行する。
このステップS40では、オブジェクト有無通知の内容がデバッグ可能な機械語オブジェクト23がフラッシュメモリMFの第二の記憶領域に格納されているものであるか否かを判定し、デバッグ可能な機械語オブジェクト23が格納されている場合には、ステップS41に移行して、アドレステーブル24のアドレスをデバッグ可能な機械語オブジェクト23のソースコード・機械語オブジェクト対応表に基づくデバッグ用アドレスに切換えてから後述するステップS48に移行し、デバッグ可能な機械語オブジェクト23が格納されていない場合には、ステップS42に移行する。
このステップS42では、支援装置1からデバッグ可能な機械語オブジェクト15、ソースコード・機械語オブジェクト対応表及びデバッグ情報を受信したか否かを判定し、これらを受信していないときには受信するまで待機し、デバッグ可能な機械語オブジェクト15、ソースコード・機械語オブジェクト対応表及びデバッグ情報を受信したときにはステップS43に移行する。
このステップS43では、ソースコード・機械語対応表に基づいてアドレステーブルにデバッグ用アドレスを設定し、次いでステップS44に移行して、アドレステーブルをデバッグ用アドレスに切換えてからステップS45に移行する。
このステップS45では、デバッグ情報に基づいてブレークポイントの位置を認識し、該当位置にブレークポイント処理コードを注入してからステップS46に移行し、ブレークポイント処理コードの注入処理が全て終了したか否かを判定し、ブレークポイント処理コードの注入処理が終了していないときには前記ステップS45に戻り、ブレークポイント処理コードの注入処理が全て終了したときにはステップS47に移行して、処理完了通知を、データ通信部21を介して支援装置1に送信してからステップS48に移行する。
このステップS48では、支援装置1からデバッグ完了通知を受信したか否かを判定し、デバッグ完了通知を受信していないときにはこれを受信するまで待機し、デバッグ完了通知を受信したときにはステップS49に移行して、アドレステーブル24を最適化用アドレスに切換えてから前記ステップS31に戻る。
次に、上記実施形態の動作を説明する。
支援装置1を使用してプログラマブルコントローラ2に機械語オブジェクトをダウンロードするには、先ず、支援装置1のユーザインタフェース部11でプログラムをIEC言語で記述したソースコードを作成する。このソースコードを作成した状態で、支援装置1で、表示装置3に表示された処理メニューからコンパイル開始メニュー31を選択する。このコンパイル開始メニュー31の選択によって、コンパイラ12でソースコードを最適化コンパイルして最適化機械語オブジェクト13を生成し、これを記憶装置5の所定記憶領域に格納する。この最適化コンパイルは、ソースコードの実行順序の変更、レジスタの有効活用等を行なうことにより、コードサイズを縮小する。ここで、最適化機械語オブジェクト13は、POU(Program Organization Unit)毎に生成される。このPOUとは、プログラム構成単位であり、プログラマブルコントローラ2の言語要素である。なお、POUの種類には、プログラム、ファンクションブロック等がある。
そして、支援装置1は最適化コンパイルを行なう際に、生成された最適化機械語オブジェクト13が何れのソースコードを変換したものであるかを対応付けるように、ソースコード・識別番号対応表に、ソースコードと機械語オブジェクトとを識別情報によって関連付ける情報を記録する。
そして、支援装置1は全ての最適化機械語オブジェクト13の生成が完了すると、データ通信部14を介してプログラマブルコントローラ2に送信して、プログラマブルコントローラ2にダウンロードする。
このとき、送信される各最適化機械語オブジェクト13は、図6に示すように、実際のPOU単位の最適化機械語オブジェクトに対して識別番号41及び最適化機械語オブジェクトであるかデバッグ可能な機械語オブジェクトであるかを表す判別情報42を付加してプログラマブルコントローラ2にダウンロードされる。
プログラマブルコントローラ2では、支援装置1から図6の識別番号41及び判別情報42を付加した最適化機械語オブジェクト13を受信すると、この最適化機械語オプジェクトをフラッシュメモリMFに格納し、これを最適化機械語オブジェクト22としてプログラムメモリMPの第一の記憶領域に展開する。この最適化機械語オブジェクト22の先頭アドレスは、図7に示すように、識別番号順にアドレステーブル24に展開されて、このアドレステーブル24に最適化用アドレスが設定される。
このため、このアドレステーブル24の最適化用アドレスを参照することにより、最適化機械語オブジェクト22が実行される。
このように、プログラマブルコントローラ2に最適化機械語オブジェクト13をダウンロードする際には、支援装置1のコンパイラ12で、ソースコードを最適化コンパイルして最適化機械語オブジェクト13を生成するとともに、生成した最適化機械語オブジェクトとソースコードとを識別番号によって関連付けるソースコード・識別番号対応表を作成する。そして、生成した最適化機械語オブジェクト13をプログラマブルコントローラ2にダウンロードする。支援装置1のコンパイラ12で別途デバッグ可能な機械語オブジェクト15を生成する必要がないので、最適化機械語オブジェクト13のプログラマブルコントローラ2へのダウンロードを短時間で容易に行なうことができる。
また、プログラマブルコントローラ2側では、ダウンロードされた最適化機械語オブジェクト22を実行することにより、アプリケーションを高速実行することができる。
一方、デバッグを行うには、支援装置1の表示装置3におけるメニュー画面で、デバッグ開始メニュー32を選択することにより、デバッグ処理を開始する。このとき、ユーザは先ず、所望のソースコードを開き、開いたソースコードにブレークポイントを設定する。このとき、支援装置1は開かれているソースコードをもとにソースコード・識別番号対応表を参照してソースコードに対応する識別番号を獲得する。さらに、表示画面上で指定されたソースコードの行又は位置を認識する。そして、支援装置1はブレークポイントが設定されたPOU毎のソースコードをコンパイラ12でコンパイルしてデバッグ可能な機械語オブジェクト15に変換する。この際に、識別番号とブレークポイントを設定したソースコードの行を指定する図8に示すデバッグ情報を作成する。このようにして、ユーザは順次ブレークポイントを設定する所望のソースコードを開いてブレークポイントを設定し、支援装置1はブレークポイントが設定されたソースコードをPOU毎にコンパイラ12でコンパイルしてデバッグ可能な機械語オブジェクト15に変換するとともにデバッグ情報を作成する。
そして、デバッグ可能な機械語オブジェクト15の変換及びデバッグ情報の作成が完了すると、支援装置1は、デバッグ可能な機械語オブジェクト15、デバッグ情報及びソースコード・機械語オブジェクト対応表をプログラマブルコントローラ2にダウンロードする。
プログラマブルコントローラ2では、デバッグ可能な機械語オブジェクト15、デバッグ情報及びソースコード・機械語オブジェクト対応表を受信すると、デバッグ可能な機械語オブジェクト15、デバッグ情報及びソースコード・機械語オブジェと対応表をフラッシュメモリMFに記憶し、デバッグ可能な機械語オブジェクト15をデバッグ可能なオブジェクト23としてプログラムメモリMPの第二の記憶領域に展開し、さらにアドレステーブル24の該当する識別番号の処理コードのアドレスを最適化機械語オブジェクト22からデバッグ可能な機械語オブジェクト23へ変更するデバッグ用アドレスを設定し、アドレステーブル24を最適化用アドレスからデバッグ用アドレスに変更する。
さらに、デバッグ情報に基づいて、ブレークポイントをかける位置をソースコード機械語オブジェクト対応表から取り出し、デバッグ可能な機械語オブジェクト23のその位置へブレークポイント処理コードを注入する。
このコード注入処理が終了すると、注入処理終了通知を支援装置1に送信し、ブレークポイント処理コードを実行した時点で、デバッグ可能な機械語オブジェクトの実行を停止して待機状態になる。そして、プログラムをブレークしたこと、およびプログラマブルコントローラ2の内部情報などを支援装置1に送信する。
支援装置1では注入処理終了通知を受信することにより、デバッグ処理を開始し、デバッグ処理を終了すると、デバッグ終了通知をプログラマブルコントローラ2に送信し、プログラマブルコントローラ2では、デバッグ終了通知を受信することにより、アドレステーブルをデバッグ用アドレスから最適化用アドレスに切換え、最適化機械語オブジェクト22の実行を再開する。
また、デバッグ開始時にプログラマブルコントローラ2にデバック可能な機械語オブジェクト23が格納されている場合には、支援装置1ではステップS11からステップS17に移行して(図3参照)、デバッグ処理を実行する。
このように、上記実施形態によると、支援装置1で機械語オブジェクトをコンパイルしてプログラマブルコントローラ2にダウンロードする際には、ユーザインタフェース部11でIEC言語によりプログラムを記述してソースコードを作成する。このソースコードの作成が終了すると、コンパイラ12でコンパイルを開始するが、この状態では、最適化コンパイルのみを行なって、最適化機械語オブジェクトをPOU毎に生成し、これと同時にソースコード・識別番号対応表を作成する。そして、生成した最適化機械語オブジェクトに図7に示すように識別番号41及び判定情報42を付加してデータ送信部14からプログラマブルコントローラ2に送信してダウンロードを行なう。
このとき、コンパイラ12で最適化コンパイルして最適化機械語オブジェクト13のみを生成し、生成した最適化機械語オブジェクト13をプログラマブルコントローラ2にダウンロードするので、ダウンロードに要する時間を必要最小限とすることができるとともに、プログラマブルコントローラ2でダウンロードされた最適化機械語オブジェクト23を実行するので、アプリケーションの高速実行を行なうことができる。
一方、デバッグ時には、支援装置1でPOU毎に、デバッグ対象となる機械語オブジェクトのみをコンパイルしてデバッグ可能な機械語オブジェクトを生成し、これをデバッグ情報及びソースコード機械語オブジェクト対応表とともにプログラマブルコントローラ2にダウンロードするので、コンパイル及びダウンロード時間を必要最小限とすることができ、ユーザが効率良くソフトウェアの開発を実施できる。
なお、上記実施形態においては、ソースコードから最適化機械語オブジェクト13への変換とソースコードからデバッグ可能な機械語オブジェクトへの変換とを個別に行なう場合について説明したが、ソースコードからの最適化機械語オブジェクトへの変換及びデバッグ可能な機械語オブジェクト15への変換を連続して行い、生成した最適化機械語オブジェクト13及びデバッグ可能な機械語オブジェクト15をプログラマブルコントローラ2に連続してダウンロードするようにしてもよい。
1…支援装置、2…プログラマブルコントローラ、3…表示装置、4…入力装置、11…ユーザインタフェース部、12…コンパイラ、13…最適化機械語オブジェクト、14…データ通信部、15…デバッグ可能な機械語オブジェクト、21…データ通信部、22…最適化機械語オブジェクト、23…デバッグ可能な機械語オブジェクト、24…アドレステーブル

Claims (3)

  1. プログラムを機械語オブジェクトに変換するコンパイラを有する支援装置を備え、該コンパイラは最適化機械語オブジェクトとデバッグ可能な機械語オブジェクトとを生成可能に構成され、通常時は前記最適化機械語オブジェクトのみをコンパイルしてターゲットにダウンロードし、当該ターゲットで最適化機械語オブジェクトを実行し、デバッグ時は前記コンパイラでデバッグ可能な機械語オブジェクトをコンパイルして前記ターゲットにダウンロードし、デバッグを実施するようにし
    前記ターゲットは、
    前記最適化機械語オブジェクトを保持する第一の記憶領域と、
    前記デバッグ可能な機械語オブジェクトを保持する第二の記憶領域と、
    前記最適化機械語オブジェクトの先頭アドレスまたは前記デバッグ可能な機械語オブジェクトの先頭アドレスを登録するテーブルと
    このテーブルに登録されたいずれかの前記先頭アドレスを指定して前記最適化機械語オブジェクトまたは前記デバッグ可能な機械語オブジェクトを実行するプログラム実行部と、を有し、
    前記支援装置からのデバッグ指示に基づき前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に保持されているかを判定し、
    この判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に既に保持されていると判定されたとき、前記第二の記憶領域に保持されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させ、
    前記判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に未保持と判定されたとき、前記支援装置から前記デバッグ可能な機械語オブジェクトを受信して前記第二の記憶領域に転送した後、該転送されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させる
    ことを特徴とするデバッグ方法。
  2. 請求項1に記載のデバッグ方法において、
    前記ターゲットは前記支援装置からプログラムの実行の停止位置を示すブレーク位置情報を受信すると、該ブレーク位置情報に基づき前記デバッグ可能な機械語オブジェクトの所定箇所にプログラムの実行を停止するためのブレーク命令を挿入し、
    前記プログラム実行部は前記ブレーク命令の実行に伴い前記デバッグ可能な機械語オブジェクトの実行を停止し、
    この停止状態を前記支援装置に送信す
    ことを特徴とするデバッグ方法。
  3. 請求項1又は2に記載されたデバッグ方法において、
    前記コンパイラは、IEC言語で記述されたプログラムを機械語オブジェクトに変換するように構成され、前記ターゲットはプログラマブルコントローラで構成され、前記支援装置はプログラマブルコントローラのローダ機能を具備していることを特徴とするデバッグ方法。
JP2010184259A 2010-08-19 2010-08-19 デバッグ方法 Active JP5589670B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010184259A JP5589670B2 (ja) 2010-08-19 2010-08-19 デバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010184259A JP5589670B2 (ja) 2010-08-19 2010-08-19 デバッグ方法

Publications (2)

Publication Number Publication Date
JP2012043215A JP2012043215A (ja) 2012-03-01
JP5589670B2 true JP5589670B2 (ja) 2014-09-17

Family

ID=45899433

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010184259A Active JP5589670B2 (ja) 2010-08-19 2010-08-19 デバッグ方法

Country Status (1)

Country Link
JP (1) JP5589670B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940218B2 (en) 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5977131B2 (ja) * 2012-09-27 2016-08-24 株式会社Screenホールディングス 分析システムおよび分析方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110250A (ja) * 1997-09-30 1999-04-23 Mitsubishi Electric Corp ソフトウェア実行モード切替方法
JPH11242509A (ja) * 1998-02-26 1999-09-07 Omron Corp プログラマブルロジックコントローラ
JP4366575B2 (ja) * 2003-11-05 2009-11-18 オムロン株式会社 ツール
JP4822817B2 (ja) * 2005-11-22 2011-11-24 パナソニック株式会社 コンパイルシステム
JP2008204023A (ja) * 2007-02-19 2008-09-04 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
JP2009064207A (ja) * 2007-09-06 2009-03-26 Fuji Electric Systems Co Ltd コンパイル装置
JP5051377B2 (ja) * 2008-03-15 2012-10-17 オムロン株式会社 プログラム開発支援装置の動作仕様管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940218B2 (en) 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary
US10133652B2 (en) 2016-02-15 2018-11-20 International Business Machines Corporation Debugging optimized code using FAT binary

Also Published As

Publication number Publication date
JP2012043215A (ja) 2012-03-01

Similar Documents

Publication Publication Date Title
CN100555218C (zh) 用于改善片上仿真***中高级语言的仿真速度的装置和方法
JP4877068B2 (ja) ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
CN102279789B (zh) 生产阶段嵌入式***的调试***及其调试方法
CN106021101B (zh) 对移动终端进行测试的方法及装置
JP2018045544A (ja) プログラム処理装置およびプログラム
JP5800135B2 (ja) プログラマブルコントローラ
JP5636783B2 (ja) プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP5589670B2 (ja) デバッグ方法
JP2016224557A (ja) プログラム作成支援装置、プログラムおよび判別方法
JP2009157533A (ja) プログラマブルコントローラシステム
JP5425317B2 (ja) モーションsfcプログラム部品作成装置
JP6720993B2 (ja) サポート装置およびサポートプログラム
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
KR20130020135A (ko) 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법
US11429357B2 (en) Support device and non-transient computer-readable recording medium recording support program
JP2010287101A (ja) ソフトウエアデバッグ装置及び方法
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
JP4802775B2 (ja) コントローラ支援装置およびプログラマブルコントローラ
JP4853998B2 (ja) デバッガ装置及びそのデバッガ装置を使用したデバッグ方法
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
JP2018151936A (ja) プログラム作成装置およびプログラム
JP2006236088A (ja) トレースデータ収集装置、トレースデータ収集支援装置、トレースデータ収集方法、トレースデータ収集プログラムおよびトレースデータ収集支援プログラム
JP2006146731A (ja) プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140416

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140714

R150 Certificate of patent or registration of utility model

Ref document number: 5589670

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250