JP2006350676A - 組込みシステムのプログラムデバッグ方法 - Google Patents
組込みシステムのプログラムデバッグ方法 Download PDFInfo
- Publication number
- JP2006350676A JP2006350676A JP2005175862A JP2005175862A JP2006350676A JP 2006350676 A JP2006350676 A JP 2006350676A JP 2005175862 A JP2005175862 A JP 2005175862A JP 2005175862 A JP2005175862 A JP 2005175862A JP 2006350676 A JP2006350676 A JP 2006350676A
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution
- input
- standard input
- break
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
ソフトウエアの試行、デバッグ作業の効率向上と、適用対象の拡大のため、モニタやデバッガを必要とせずに、試行中のブレーク機能、変数値の更新機能の双方を、簡易かつ低コストで提供する。
【解決手段】
実行プログラム内のブレーク要求を検出し、ブレーク要求を、標準入力待ちコードに置き換えて(読み替えて)、標準入力待ちコードを実行する。標準入力待ちの機能によって、ブレーク機能と、変数値の更新機能、再実行開始を行う。
【選択図】 図1
Description
そして、プログラムを実行させながら、その実行状態を表示する機能を持つ、デバッガが一般的に用いられている。デバッガは、開発者が作成したプログラムコードにバグがないかを検証するために使われるツールである。
デバッガを用いれば、ソースコード(ソースプログラム)を表示した上で、操作者がそのコード中のどのポイントでどのような情報を表示するのか指定でき、この結果、そのソースコードを実行しながら、動的な情報(変数、引数、レジスタの値の変化)を表示できるから、デバッグ対象のプログラム又はコードの健全性をチェックできる。
従来のデバッガでは、ソフトウェア割込みを発生させる命令自体を、直接、デバッグ対象のプログラムに埋め込むことを要し、その割込み命令が実行され、割込みが発生して、対象プラグラムを中断(ブレーク)させていた。デバッガは、このほかに、中断時に、変数、メモリ領域、レジスタの値を参照する機能、これらの値を設定する機能、中断したプログラムの実行を再開する機能を有している。
組込みシステムに搭載されるプログラムをデバッグするに際しては、1)組込みシステムでは、汎用のOSを搭載できない、2)メモリ容量の制約が厳しい等の理由により、機器の実動作環境下で従来のデバッガを使用できないという課題があった。
そのため、対象プログラムの変数の値を表示装置やファイルに出力する、又は、内部メモリに書き込む、といったデバッグ機能を、各種の機器の開発者自らが開発しなければならなかった。つまり対象プログラム中に自作のソフトウエアを組み込んで、アセンブル/コンパイルした後に実行し、組込みシステムが処理するデータの変化を追跡することが必要であった。このようなデバッグ機能は、製品をリリースするときには削除されるか、コンパイルフラグで切換えられるようにし、最終的な製品(オブジェクトコード)からは除かれていた(特許文献1)。
組込みシステムにおいては、リモートデバッグと呼ばれる、比較的高機能なデバッグが行われることがある(特許文献2)。一般に次のような手法である(図11)。
デバッグの対象である、ターゲットシステム23のROM26に、モニタープログラム25を組み込む。ホストコンピュータ22上のデバッガ21は、モニタープログラム25とインターフェース29を介して通信する。CPU24は、組込みシステムにおけるマイクロコンピュータ内の中央演算ユニットである。ここで、ユーザプログラム27はRAM28に格納されている。
ホストコンピュータ22は、モニタープログラム25に対してコマンドを送信し、モニタープログラム25はそのコマンドを受信し、ブレーク、トレースその他の処理を実行する。モニタープログラム25は、ブレークコマンドに対しては、ブレークポイントのアドレスをレジスタに格納してCPU24にアドレス一致例外を発生させ、ユーザプログラム27からモニタープログラム25に制御を移し、ブレーク処理を行う(ハードウェアブレーク)。
ハードウエアブレークの機能がないマイクロコンピュータにおいては、モニタープログラム25がブレークポイントに例外を発生させるトラップ命令を、ユーザプログラム27中に書き込み、ユーザプログラム27に例外を発生させてモニタープログラム25に制御を移し、ブレーク処理を行い、同処理が終了した後、前記トラップ命令を元の命令に戻す(ソフトウェアブレーク)。
モニタープログラム25は、トレースコマンドに対しては、マイクロコンピュータが有しているトレース機能を使うため、CPU24をトレースモードに遷移させ、ユーザプログラム27を対象として、トレース実行させる。トレースモードがないマイクロコンピュータ対しては、ソフトウエアブレークで説明した方法により、1命令先のアドレスにブレークポイントを設定して、ユーザプログラム27が1命令実行した時点で例外を発生させ、これを繰り返すことにより、ユーザプログラム27を対象として、トレース実行させる。
この課題に対して、特許文献2では、ROM化前に、ソースコードの翻訳時にトラップ命令を埋め込み、ROMに格納し、そのままROM上で実行させるとしている。
なお、標準入力とは、キーボードからの入力を行う標準ライブラリ関数であり、例えば、C言語の標準入力ライブラリの存在するscanf関数が該当する。
標準入力制御部は、プログラムの実行を一時停止する。また、プログラムの実行状態を表示する。さらに、ユーザへの入力待ち画面の表示を表示情報制御部に依頼する。
デバッグ対象である実行プログラムのファイル101は、必要に応じ実行プログラム用データベース110を使用して、プログラム実行部107により実行される。実行プログラムを作成するために使用したソースコードのファイル102、表示情報リソースファイル103、変数値格納用テーブル105は、演算処理部106から、適宜、参照される。
表示情報リソースファイル103は、ソースコードの説明文その他ソースコードに関連する表示情報を記述したファイルである。変数値格納用テーブル105は、ファイル102中のソースコードで使用されている変数の値を、時系列に格納する。
ブレーク実行部1072は、本発明に特徴的な構成要素である。ブレーク実行部1072は、標準入力待ち命令を実行する機能を担うものであり、ブレーク実行部1072によってブレーク要求コードを標準入力待ち命令と読み替えてブレーク処理を実現する。同部1072は、プログラム実行部107が実行過程においてブレーク要求コードを検出した際に起動し、ブレーク要求コードを標準入力待ち命令と読み替えて、プログラム実行部107に処理を渡す。
標準入力制御部111は、入力待ち画面に対して、ユーザが入力した標準入力制御用コマンドを解釈する。つまり、標準入力制御用コマンドライブラリ104から、そのコマンドを呼び出す。また、ライブラリ104から返ってきた処理結果を表示情報制御部108に転送する。なお、標準入力制御用コマンドライブラリ104は、実行プログラムに埋め込まれた、本発明のコマンドライブラリである。
変数名202とは、実行プログラムのソースコード内で使用されている変数の名前であり、具体的には、index,amount,dayなどが該当する。同図には、AAA、BBB、CCCと記載されている。変数203は、その値が格納されるエリアを示す。
図2(b)に、図1に図示しない、ブレーク要求指示ファイルの一例を示す。これは、実行プログラム上でブレーク要求の挿入位置が記述された定義ファイルである。
挿入箇所については、ブレーク位置情報記述データを別途、用意して、これを挿入操作主体(コンパイラ、変換ツール、又は、プログラム実行部)に参照させる。
図2(b)の項番1と2では、複数のブレーク要求コードを1の挿入位置ファイルにまとめて記載し、一括で指定している。これとは異なり、一箇所ずつ、対話的に指定してもよい。対話的に指定する場合には、GUI操作で、ソースプログラムを画面表示しても良い。
この画面は、ブレーク要求の結果、表示される停止した状態を示している。ユーザからの対話的な入力操作を待つ、入力待ち画面である。この対話的な操作画面において、ユーザは、デバッグ対象のプログラムについて、所定のコマンドを入力することにより、所定の情報の取得又は更新を行える。上記コマンド入力は、図示しないキーボードによって入力される。
入力操作を待つ画面上で、ユーザが入力できる標準入力制御用コマンドには、次のような種類が有る。
p 変数値の表示
s 変数値の更新
c 処理の再開
l ソースコードの表示
図3の301は、実行中のプログラムのソースコードのファイル名と行番号であり、ブレーク位置を示している。302は、ユーザからの対話的な入力操作を促す表示であり、次のコマンドを受付可能であることを示している。これらが、標準入力制御用コマンドに相当し、標準入力制御用コマンドライブラリ104(図1)により実現される。
プログラム実行部107(図1)は、デバッグの対象となるプログラム(実行プログラムファイル101に有る実行プログラム)の実行を開始する(ステップ401)。
次に、実行プログラム中にブレーク要求コードが記述されている限り、以下に示すステップ403からステップ407までの処理を繰り返し実行する(ステップ402)。
表示情報制御部108は、転送された情報に基づいて入力待ち画面の表示情報を生成し(ステップ406)、その表示情報をディスプレイ装置109に表示する(ステップ407)。
標準入力制御部111は、入力待ち画面に対してユーザが入力する標準入力制御用コマンドを読んで解釈する。ここで次のステップ位置へ処理を進める操作、例えば、図3における処理再開のコマンド“c”の入力が為されると、次の処理へ進む。
かかる一連の操作は、対象プログラムが終了するまで実行される(ステップ408)。
プログラム実行部107は、実行中のプログラムのプログラム名及び実行中の行番号を、表示情報制御部108に転送する。表示情報制御部108は、ソースコードファイル102から、プログラム名に合致する実行中のファイルを取得する(ステップ501)。
表示情報制御部108は、ステップ501にて取得したファイルのソースコードから、プログラム実行部107から指示された行番号の前後数行、例えば、10行のソースコードを文字列として取得する(ステップ502)。次に同部108は、ソースコードのファイル名(図3、301)を、ディスプレイ装置109に表示する(ステップ503)。そして同部108は、ソースコードの一部又は全部を表示する(ステップ504)。図6に、図5のフローの結果、生成されるソース表示画面の一例を示す。
プログラム実行部107は、実行中のプログラム中のブレーク要求コードに指定している、監視対象の変数名を抽出する(ステップ701)。もし、監視対象の変数名が指定されていなければ、ステップ702以降は実行せずに終了する。
プログラム実行部107は、変数値格納用テーブル105から監視対象の変数名の値を取得する(ステップ702)。そして同部107は、変数名とその値を表示する表示情報を作成するよう、表示情報制御部108に指示する。同部108は、指示された情報に基づき、変数名と変数値を表示するための表示情報を生成して、生成された表示情報をディスプレイ装置109に表示する(ステップ703)。
プログラム実行部107は、次の入力を受け付ける標準入力待ち状態にし(ステップ704)、一連の処理を終了する。図8に、図7のフローの結果、生成される変数値の表示画面の一例を示す。
プログラム実行部107は、実行中のプログラム中のブレーク要求コードに指定している、監視対象の変数名を抽出する(ステップ901)。もし、監視対象の変数名が指定されていなければ、ステップ902以降は実行せずに終了する。
プログラム実行部107は、変数値格納用テーブル105から監視対象の変数名の値を取得する(ステップ902)。
プログラム実行部107は、変数名とその値を表示する表示情報を作成するよう、表示情報制御部108に指示する。同部108は、指示された情報に基づき、変数名と変数値を表示するための表示情報を生成して、生成された表示情報をディスプレイ装置109に表示する。またプログラム実行部107は、更新する変数名と変数値を指定させる入力待ち画面を、表示情報制御部108に作成するように指示する。同部108は、指示された情報に基づいて、変数名と変数の値を表示するための表示情報を生成して、ディスプレイ装置109に表示する(ステップ903)。
102…ソースコードファイル、
103…表示情報リソースファイル、
104…標準入力制御用コマンドライブラリ、
105…変数値格納用テーブル、
106…演算制御部、
107…プログラム実行部、 1072…ブレーク実行部、
108…表示情報制御部、
109…ディスプレイ装置、
111…標準入力制御部。
Claims (3)
- デバッグ対象の実行プログラム、当該実行プログラムのソースコードファイルを参照可能に接続された演算処理部の制御方法であって、
当該演算処理部は、前記実行プログラムが実行されている状態で、当該実行プログラム内にブレーク要求が記述されているか否かを検出する機能と、前記ブレーク要求が記述されていたならば、標準入力待ちコードと読み替えて実行する機能を有し、
前記標準入力待ちコードの実行により、標準入力待ち機能によって、前記実行プログラムの実行状態を一時停止させることを特徴とする演算処理部の制御方法。 - 請求項1記載の演算処理部の制御方法において、
一時停止した状態で、標準入力からの入力を識別し、当該入力に応じて、所定の変数値を表示し、又は、更新する演算処理部の制御方法。 - 請求項1記載の演算処理部の制御方法において、
一時停止した状態で、標準入力からの入力を識別し、当該入力に応じて、所定のソースコードの一部を表示する演算処理部の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005175862A JP2006350676A (ja) | 2005-06-16 | 2005-06-16 | 組込みシステムのプログラムデバッグ方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005175862A JP2006350676A (ja) | 2005-06-16 | 2005-06-16 | 組込みシステムのプログラムデバッグ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006350676A true JP2006350676A (ja) | 2006-12-28 |
Family
ID=37646447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005175862A Pending JP2006350676A (ja) | 2005-06-16 | 2005-06-16 | 組込みシステムのプログラムデバッグ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006350676A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134355A (ja) * | 2007-11-28 | 2009-06-18 | Yokogawa Electric Corp | 開発支援装置及び半導体試験装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02146630A (ja) * | 1988-11-29 | 1990-06-05 | Fujitsu Ltd | マイクロプロセッサのプログラム開発システム |
JPH03294934A (ja) * | 1990-04-13 | 1991-12-26 | Nippon Telegr & Teleph Corp <Ntt> | 高級プログラム言語用デバッガ |
JPH0454636A (ja) * | 1990-06-25 | 1992-02-21 | Hitachi Ltd | プロセッサ |
JPH0581069A (ja) * | 1991-09-20 | 1993-04-02 | Hitachi Ltd | プログラムのデバツグ方法 |
JPH07200350A (ja) * | 1993-12-29 | 1995-08-04 | Nec Corp | ソフトウェアデバッガ |
JPH09288595A (ja) * | 1996-04-19 | 1997-11-04 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
JP2004139313A (ja) * | 2002-10-17 | 2004-05-13 | Hitachi Software Eng Co Ltd | ソースコード表示システム及びプログラム |
-
2005
- 2005-06-16 JP JP2005175862A patent/JP2006350676A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02146630A (ja) * | 1988-11-29 | 1990-06-05 | Fujitsu Ltd | マイクロプロセッサのプログラム開発システム |
JPH03294934A (ja) * | 1990-04-13 | 1991-12-26 | Nippon Telegr & Teleph Corp <Ntt> | 高級プログラム言語用デバッガ |
JPH0454636A (ja) * | 1990-06-25 | 1992-02-21 | Hitachi Ltd | プロセッサ |
JPH0581069A (ja) * | 1991-09-20 | 1993-04-02 | Hitachi Ltd | プログラムのデバツグ方法 |
JPH07200350A (ja) * | 1993-12-29 | 1995-08-04 | Nec Corp | ソフトウェアデバッガ |
JPH09288595A (ja) * | 1996-04-19 | 1997-11-04 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
JP2004139313A (ja) * | 2002-10-17 | 2004-05-13 | Hitachi Software Eng Co Ltd | ソースコード表示システム及びプログラム |
Non-Patent Citations (3)
Title |
---|
CSNB200000201001; Richard M.Stallman, Roland H.Pesch: GDBデバッギング入門 第1版, 19990211, pp.18〜21, 株式会社アスキー * |
JPN6011001362; Richard M.Stallman, Roland H.Pesch: GDBデバッギング入門 第1版, 19990211, pp.18〜21, 株式会社アスキー * |
JPN6012062693; Richard M.Stallman, Roland H.Pesch: GDBデバッギング入門 初版, 19990211, 表紙、pp.18〜21,37,59、奥付, 株式会社アスキー |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134355A (ja) * | 2007-11-28 | 2009-06-18 | Yokogawa Electric Corp | 開発支援装置及び半導体試験装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901075B2 (ja) | コンピュータ読取可能な媒体、方法及びコンピューティングデバイス | |
JP4388518B2 (ja) | スレッドデバッグ装置、スレッドデバッグ方法及びプログラム | |
US20060064677A1 (en) | Debugger and method for debugging computer programs across multiple programming languages | |
US20050132338A1 (en) | Altering execution flow of a computer program | |
JP2004164554A (ja) | プログラム実行監視装置および方法 | |
JP2003323318A (ja) | 特殊名付き関数によるソフトウェア区切り点の実行装置及びその方法 | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
US20040168157A1 (en) | System and method for creating a process invocation tree | |
EP3891613B1 (en) | Software checkpoint-restoration between distinctly compiled executables | |
JP2007004516A (ja) | 組込みシステムのプログラムデバッグ方法 | |
JP2009251762A (ja) | デバッガ装置、デバッグ方法およびプログラム | |
CN109144849B (zh) | 一种嵌入式软件调测方法 | |
JP2008135008A (ja) | プログラムモジュール検証方式 | |
JP2004139458A (ja) | プログラム開発支援装置、プログラム実行装置、コンパイル方法およびデバッグ方法 | |
JP2010287101A (ja) | ソフトウエアデバッグ装置及び方法 | |
JP2006350676A (ja) | 組込みシステムのプログラムデバッグ方法 | |
JPS62113244A (ja) | プログラムテスト装置 | |
JPH11110256A (ja) | プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体 | |
JP2004287869A (ja) | プログラム実行監視装置および方法 | |
CN113836046B (zh) | Mcu上虚拟机应用程序调试方法及系统 | |
JP2803090B2 (ja) | Mpuシミュレーション方法及びmpuシミュレータ | |
JP2802128B2 (ja) | プログラム開発装置 | |
JP2672968B2 (ja) | デバッグ用ソースリスト出力処理方式 | |
JPH06250884A (ja) | モジュール試験支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080523 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100402 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110316 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110712 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111012 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111017 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20111125 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130131 |