JP5893063B2 - デバッグ対象装置、制御方法及び制御プログラム - Google Patents

デバッグ対象装置、制御方法及び制御プログラム Download PDF

Info

Publication number
JP5893063B2
JP5893063B2 JP2014052504A JP2014052504A JP5893063B2 JP 5893063 B2 JP5893063 B2 JP 5893063B2 JP 2014052504 A JP2014052504 A JP 2014052504A JP 2014052504 A JP2014052504 A JP 2014052504A JP 5893063 B2 JP5893063 B2 JP 5893063B2
Authority
JP
Japan
Prior art keywords
program
program code
area
specific
stored
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.)
Expired - Fee Related
Application number
JP2014052504A
Other languages
English (en)
Other versions
JP2015176363A (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.)
PFU Ltd
Original Assignee
PFU 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 PFU Ltd filed Critical PFU Ltd
Priority to JP2014052504A priority Critical patent/JP5893063B2/ja
Publication of JP2015176363A publication Critical patent/JP2015176363A/ja
Application granted granted Critical
Publication of JP5893063B2 publication Critical patent/JP5893063B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、デバッグ対象装置、制御方法及び制御プログラムに関し、特に、特定のプログラムを実行するデバッグ対象装置、制御方法及び制御プログラムに関する。
一般に、コンピュータ起動時に実行されるいわゆるブートファームウェアは、汎用的に利用可能なように処理を単純化する必要があるため、十分なデバッグ機能を有していない。なお、ブートファームウェアは、例えばBIOS(Basic Input / Output System)、UEFI(Unified Extensible Firmware Interface)等である。したがって、製品開発時にブートファームウェアをデバッグする場合、又は、製品出荷後にブートファームウェアに問題が発生した場合、効率良く調査を行うことが困難であった。
例えばJTAG(Joint Test Action Group)等の規格に従って接続される外部装置を利用することにより、ブートファームウェアのデバッグを十分に行うことができる。しかしながら、JTAGを利用するためにはJTAG用の特殊な外部インタフェースが実装されている必要があり、そのような外部インタフェースを実装していない装置ではJTAGを利用することはできない。
したがって、ブートファームウェアのデバッグを行えるように、シリアルインタフェース、LAN(Local Area Network)等の汎用的なインタフェースを利用するデバッガプログラムをブートファームウェアに組み込んでおく手法が一般に利用されている。デバッガプログラムは、例えば問題が発生した時にブートファームウェアの実行を中断し、シリアルインタフェース、LAN等を介してユーザに指定された機能(例えば、メモリ空間又はI/O空間への書込み又は読出し等)を実行するコンソール型デバッガである。しかしながら、問題が発生し得ると想定していた箇所以外で問題が発生した場合、デバッガプログラムは実行されない。この場合にデバッガプログラムを実行させるためには、問題が発生した箇所でデバッガプログラムを実行するようにブートファームウェアのソースコードを修正し、コンパイルし、更にコンピュータ上のメモリに書き込む必要がある。これらの手順には多大な時間及び労力を要するため、デバッグ効率が著しく低くなり、問題の原因究明及び解決までに要する時間が極めて大きくなっていた。
また、問題が発生した場合だけでなく、調査等のために、特定のデバイスの初期化処理が完了した直後にその特定のデバイスが有する各レジスタの値を取得する必要が生じた場合も、上記の手順が必要となり作業効率は著しく低くなっていた。
外部にある更新データファイルを参照し、所定のプログラムの内容を更新する処理装置が開示されている。この処理装置は、更新対象の格納場所と現在格納されている現データとを更新データファイルより読出して現データ格納部へ格納し、更新対象の格納場所と新たに格納されるべき更新データとを更新データファイルより読出して更新データ格納部へ格納する。そして、処理装置は、指定部から更新が指定された時、現データ格納部中の格納場所にアクセスし、更新データ格納部にある更新データを該格納場所へ格納する(特許文献1を参照)。
また、すでに作られた機械語形態のプログラムの一部に追加する機械語命令が入力されると、入力された機械語命令をその機械語形態のプログラムの最後に付加する機械語命令追加方式が開示されている。この機械語命令追加方式では、追加前プログラムの命令Aと命令Eとの間に追加命令Cを追加する場合、まず命令Aの領域に機械語形態のプログラムの最後に実行順序を変更する命令Bを埋め込む。さらに、機械語形態のプログラムの最後に命令Aを置き、この後に命令Cを置き、さらに、命令Eに実行順序を戻す命令Dを置く(特許文献2を参照)。
特開昭57−111740号公報 特開昭62−251929号公報
デバッグ対象装置において、特定のプログラム内の特定の領域でその特定のプログラムの実行を中断し、記憶部に予め記憶されているデバッガプログラムを実行することを簡易に実施できることが望まれている。
本発明の目的は、特定のプログラム内の特定の領域でその特定のプログラムの実行を中断し、記憶部に予め記憶されているデバッガプログラムを実行することを簡易に実施することが可能なデバッグ対象装置、制御方法及び制御プログラムを提供することにある。
本発明に係るデバッグ対象装置は、特定のプログラム及び特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部と、記憶部における特定のプログラム内の特定の領域に関する領域情報の指定を受け付けるインタフェース部と、インタフェース部が領域情報の指定を受け付けると、特定の領域に記憶された第1プログラムコードをデバッガプログラムを実行するための第2プログラムコードに置換する置換部と、を有する。
また、本発明に係る制御方法は、特定のプログラム及び特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置の制御方法であって、記憶部における特定のプログラム内の特定の領域に関する領域情報の指定を受け付け、領域情報の指定を受け付けると、特定の領域に記憶された第1プログラムコードをデバッガプログラムを実行するための第2プログラムコードに置換することを含む。
また、本発明に係る制御プログラムは、特定のプログラム及び特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置に実行させる制御プログラムであって、記憶部における特定のプログラム内の特定の領域に関する領域情報の指定を受け付け、領域情報の指定を受け付けると、特定の領域に記憶された第1プログラムコードをデバッガプログラムを実行するための第2プログラムコードに置換する、ことをデバッグ対象装置に実行させる。
また、本発明に係るデバッグシステムは、特定のプログラム及び特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置と、情報処理装置とを有するデバッグシステムであって、情報処理装置は、記憶部における特定のプログラム内の特定の領域に関する領域情報の指定を受け付ける操作部と、領域情報をデバッグ対象装置に送信する第1インタフェース部と、を有し、デバッグ対象装置は、第1インタフェース部から領域情報を受信する第2インタフェース部と、第2インタフェース部が領域情報を受信すると、特定の領域に記憶された第1プログラムコードをデバッガプログラムを実行するための第2プログラムコードに置換する置換部と、を有する。
本発明によれば、特定の領域の指定を受け付けると、特定の領域に記憶されたプログラムコードを、記憶部に記憶された、特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを実行するための第2プログラムコードに置換する。したがって、特定のプログラム内の特定の領域でその特定のプログラムの実行を中断し、記憶部に予め記憶されているデバッガプログラムを実行することを簡易に実施することが可能なデバッグ対象装置、制御方法及び制御プログラムを提供することができる。
実施形態に従ったデバッグシステム1の概略構成を示す図である。 CPU130の概略構成を示す図である。 プログラム変更処理の動作の一例を示すフローチャートである。 置換処理の動作の例を示すフローチャートである。 置換管理テーブルのデータ構造の一例を示す図である。 復元処理の動作の例を示すフローチャートである。 置換プログラムのデータ構造の一例を示す図である。 置換プログラムに従った処理の動作の一例を示すフローチャートである。 他の実施形態に従ったデバッグシステム2の概略構成を示す図である。
以下、本発明に係るデバッグ対象装置、制御方法及び制御プログラムについて図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
図1は、実施形態に従ったデバッグシステム1の概略構成を示す図である。
図1に示すように、デバッグシステム1は、デバッグ対象装置100と、入力装置200と、出力装置210とを有する。
入力装置200は、キーボード、マウス等の入力デバイスであり、ユーザの操作に応じた信号をデバッグ対象装置100に対して出力する。
出力装置210は、液晶、有機EL(Electro-Luminescence)等から構成されるディスプレイであり、デバッグ対象装置100から出力された画像データを表示する。
デバッグ対象装置100は、デバッグされる装置であり、任意の組み込みシステムを有する。デバッグ対象装置100は、インタフェース部110と、記憶装置120と、CPU(Central Processing Unit)130とを有する。以下、デバッグ対象装置100の各部について詳細に説明する。
インタフェース部110は、入力インタフェース111と、出力インタフェース112とを有する。
入力インタフェース111は、入力装置200から信号を取得するインタフェース回路を有し、入力装置200から取得した信号をCPU130に対して出力する。
出力インタフェース112は、出力装置210に対して画像データを出力するインタフェース回路を有し、CPU130から出力された画像データを出力装置210に対して出力する。
記憶装置120は、ROM(Read Only Memory)121と、RAM(Random Access Memory)122とを有する。なお、記憶装置120は、ROM121及びRAM122の代わりに、又は、ROM121及びRAM122に加えて、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有してもよい。
ROM121には、デバッグ対象装置100の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムには、コンピュータ起動時に実行されるいわゆるブートファームウェア及びブートファームウェアの実行を中断してデバッグを行うためのデバッガプログラム、デバッガプログラムを実行するための置換プログラム等が含まれる。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体からインストールされてもよい。可搬型記録媒体は、例えばCD−ROM(compact disk read only memory)、DVD−ROM(digital versatile disk read only memory)等である。コンピュータプログラムは、公知のセットアッププログラム等を用いてROM121にインストールされる。さらに、ROM121には、デバッガプログラムが格納されたアドレス、置換プログラムが格納されたアドレス等が記憶される。
RAM122には、デバッグ対象装置100が起動した後、所定のタイミングで、ROM121に記憶されたコンピュータプログラムの内の一部がロードされる。さらに、RAM122には、置換管理テーブルが記憶される。置換管理テーブルの詳細については後述する。
CPU130は、インタフェース部110及び記憶装置120と接続され、これらの各部を制御する。CPU130は、インタフェース部110の入出力制御、記憶装置120の制御等を行う。
図2は、CPU130の概略構成を示す図である。図2に示すように、CPU130は、置換部131及び復元部135等を有する。置換部131は、検索部132、テーブル変更部133及びプログラム変更部134等を有する。これらの各部は、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。なお、これらの各部は、それぞれ独立した集積回路、マイクロプロセッサ、ファームウェア等で構成されてもよい。
図3は、デバッグ対象装置100によるプログラム変更処理の動作の一例を示すフローチャートである。以下、図3に示したフローチャートを参照しつつ、プログラム変更処理の動作を説明する。なお、以下に説明する動作のフローは、予め記憶装置120に記憶されているプログラムに基づき主にCPU130によりデバッグ対象装置100の各要素と協働して実行される。
なお、デバッグ対象装置100の起動直後、CPU130は、ROM121に記憶されたプログラムの内のブートファームウェアを読み出して実行する。そして、CPU130は、ROM121に記憶されたブートファームウェアに従って、ROM121に記憶されたコンピュータプログラムの内の一部(ブートファームウェアを含む)をRAM122にロードする。以後、CPU130は、RAM122にロードしたプログラムを読み出して実行する。図3のフローチャートは、少なくともインタフェース部110の初期化処理が完了し、インタフェース部110を介して入力装置200及び出力装置210を使用可能になってから実行される。また、図3のフローチャートは、例えばRAM122にロードされたブートファームウェアによる処理の実行中に、ユーザにより入力装置200を用いてプログラム書換え機能の実行開始を指示する入力操作が行われた場合に実行される。
最初に、CPU130は、ユーザによるコマンドを入力するための所定のプロンプトを出力インタフェース112を介して出力装置210に表示する(ステップS101)。
次に、CPU130は、ユーザにより入力装置200を用いてコマンドが入力され、入力インタフェース111が、入力されたコマンドを受け付けるまで待機する(ステップS102)。
次に、CPU130は、入力インタフェース111がコマンドを受け付けると、受け付けたコマンドが、RAM122におけるブートファームウェア内の特定の領域の置換指示であるか否かを判定する(ステップS103)。
置換指示には、特定の領域に関する領域情報が含まれる。領域情報は、その特定の領域のアドレス、その特定の領域に記憶されたプログラムコード、又はそのプログラムコードに対応するプログラム言語等である。なお、プログラムコードとはプログラム言語をコンパイルした機械語を意味する。置換指示は、例えば”add xxxxxxxx”と指定される。この置換指示のうち、”add”が特定の領域の置換を指示するコマンドであり、”xxxxxxxx”が領域情報である。
後述するように、置換指示を受け付けると、置換部131は、領域情報により指定された特定の領域に記憶されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換する。例えば、ブートファームウェアに含まれる自己診断プログラムがI/O空間の80番地にデータ60を出力した時に、特定のメモリ空間又はI/O空間を確認するためにデバッガプログラムを実行したい場合、領域情報は”out 80 60”と指定することができる。
受け付けたコマンドが置換指示である場合、置換部131は、置換処理を実行し(ステップS104)、処理をステップS101に戻す。置換部131は、置換処理において、ブートファームウェア内の特定の領域に記憶されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換する。置換処理の詳細については後述する。
一方、受け付けたコマンドが置換指示でなかった場合、CPU130は、受け付けたコマンドが、RAM122におけるブートファームウェア内の特定の領域の復元指示であるか否かを判定する(ステップS105)。復元指示には、置換指示において指定された領域情報が含まれる。例えば、復元指示は、”del xxxxxxxx”と指定される。この復元指示のうち、”del”が特定の領域の復元を指示するコマンドであり、”xxxxxxxx”が領域情報である。
受け付けたコマンドが復元指示である場合、復元部135は、復元処理を実行し(ステップS106)、処理をステップS101に戻す。復元部135は、復元処理において、デバッガプログラムを実行するためのプログラムコードに置換され、他の領域に記憶されていたプログラムコードを特定の領域に書き戻す。復元処理の詳細については後述する。
一方、受け付けたコマンドが復元指示でなかった場合、CPU130は、受け付けたコマンドが終了指示であるか否かを判定する(ステップS107)。受け付けたコマンドが終了指示でない場合、CPU130は、処理をステップS101に戻し、ステップS101〜S107の処理を繰り返す。一方、受け付けたコマンドが終了指示であった場合、CPU130は、一連のステップを終了する。
図4は、置換処理の動作の例を示すフローチャートである。図4に示す動作のフローは、図3に示すフローチャートのステップS104において実行される。
最初に、検索部132は、置換指示に含まれる領域情報が示す特定の領域を特定する(ステップS201)。
検索部132は、領域情報が特定の領域のアドレスである場合、そのアドレスが示す領域を特定の領域として特定する。
一方、検索部132は、領域情報が特定の領域に記憶されたプログラムコードである場合、RAM122においてそのプログラムコードを探索し、そのプログラムコードを検出した領域を特定の領域として特定する。
一方、検索部132は、領域情報が特定の領域に記憶されたプログラムコードに対応するプログラム言語である場合、そのプログラム言語をコンパイルしてそのプログラム言語に対応するプログラムコードに変換する。そして、検索部132は、RAM122において、変換したプログラムコードを探索することにより、特定の領域を特定する。なお、プログラム言語とプログラムコードの変換テーブルを予め記憶しておき、検索部132は、変換テーブルを用いてプログラム言語をプログラムコードに変換してもよい。また、検索部132は、RAM122に記憶された各プログラムコードを順次逆アセンブル又は逆コンパイルしていき、領域情報が示すプログラム言語に相当するプログラム言語に変換された領域を特定の領域としてもよい。
なお、置換部131は、RAM122において特定の領域が検出されなかった場合、その旨を出力インタフェース112を介して出力装置210に表示し、置換処理を終了する。
次に、テーブル変更部133は、RAM122に記憶された置換管理テーブルを更新する(ステップS202)。
図5は、置換管理テーブルのデータ構造の一例を示す図である。図5に示すように、置換管理テーブルには、置換される特定の領域のアドレスと、置換されるプログラムコード(群)と、置換指示に含まれる領域情報とが関連付けて記憶される。
テーブル変更部133は、特定の領域のアドレスと、特定の領域に記憶されたプログラムコードと、置換指示に含まれる領域情報とを関連付けて置換管理テーブルに記憶する。これにより、テーブル変更部133は、特定の領域に記憶されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換する前に、RAM122の他の領域に記憶する。
次に、プログラム変更部134は、特定の領域に記憶されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換し(ステップS203)、一連のステップを終了する。
例えば、デバッガプログラムを実行するためのプログラムコードは、デバッガプログラムを実行するための置換プログラムを実行する命令(call命令又はjmp命令)である。プログラム変更部134は、ROM121に記憶された置換プログラムの格納アドレスから置換プログラムがロードされるRAM122のアドレスを特定し、特定したアドレスに格納されている置換プログラムを実行する命令をその特定の領域に書き込む。なお、置換対象である特定の領域に記憶されたプログラムコードが、デバッガプログラムを実行するためのプログラムコードより大きい場合、プログラム変更部134は、余った領域にNOP命令を書き込む。置換プログラムの詳細については後述する。
図6は、復元処理の動作の例を示すフローチャートである。図6に示す動作のフローは、図3に示すフローチャートのステップS106において実行される。
最初に、復元部135は、復元指示において指定された領域情報に基づいて、書き戻すプログラムコード及びアドレスを特定する(ステップS301)。
復元部135は、置換管理テーブルにおいて、復元指示で指定された領域情報を探索し、検出した領域情報と関連付けて記憶されたプログラムコード及びアドレスを、書き戻すプログラムコード及びアドレスとして特定する。なお、復元部135は、復元指示で指定された領域情報を検出しなかった場合、その旨を出力インタフェース112を介して出力装置210に表示し、復元処理を終了する。
次に、復元部135は、特定したアドレスに、特定したプログラムコードを書き戻す(ステップS302)。
次に、復元部135は、置換管理テーブルから、復元指示で指定された領域情報、その領域情報と関連付けて記憶されたプログラムコード及びアドレスを削除し(ステップS303)、一連のステップを終了する。
このように、ユーザは置換指示で指定した領域情報を用いて、復元する領域を指定することができる。ユーザにとって、置換指示で自ら指定していた情報は記憶しておきやすく、これにより、ユーザの利便性を向上させることが可能となる。
また、デバッグ対象装置100は、ユーザからの置換管理テーブルの表示指示に従って、置換管理テーブルに記憶された各情報を出力装置210に表示してもよい。その場合、領域情報をプログラム言語としておくことにより、ユーザは、表示されたプログラム言語の一覧から、復元すべき領域を容易に特定することができる。これにより、ユーザは、復元すべき領域のアドレス、又は復元すべき命令に対応するプログラムコードを認識する必要がなくなる。したがって、領域情報をプログラム言語とすることにより、復元する領域を領域情報を用いずに特定する場合、又は領域情報がアドレスもしくはプログラムコードである場合と比較して、ユーザの利便性を向上させることが可能となる。
また、置換管理テーブルに領域情報を記憶しておくことにより、復元部135は、領域情報としてプログラム言語が指定された場合に、プログラム言語のコンパイル、又はプログラムコードの逆アセンブルもしくは逆コンパイルを行うことなく、対応する領域を特定することができる。したがって、復元部135は、指定されたプログラム言語に対応する領域を短時間に特定することができ、処理の高速化が可能となる。
図7は、置換プログラムのデータ構造の一例を示す図である。図7に示すように、置換プログラム140には、アドレス取得プログラム141と、元プログラム実行プログラム142と、デバッガプログラム実行プログラム143とが含まれる。
アドレス取得プログラム141は、現在のインストラクションポインタ(プログラムカウンタ)を取得し、呼出し元のアドレス、即ち置換された特定の領域のアドレスを特定するプログラムである。インストラクションポインタは、例えば、置換プログラム140が呼び出されたときのコールスタックから取得することができる。なお、インストラクションポインタのサイズはCPUが扱うビット数に応じて異なり、16bit、32bit、64bit等、何れのサイズでもよい。
元プログラム実行プログラム142は、置換管理テーブルにおいて、アドレス取得プログラム141が特定したアドレスを探索し、検出したアドレスと関連付けて記憶されたプログラムコードを読み出して実行するプログラムである。
デバッガプログラム実行プログラム143は、ROM121に記憶されたデバッガプログラムの格納アドレスからデバッガプログラムがロードされるRAM122のアドレスを特定し、特定したアドレスに格納されているデバッガプログラムを実行するプログラムである。
図8は、デバッグ対象装置100による置換プログラム140に従った処理の動作の一例を示すフローチャートである。以下、図8に示したフローチャートを参照しつつ、置換プログラム140に従った処理の動作を説明する。なお、以下に説明する動作のフローは、予め記憶装置120に記憶されているプログラムに基づき主にCPU130によりデバッグ対象装置100の各要素と協働して実行される。
なお、図8のフローチャートは、図4のステップS203で置換されたプログラムコードにより置換プログラム140が実行されたときに実行される。
最初に、CPU130は、アドレス取得プログラム141に従って、現在のインストラクションポインタを取得し、呼出し元のアドレス、即ち置換された特定の領域のアドレスを特定する(ステップS401)。
次に、CPU130は、元プログラム実行プログラム142に従って、置換管理テーブルにおいて、アドレス取得プログラム141が特定したアドレスを探索する(ステップS402)。
次に、CPU130は、元プログラム実行プログラム142に従って、置換管理テーブルにおいて、検出したアドレスと関連付けて記憶されたプログラムコードを読み出して実行する(ステップS403)。
次に、CPU130は、デバッガプログラム実行プログラム143に従って、ROM121に記憶されたデバッガプログラムの格納アドレスからデバッガプログラムがロードされるRAM122のアドレスを特定する。そして、CPU130は、特定したアドレスに格納されているデバッガプログラムを実行し(ステップS404)、一連のステップを終了する。
このように、デバッガプログラムを実行するためのプログラムコードにより、デバッガプログラムが実行される前に、置換管理テーブルに記憶された元のプログラムコードに対応する処理が実行される。これにより、デバッグ対象装置100は、ユーザが指定した特定のアドレスにおけるプログラムを実行した直後に、デバッガプログラムを実行することができる。
なお、デバッガプログラムを実行するためのプログラムコードにより、デバッガプログラムの実行が終了した後に、置換管理テーブルに記憶された元のプログラムコードを、置換された元の領域に書き戻す処理が実行されてもよい。その場合、置換プログラム140に、置換された元の領域に、元のプログラムコードを書き戻す復元プログラムをさらに含ませておく。CPU130は、ステップS404においてデバッガプログラムを実行し、デバッガプログラムの実行が終了した後、復元プログラムに従って、ステップS402で検出したアドレスにそのアドレスと関連付けて記憶されたプログラムコードを書き戻す。さらに、CPU130は、置換管理テーブルから、そのアドレス、そのプログラムコード及びそのアドレスと関連付けて記憶された領域情報を削除する。これにより、デバッグ対象装置100は、ユーザがデバッグを完了した直後に、プログラムを元の状態に自動的に復元させることができ、ユーザの利便性を向上させることができる。
以上詳述したように、図3、4、6、8に示したフローチャートに従って動作することによって、デバッグ対象装置100は、特定のプログラムの実行を特定の領域で中断し、デバッガプログラムを実行することを簡易に実施することが可能となった。したがって、ユーザは、特定の箇所でデバッガプログラムを実行したい場合に、ブートファームウェアのソースコードを修正し、コンパイルし、メモリに書き込む必要がなくなり、デバッグ効率を向上させ、開発期間を短縮させることが可能となった。
図9は、他の実施形態に従ったデバッグシステム2の概略構成を示す図である。図9に示すデバッグシステム2と、図1に示すデバッグシステム1との差異は、デバッグシステム2が、デバッグ対象装置100の代わりにデバッグ対象装置300を有し、入力装置200及び出力装置210の代わりに情報処理装置400を有する点である。
デバッグ対象装置300は、デバッグ対象装置100が有する各部を有する。但し、デバッグ対象装置300は、インタフェース部110の代わりにインタフェース部310を有する。インタフェース部310は通信インタフェース311を有する。
通信インタフェース311は、RS(Recommended Standard)−232C等のシリアル通信インタフェース規格に従って、通信ケーブルを介して情報処理装置400と信号の送受信を行うためのインタフェース回路を有する。なお、通信インタフェース311は、USB(Universal Serial Bus)等のシリアルバス規格に従って、通信ケーブルを介して情報処理装置400と信号の送受信を行うためのインタフェース回路を有してもよい。また、通信インタフェース311は、イーサネット(登録商標)等の通信規格に従って、有線LAN等の有線通信ネットワークを介して情報処理装置400と信号の送受信を行うためのインタフェース回路を有してもよい。通信インタフェース311は、情報処理装置400と接続して各種の情報を送受信する。
情報処理装置400は、操作装置410と、表示装置420と、通信装置430と、第2記憶装置440と、第2CPU450とを有する。以下、情報処理装置400の各部について詳細に説明する。
操作装置410は、操作部の一例であり、タッチパネル式の入力装置、マウス、キーボード等の入力デバイス及び入力デバイスから信号を取得するインタフェース回路を有し、ユーザの操作に応じた信号を第2CPU450に対して出力する。
表示装置420は、液晶、有機EL等から構成されるディスプレイ及びディスプレイに画像データ又は各種の情報を出力するインタフェース回路を有する。表示装置420は、第2CPU450と接続されて、第2CPU450から出力された画像データをディスプレイに表示する。
通信装置430は、情報処理装置400が有するインタフェース部の一例であり、デバッグ対象装置300の通信インタフェース311と同様のインタフェース回路を有し、情報処理装置400とデバッグ対象装置300とを接続する。
第2記憶装置440は、RAM、ROM等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。第2記憶装置440には、情報処理装置400の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばCD−ROM、DVD−ROM等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて第2記憶装置440にインストールされてもよい。
第2CPU450は、操作装置410、表示装置420、通信装置430及び第2記憶装置440と接続され、これらの各部を制御する。第2CPU450は、操作装置410の入力制御、表示装置420の表示制御、通信装置430を介したデバッグ対象装置300とのデータ送受信制御、第2記憶装置440の制御等を行う。
図9に示すデバッグシステム2では、前述した図3、4、6及び8に示す処理とほぼ同様の処理を実行することができる。図4、6及び8に示す各処理の動作は、デバッグシステム1によって実行される場合と同様である。以下、デバッグシステム2において、図3のフローチャートに示される各処理がどのように適応されるかを説明する。デバッグシステム2では、図3の各処理は、予め記憶装置120に記憶されているプログラムに基づき主にCPU130によりデバッグ対象装置300の各要素と協働して実行される。さらに、図3の各処理は、予め第2記憶装置440に記憶されているプログラムに基づき主に第2CPU450により情報処理装置400の各要素と協働して実行される。
デバッグシステム2において、図3のフローチャートは、ユーザにより情報処理装置400の操作装置410を用いてプログラム書換え機能の実行開始を指示する入力操作が行われた場合に実行される。この入力操作は、情報処理装置400の通信装置430及びデバッグ対象装置300の通信インタフェース311を介してCPU130に通知される。
図3のステップS101において、CPU130は、ユーザによるコマンドを入力するための所定のプロンプトを通信インタフェース311及び通信装置430を介して第2CPU450に通知する。第2CPU450は、通知された所定のプロンプトを表示装置420に表示する。
図3のステップS102において、CPU130は、ユーザにより操作装置410を用いてコマンドが入力され、通信装置430を介して通信インタフェース311が入力されたコマンドを受け付けるまで待機する。
すなわち、デバッグシステム2では、操作装置410が置換指示、復元指示、終了指示及び各指示に含まれる領域情報の指定等を受け付け、通信装置430が、操作装置410が受け付けた各情報をデバッグ対象装置300に送信する。また、通信インタフェース311が、通信装置430から各情報を受信し、CPU130は、通信インタフェース311が各情報を受信すると、置換処理、復元処理又は終了指示を実行する。
このように、情報処理装置400を用いてユーザの指示を受け付ける場合も、入力装置200を用いてユーザの指示を受け付ける場合と同様の効果を得ることができる。
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、置換部131は、RAM122にロードされたプログラムコードでなく、ROM121に格納されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換してもよい。その場合、検索部132は、ROM121において、置換するプログラムコードを探索し、特定の領域を特定する。また、置換管理テーブルは、ROM121に記憶しておき、テーブル変更部133は、ROM121に記憶された置換管理テーブルを更新する。そして、プログラム変更部134は、ROM121に記憶されたプログラムコードをデバッガプログラムを実行するためのプログラムコードに置換する。同様に、復元部135は、ROM121において置換されたプログラムコードを復元する。
なお、ROM121において置換されたプログラムコードは、その後RAM122にロードされず、デバッグ対象装置100の再起動後にRAM122にロードされる。したがって、図8のフローチャートは、デバッグ対象装置100の再起動後に実行される。この場合、デバッグ対象装置100の電源が切断された後も変更した状態が保持されるため、ユーザは、デバッグ中にデバッグ対象装置100の電源の再起動が必要になった場合でも、再度プログラムを置換する必要がなくなる。
また、本実施形態では、ブートファームウェア内の特定の領域でプログラムの実行を中断し、記憶部に予め記憶されているデバッガプログラムを実行する例について説明した。しかしながら、実行するプログラム、即ち置換するプログラムは、デバッガプログラムに限定されず、デバッグ以外の処理を実行するプログラムでもよい。また、中断されてデバッグが行われるプログラム、即ち置換されるプログラムは、ブートファームウェアに限定されず、どのようなプログラムでもよい。
1、2 デバッグシステム
100、300 デバッグ対象装置
400 情報処理装置
110、310 インタフェース部
120 記憶装置
131 置換部
135 復元部
410 操作装置
430 通信装置

Claims (10)

  1. 特定のプログラム及び前記特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部と、
    前記記憶部における前記特定のプログラム内の特定の領域に記憶された第1プログラムコードに対応するプログラム言語の指定を受け付けるインタフェース部と、
    前記インタフェース部が前記プログラム言語の指定を受け付けると、前記プログラム言語に対応する前記第1プログラムコードと前記記憶部に記憶されたデータとを比較することにより、前記記憶部において、前記プログラム言語に対応する前記第1プログラムコードが格納されている領域を探索し、検出した領域を前記特定の領域として特定し、前記特定の領域に記憶された第1プログラムコードを前記デバッガプログラムを実行するための第2プログラムコードに置換する置換部と、
    を有することを特徴とするデバッグ対象装置。
  2. 前記置換部は、前記第1プログラムコードを前記第2プログラムコードに置換する前に、前記第1プログラムコードを前記記憶部の他の領域に記憶する、請求項に記載のデバッグ対象装置。
  3. 前記第2プログラムコードにより、前記デバッガプログラムが実行される前に、前記他の領域に記憶された前記第1プログラムコードに対応する処理が実行される、請求項に記載のデバッグ対象装置。
  4. 前記第2プログラムコードにより、前記デバッガプログラムの実行が終了した後に、前記他の領域に記憶された前記第1プログラムコードを前記特定の領域に書き戻す処理が実行される、請求項またはに記載のデバッグ対象装置。
  5. 前記インタフェース部は、前記特定の領域の復元指示をさらに受け付け、
    前記インタフェース部が前記復元指示を受け付けると、前記他の領域に記憶された前記第1プログラムコードを前記特定の領域に書き戻す復元部をさらに有する、請求項またはに記載のデバッグ対象装置。
  6. 前記置換部は、前記第1プログラムコードを前記他の領域に記憶する際に、前記プログラム言語を前記第1プログラムコードと関連付けて記憶し、
    前記インタフェース部を用いた前記復元指示において、前記プログラム言語が指定され、
    前記復元部は、前記復元指示において指定されたプログラム言語に基づいて、書き戻す第1プログラムコードを特定する、請求項に記載のデバッグ対象装置。
  7. 前記置換部は、前記第1プログラムコードを前記他の領域に記憶する際に、前記特定の領域のアドレスを前記第1プログラムコードと関連付けて記憶し、
    前記復元部は、前記特定の領域のアドレスに前記第1プログラムコードを書き戻す、請求項またはに記載のデバッグ対象装置。
  8. 特定のプログラム及び前記特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置の制御方法であって、
    前記記憶部における前記特定のプログラム内の特定の領域に記憶された第1プログラムコードに対応するプログラム言語の指定を受け付け、
    前記プログラム言語の指定を受け付けると、前記プログラム言語に対応する前記第1プログラムコードと前記記憶部に記憶されたデータとを比較することにより、前記記憶部において、前記プログラム言語に対応する前記第1プログラムコードが格納されている領域を探索し、検出した領域を前記特定の領域として特定し、前記特定の領域に記憶された第1プログラムコードを前記デバッガプログラムを実行するための第2プログラムコードに置換する、
    ことを含むことを特徴とする制御方法。
  9. 特定のプログラム及び前記特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置に実行させる制御プログラムであって、
    前記記憶部における前記特定のプログラム内の特定の領域に記憶された第1プログラムコードに対応するプログラム言語の指定を受け付け、
    前記プログラム言語の指定を受け付けると、前記プログラム言語に対応する前記第1プログラムコードと前記記憶部に記憶されたデータとを比較することにより、前記記憶部において、前記プログラム言語に対応する前記第1プログラムコードが格納されている領域を探索し、検出した領域を前記特定の領域として特定し、前記特定の領域に記憶された第1プログラムコードを前記デバッガプログラムを実行するための第2プログラムコードに置換する、
    ことを前記デバッグ対象装置に実行させることを特徴とする制御プログラム。
  10. 特定のプログラム及び前記特定のプログラムの実行を中断してデバッグを行うためのデバッガプログラムを記憶する記憶部を有するデバッグ対象装置と、情報処理装置とを有するデバッグシステムであって、
    前記情報処理装置は、
    前記記憶部における前記特定のプログラム内の特定の領域に記憶された第1プログラムコードに対応するプログラム言語の指定を受け付ける操作部と、
    前記プログラム言語を前記デバッグ対象装置に送信する第1インタフェース部と、を有し、
    前記デバッグ対象装置は、
    前記第1インタフェース部から前記プログラム言語を受信する第2インタフェース部と、
    前記第2インタフェース部が前記プログラム言語を受信すると、前記プログラム言語に対応する前記第1プログラムコードと前記記憶部に記憶されたデータとを比較することにより、前記記憶部において、前記プログラム言語に対応する前記第1プログラムコードが格納されている領域を探索し、検出した領域を前記特定の領域として特定し、前記特定の領域に記憶された第1プログラムコードを前記デバッガプログラムを実行するための第2プログラムコードに置換する置換部と、
    を有することを特徴とするデバッグシステム。
JP2014052504A 2014-03-14 2014-03-14 デバッグ対象装置、制御方法及び制御プログラム Expired - Fee Related JP5893063B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014052504A JP5893063B2 (ja) 2014-03-14 2014-03-14 デバッグ対象装置、制御方法及び制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014052504A JP5893063B2 (ja) 2014-03-14 2014-03-14 デバッグ対象装置、制御方法及び制御プログラム

Publications (2)

Publication Number Publication Date
JP2015176363A JP2015176363A (ja) 2015-10-05
JP5893063B2 true JP5893063B2 (ja) 2016-03-23

Family

ID=54255500

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014052504A Expired - Fee Related JP5893063B2 (ja) 2014-03-14 2014-03-14 デバッグ対象装置、制御方法及び制御プログラム

Country Status (1)

Country Link
JP (1) JP5893063B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153218A (ja) * 1997-08-07 1999-02-26 Omron Corp データ処理装置およびデータ処理方法
JP2001222447A (ja) * 2000-02-09 2001-08-17 Hitachi Ltd 実動作環境下のデバッグ方法及びデバッグ対象装置
JP2008135008A (ja) * 2006-11-01 2008-06-12 Matsushita Electric Ind Co Ltd プログラムモジュール検証方式

Also Published As

Publication number Publication date
JP2015176363A (ja) 2015-10-05

Similar Documents

Publication Publication Date Title
TWI400652B (zh) Dual operating system parallel processing methods, recording media and computer program products
JP5491675B2 (ja) 情報処理装置及び情報処理装置制御方法
CN107632828B (zh) 多dts文件支持方法、编译装置及嵌入式设备
US9645911B2 (en) System and method for debugging firmware/software by generating trace data
TW201337755A (zh) 應用程式多語言支援系統及方法
CN103246578A (zh) 应用软件进行崩溃处理的方法及进行崩溃处理的浏览器
CN102841841A (zh) 一种测试中的断言处理方法及系统
JPWO2015121930A1 (ja) 作画装置および制御システム
US9298451B2 (en) Non-transitory computer-readable recording medium storing application development support program and application development support system that automatically support platform version
US9811071B2 (en) System construction support apparatus
CN105487956A (zh) 开机自我测试中的除错方法及开机自我测试中的除错装置
US20120110383A1 (en) Method and apparatus for off-line analyzing crashed programs
JP5460928B1 (ja) プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法
TWI431530B (zh) 嵌入式系統及其程式更新方法
JP5893063B2 (ja) デバッグ対象装置、制御方法及び制御プログラム
JP5906609B2 (ja) デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム
JP4925514B2 (ja) 内外イベントドリブン方式によるプログラム実行制御方法、プログラム、実行制御装置および記録媒体
KR102434126B1 (ko) Plc 프로그램 처리 장치
JP4962226B2 (ja) 開発支援システム、開発支援装置、開発支援方法、および開発支援プログラム
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
JP2012018641A (ja) ソフトウェア開発システム
JP2017091027A (ja) システム開発支援システム
US9678776B2 (en) Suppress newer facilities when simulating an older machine
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JP6288695B2 (ja) 端末装置、シミュレーションシステム、端末装置の制御方法、及び端末装置の制御プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150807

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160223

R150 Certificate of patent or registration of utility model

Ref document number: 5893063

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees