JP5589670B2 - デバッグ方法 - Google Patents
デバッグ方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 87
- 238000003860 storage Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 3
- 238000005457 optimization Methods 0.000 description 34
- 238000012545 processing Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 238000002347 injection Methods 0.000 description 7
- 239000007924 injection Substances 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
そこで、従来、最適化オブジェクトファイルの内容を入力し、この最適化オブジェクトの内容に対応して逆コンパイラによりソースコードデバッグ用ソースコードを生成するとともに、最適化オブジェクトファイルの内容に基づき前記ソースコードデバッグ用ソースコードに対応するマシンコード部分およびシンボル情報部分から構成されたオブジェクトファイルを生成し、シンボル情報部分及びソースコードデバッグ用ソースコードを使用してソースコードデバッグを行なうようにしたソースコードレベルデバッグ装置が提案されている(例えば、特許文献1参照)。
そこで、本発明は、上記従来例の未解決の課題に着目してなされたものであり、最適化オブジェクトを逆コンパイルすることなく、デバッグ時にソースコード上でデバッグできるとともに、コンパイル及びダウンロード時間を必要最小限とすることができるデバッグ方法を提供することを目的としている。
前記最適化機械語オブジェクトの先頭アドレスまたは前記デバッグ可能な機械語オブジェクトの先頭アドレスを登録するテーブルと、このテーブルに登録されたいずれかの前記先頭アドレスを指定して前記最適化機械語オブジェクトまたは前記デバッグ可能な機械語オブジェクトを実行するプログラム実行部と、を有し、前記支援装置からのデバッグ指示に基づき前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に保持されているかを判定し、この判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に既に保持されていると判定されたとき、前記第二の記憶領域に保持されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させ、前記判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に未保持と判定されたとき、前記支援装置から前記デバッグ可能な機械語オブジェクトを受信して前記第二の記憶領域に転送した後、該転送されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させることを特徴としている。
また、請求項3に係るデバック方法は、請求項1又は2に係る発明において、前記コンパイラは、IEC言語で記述されたプログラムを機械語オブジェクトに変換するように構成され、前記ターゲットはプログラマブルコントローラで構成され、前記支援装置はプログラマブルコントローラのローダ機能を具備していることを特徴としている。
図1は、本発明の一実施形態を示すブロック図であり、図中、支援装置1は入力されるソースプーグラムを機械語オブジェクトに変換する例えばプログラムローダで構成され、この支援装置1から機械語オブジェクトがターゲット、例えばプログラマブルコントローラ2にダウンロードされる。支援装置1には、表示装置3、入力装置4(例えばキーボードやポインティングデバイス等)及び記憶装置5が内部バス6を介してCPU7に接続されている。
ここで、支援装置1の具体的な処理の一例を説明する。図3は、支援装置の支援処理手順の一例を示している。この支援処理は、先ず、ステップS1で、処理メニューを表示する。この処理メニューとしては図4に示すように、コンパイル開始メニュー31、デバッグ開始メニュー32、終了ボタン33が少なくとも設定されており、これらメニュー31〜33のうちの所望のメニュー上に例えばマウス、キーボード等の入力装置4によってカーソルを移動させ、この状態で例えばマウスをクリックすることにより、メニューを選択することができる。
このステップS6では、デバッグ開始メニュー32が選択されたか否かを判定し、デバッグ開始メニュー32が選択されていないときにはステップS7に移行して、支援処理を終了するか否かを判定する。この判定は、処理メニューに表示されている終了ボタン33が選択されているか否かを判定し、終了ボタン33が選択されているときには、支援処理を終了し、終了ボタン33が選択されていないときには前記ステップS1に戻る。
このステップS11では、オブジェクト有無通知の内容がデバッグ可能な機械語オブジェクトが存在するものであるか否かを判定し、デバッグ可能な機械語オブジェクトが存在する場合には後述するステップS17に移行し、デバッグ可能な機械語オブジェクトが存在しない場合にはステップS12に移行する。
このステップS15では、記憶装置5の所定記憶領域に格納されたデバッグ可能な機械語オブジェクト15、ソースコード・機械語オブジェクト対応表及びデバッグ情報を、データ通信部14を介してプログラマブルコントローラ2に送信してダウンロードする。
このステップS17では、デバッグ処理を実行し、次いで、ステップS18に移行して、デバッグ処理が終了したか否かを判定し、デバッグ処理が終了していないときにはこれが終了するまで待機し、デバッグ処理が終了したときにはステップS19に移行して、デバッグ終了通知を、データ通信部14を介してプログラマブルコントローラ2に送信してから前記ステップS7に移行する。
次いで、ステップS36に移行して、最適化機械語オブジェクト22の実行が終了したか否かを判定し、最適化機械語オブジェクト22の実行が終了していないときには前記ステップS35に戻り、最適化機械語オブジェクトの実行が終了したときにはステップS37に移行して、支援装置1からデバッグ開始通知を受信したか否かを判定し、デバッグ開始通知を受信していないときには前記ステップS37に戻りデバッグ開始通知を待つ。デバッグ開始通知を受信したときにはステップS38に移行する。
このステップS40では、オブジェクト有無通知の内容がデバッグ可能な機械語オブジェクト23がフラッシュメモリMFの第二の記憶領域に格納されているものであるか否かを判定し、デバッグ可能な機械語オブジェクト23が格納されている場合には、ステップS41に移行して、アドレステーブル24のアドレスをデバッグ可能な機械語オブジェクト23のソースコード・機械語オブジェクト対応表に基づくデバッグ用アドレスに切換えてから後述するステップS48に移行し、デバッグ可能な機械語オブジェクト23が格納されていない場合には、ステップS42に移行する。
このステップS43では、ソースコード・機械語対応表に基づいてアドレステーブルにデバッグ用アドレスを設定し、次いでステップS44に移行して、アドレステーブルをデバッグ用アドレスに切換えてからステップS45に移行する。
このステップ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の生成が完了すると、データ通信部14を介してプログラマブルコントローラ2に送信して、プログラマブルコントローラ2にダウンロードする。
プログラマブルコントローラ2では、支援装置1から図6の識別番号41及び判別情報42を付加した最適化機械語オブジェクト13を受信すると、この最適化機械語オプジェクトをフラッシュメモリMFに格納し、これを最適化機械語オブジェクト22としてプログラムメモリMPの第一の記憶領域に展開する。この最適化機械語オブジェクト22の先頭アドレスは、図7に示すように、識別番号順にアドレステーブル24に展開されて、このアドレステーブル24に最適化用アドレスが設定される。
このため、このアドレステーブル24の最適化用アドレスを参照することにより、最適化機械語オブジェクト22が実行される。
また、プログラマブルコントローラ2側では、ダウンロードされた最適化機械語オブジェクト22を実行することにより、アプリケーションを高速実行することができる。
プログラマブルコントローラ2では、デバッグ可能な機械語オブジェクト15、デバッグ情報及びソースコード・機械語オブジェクト対応表を受信すると、デバッグ可能な機械語オブジェクト15、デバッグ情報及びソースコード・機械語オブジェと対応表をフラッシュメモリMFに記憶し、デバッグ可能な機械語オブジェクト15をデバッグ可能なオブジェクト23としてプログラムメモリMPの第二の記憶領域に展開し、さらにアドレステーブル24の該当する識別番号の処理コードのアドレスを最適化機械語オブジェクト22からデバッグ可能な機械語オブジェクト23へ変更するデバッグ用アドレスを設定し、アドレステーブル24を最適化用アドレスからデバッグ用アドレスに変更する。
このコード注入処理が終了すると、注入処理終了通知を支援装置1に送信し、ブレークポイント処理コードを実行した時点で、デバッグ可能な機械語オブジェクトの実行を停止して待機状態になる。そして、プログラムをブレークしたこと、およびプログラマブルコントローラ2の内部情報などを支援装置1に送信する。
このように、上記実施形態によると、支援装置1で機械語オブジェクトをコンパイルしてプログラマブルコントローラ2にダウンロードする際には、ユーザインタフェース部11でIEC言語によりプログラムを記述してソースコードを作成する。このソースコードの作成が終了すると、コンパイラ12でコンパイルを開始するが、この状態では、最適化コンパイルのみを行なって、最適化機械語オブジェクトをPOU毎に生成し、これと同時にソースコード・識別番号対応表を作成する。そして、生成した最適化機械語オブジェクトに図7に示すように識別番号41及び判定情報42を付加してデータ送信部14からプログラマブルコントローラ2に送信してダウンロードを行なう。
Claims (3)
- プログラムを機械語オブジェクトに変換するコンパイラを有する支援装置を備え、該コンパイラは最適化機械語オブジェクトとデバッグ可能な機械語オブジェクトとを生成可能に構成され、通常時は前記最適化機械語オブジェクトのみをコンパイルしてターゲットにダウンロードし、当該ターゲットで最適化機械語オブジェクトを実行し、デバッグ時は前記コンパイラでデバッグ可能な機械語オブジェクトをコンパイルして前記ターゲットにダウンロードし、デバッグを実施するようにし、
前記ターゲットは、
前記最適化機械語オブジェクトを保持する第一の記憶領域と、
前記デバッグ可能な機械語オブジェクトを保持する第二の記憶領域と、
前記最適化機械語オブジェクトの先頭アドレスまたは前記デバッグ可能な機械語オブジェクトの先頭アドレスを登録するテーブルと、
このテーブルに登録されたいずれかの前記先頭アドレスを指定して前記最適化機械語オブジェクトまたは前記デバッグ可能な機械語オブジェクトを実行するプログラム実行部と、を有し、
前記支援装置からのデバッグ指示に基づき前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に保持されているかを判定し、
この判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に既に保持されていると判定されたとき、前記第二の記憶領域に保持されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させ、
前記判定にて前記デバッグ可能な機械語オブジェクトが前記第二の記憶領域に未保持と判定されたとき、前記支援装置から前記デバッグ可能な機械語オブジェクトを受信して前記第二の記憶領域に転送した後、該転送されたデバッグ可能な機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記デバッグ可能な機械語オブジェクトを実行させる
ことを特徴とするデバッグ方法。 - 請求項1に記載のデバッグ方法において、
前記ターゲットは前記支援装置からプログラムの実行の停止位置を示すブレーク位置情報を受信すると、該ブレーク位置情報に基づき前記デバッグ可能な機械語オブジェクトの所定箇所にプログラムの実行を停止するためのブレーク命令を挿入し、
前記プログラム実行部は前記ブレーク命令の実行に伴い前記デバッグ可能な機械語オブジェクトの実行を停止し、
この停止状態を前記支援装置に送信する
ことを特徴とするデバッグ方法。 - 請求項1又は2に記載されたデバッグ方法において、
前記コンパイラは、IEC言語で記述されたプログラムを機械語オブジェクトに変換するように構成され、前記ターゲットはプログラマブルコントローラで構成され、前記支援装置はプログラマブルコントローラのローダ機能を具備していることを特徴とするデバッグ方法。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5977131B2 (ja) * | 2012-09-27 | 2016-08-24 | 株式会社Screenホールディングス | 分析システムおよび分析方法 |
Family Cites Families (7)
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 | オムロン株式会社 | プログラム開発支援装置の動作仕様管理方法 |
-
2010
- 2010-08-19 JP JP2010184259A patent/JP5589670B2/ja active Active
Cited By (2)
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) | 生产阶段嵌入式系统的调试系统及其调试方法 | |
JP2002099312A (ja) | プログラマブルコントローラおよび制御プログラム開発支援装置 | |
CN102346235A (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) | ソフトウエアデバッグ装置及び方法 | |
JP4802775B2 (ja) | コントローラ支援装置およびプログラマブルコントローラ | |
JP2008204023A (ja) | プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法 | |
JP4853998B2 (ja) | デバッガ装置及びそのデバッガ装置を使用したデバッグ方法 | |
JP2007004516A (ja) | 組込みシステムのプログラムデバッグ方法 | |
JP2018151936A (ja) | プログラム作成装置およびプログラム | |
JP2006236088A (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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |