JP2001184230A - ハンディターミナル用応用プログラムのデバッグシステム - Google Patents

ハンディターミナル用応用プログラムのデバッグシステム

Info

Publication number
JP2001184230A
JP2001184230A JP37038299A JP37038299A JP2001184230A JP 2001184230 A JP2001184230 A JP 2001184230A JP 37038299 A JP37038299 A JP 37038299A JP 37038299 A JP37038299 A JP 37038299A JP 2001184230 A JP2001184230 A JP 2001184230A
Authority
JP
Japan
Prior art keywords
handy terminal
program
host computer
machine language
virtual machine
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
Application number
JP37038299A
Other languages
English (en)
Inventor
Jun Nakahara
純 中原
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.)
Pentel Co Ltd
Original Assignee
Pentel 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 Pentel Co Ltd filed Critical Pentel Co Ltd
Priority to JP37038299A priority Critical patent/JP2001184230A/ja
Publication of JP2001184230A publication Critical patent/JP2001184230A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 ハンディターミナルでシンボリックデバッグ
を簡単に行えるシステムを提供する。 【解決手段】 コンパイラが出力するオブジェクトコー
ドを仮想機械語にし、仮想言語を解釈実行するインタプ
リタをハンディターミナルに搭載する。当該インタプリ
タにデバッグ機能を組み込み、ハンディターミナルとホ
ストコンピュータが通信しながらシンボリックデバッグ
を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、倉庫での在庫管理
データの収集や、店頭での商品データを収集するハンデ
ィターミナルであり、このハンディターミナルの応用プ
ログラムのデバッグシステムに関する。
【0002】
【従来の技術】ハンディターミナルの応用プログラムの
開発ステップは以下である。まずホストコンピュータ
(通常パーソナルコンピュータが利用される)でソース
プログラムを作成し、翻訳プログラム(以下コンパイラ
と略称する)を利用し、ソースプログラムから実行形式
プログラム(以下オブジェクトプログラムと略称する)
を作成する。オブジェクトプログラムをホストコンピュ
ータからハンディターミナルへダウンロードし、フラッ
シュROMなどの不揮発性メモリに焼き、当該プログラ
ムをハンディターミナルで実行させ、プログラムの動作
確認を行う。動作不正が起こった際は、ソースプログラ
ムを見直し、変更を行い、再びコンパイル、ダウンロー
ドを行い、ハンディターミナルで実行させ、動作確認を
行う操作を繰り返していた。
【0003】
【発明が解決しようとする課題】しかし上記した従来技
術では、ハンディターミナルのプログラム不正動作発見
時に行うエラー解析と、プログラム修正作業(以下デバ
ッグと略称する)は、多くのプログラム実行用資源(C
PU、メモリ、ファイル、デバッグ用ユーティリティな
ど)を有しないハンディターミナルでは、シンボリック
デバッガー(機械語やアドレス番地を用いず、コーディ
ングしたソースプログラムコードを用いてデバッグを行
うデバッグ用プログラム)など、高度なデバッガーが搭
載できず、前記した様に、プログラムを試行錯誤で改変
しながらエラー修正する方式しか提供されていなかっ
た。そこでハンディターミナルの応用プログラムのデバ
ッグにも、シンボリックデバッガーの搭載が求められて
いた。
【0004】
【課題を解決するための手段】本発明は上記問題に鑑み
なされたものであり、倉庫での在庫管理データの収集
や、店頭での商品データを収集するハンディターミナル
において、前記ハンディターミナルとホストコンピュー
タとの間でおこなわれる応用プログラム開発のデバッグ
時、ハンディターミナルプログラムを特別に改変せず
に、シンボリックデバッグを行えるシステムを提供する
ものである。
【0005】
【発明の実施の形態】ハンディターミナルの応用プログ
ラム開発には、ハンディターミナルとホストコンピュー
タとをシリアル回線を用いて接続し、オブジェクトプロ
グラムをダウンロードし、不揮発性メモリ(フラッシュ
ROM等)を書き換える方式が採られる。つまり、ハン
ディターミナルの応用プログラムを開発する際は、必ず
ハンディターミナルとホストコンピュータとが準備され
ている。そこでデバッグ時、ハンディターミナルのオブ
ジェクトプログラムを実行する際、ホストコンピュータ
と通信し、シンボリックデバッグ機能を実行させる仕組
みを開発システムに組み込む。
【0006】ハンディターミナルのオブジェクトプログ
ラムは仮想機械語で記述される。仮想機械語はハンディ
ターミナルが具備する諸機能を効率よく実行する命令体
系を有している。ホストコンピュータで動作するコンパ
イラは、当該仮想機械語を出力する様にする。仮想機械
語はハンディターミナルで動作する解釈実行プログラム
(以下インタプリタと略称する)で実行される。このイ
ンタプリタにデバッガーの機能を組み込む。
【作用】
【0007】ハンディターミナルで日常業務を記述した
ソースプログラムを準備する。本発明例のCOBOL言
語コンパイラでは、ソースプログラムはCOBOL言語
文法に則りプログラミングされる。ホストコンピュータ
のコンパイラは当該ソースプログラムをコンパイルし、
仮想機械語のオブジェクトプログラムを出力する。
【0008】仮想機械語で記述されたオブジェクトプロ
グラムは、ハンディターミナルにダウンロードされ、ハ
ンディターミナルのフラッシュROMに焼かれる。
【0009】ハンディターミナルのインタプリタで応用
プログラムを実行すると、ハンディターミナルのインタ
プリタは仮想機械語命令を逐一取り出し、解釈実行す
る。インタプリタは仮想機械語の実行動作を模擬する。
【0010】ハンディターミナルとホストコンピュータ
とをシリアルケーブルで接続し、特定キーを押しながら
ハンディターミナルの電源を投入すると、インタプリタ
の実行モードを変更させるようにする。デバッグモード
時、インタプリタは取り出した仮想機械語のアドレスを
ホストコンピュータに送信し、応答を待つ。応答には、
仮想機械語の実行指示や、アドレスのデータを読み出さ
せるものを準備する。インタプリタは応答に従い各処理
を行う。プログラマはホストコンピュータ上で、ハンデ
ィターミナルの実行中のプログラムアドレスや、メモリ
データを見ることができる。また、実行中のプログラム
ソースや、変数の内容をホストコンピュータの表示装置
で確認できる。
【0011】
【実施例】以下、本発明の詳細を図示実施例に基づいて
説明する。図1は本発明を適用するホストコンピュータ
1の外観斜視図である。ホストコンピュータ1では本発
明の仮想機械語を生成するコンパイラや、シンボリック
デバッガーが稼働するものである。図2は本発明を適用
するハンディターミナル2の外観斜視図である。参照符
号3はLCD表示部であり、収集したデ−タやハンディ
タ−ミナル2から図示しない操作者へのメッセ−ジを表
示する部分である。参照符号4はテンキーや入力キーか
らなるキー入力部である。参照符号5は通信ポートであ
り、ホストコンピュ−タ1と通信を行う為にシリアル通
信ケ−ブル6を接続する。
【0012】図3は、ハンディターミナル2の電気的ブ
ロック図を示したものである。参照符号7は、ハンディ
タ−ミナル2の制御手段である中央処理装置であり、書
き換え可能なフラッシュROM8に格納されたプログラ
ムに従って本発明に係わる処理を実行する。上記したキ
−入力部4を操作することにより、電源回路13を介し
てLCD表示部3に入力したデ−タを表示する。収集し
たデ−タをホストコンピュ−タ1に送信する場合には、
通信インタフェース回路18を介し、通信ポート5に上
記したシリアル通信ケ−ブル6を接続することにより、
CPU7の指令によりデ−タの送信を行う。参照符号1
6はカレンダ回路であり、年月日時分秒情報を発生させ
る為に設けられており、年月日時分秒情報は図示しない
バックアップ用のリチウムにより保護される。ブザ−駆
動回路12とLED駆動回路17もそれぞれCPU7の
指令により、所定の動作を行う。参照符号11はプリン
タでありCPU7の指令により、所定の動作を行う。な
お、バーコードリーダ(図示せず)が接続され運用に供
される。
【0013】図4はハンディターミナル2の本体に設け
られているフラッシュROM8、RAM14に格納され
ているデ−タ並びを示したものである。参照符号19は
日常業務プログラム21を解釈実行するインタプリタで
ある。参照符号20は、当該ハンディターミナルに様々
な動作を行わせる為の基本プログラムである。デバッグ
モードの切り替えの選択も当該プログラムの一部が行
う。日常業務プログラム21はハンディターミナルの日
常業務プログラムであり、仮想機械語で記述された実行
用のオブジェクトプログラムである。当該コードは基本
プログラム20でホストコンピュータからシリアルケー
ブル6を介して伝送され、焼き付けられたものである。
日常業務プログラム21はハンディターミナル2の主た
る業務、例えば、バーコードを入力し、当該コードを画
面表示させ、数量などのキー入力された追加情報をワー
ク領域22を利用し一時保管したり、収集データ23へ
蓄積するなどの処理が記述されている。なお、ワーク領
域22には仮想機械語が利用するワークデータも置かれ
る。
【0014】図4の参照符号24はモードフラグであ
る。当該フラグはハンディターミナル2のキー入力部4
にある入力キーを押しながら電源投入すると、基本プロ
グラム20にあるモード変更処理(図示せず)が呼び出
され、通常モードが選択されると0が書き込まれ、デバ
ッグモードが選択されると1が書き込まれる。
【0015】図5はハンディターミナル2で稼働する例
題プログラムのリストを示す。図6、図7は図5のプロ
グラムをコンパイルし、仮想機械語に翻訳し、作成され
た機械語をアセンブラ言語で併記したリストである。ソ
ースステートメントと展開された機械語とが表示されて
いる。当該リストを用いれば、機械語のアドレスから、
展開されたソースステートメントがわかる。また、ソー
スプログラム上で記述された変数の機械語でのアドレス
を知ることができる。ホストコンピュータ1はファイル
形式で当該リストをコンピュータ内部に保持し、後の処
理で利用できるようにしている。図8は本発明の仮想機
械語の一覧表である。
【0016】図9はホストコンピュータ1で稼働するコ
ンパイラ(図示せず)の動作フローを示している。以下
当該フローに沿って説明する。ソースプログラムから仮
想機械語命令を生成するには、まずソースプログラムの
字句を分解し、字句の種類を予め定められた型に割り当
てる字句解析処理を行う。(S1)例えば”ADDDA
T1 TO DATAAREA.”というステートメン
トを字句解析すると図10の様に「予約語、変数、予約
語、変数、予約語」の並びであると解析される。
【0017】次に分解された字句の並びを受け取り、構
文解析処理を実施する。(S2)構文解析は、字句の型
の並びの一覧表を内部に備え、どの構文に一致するか調
べる。図11に構文解析処理が利用する型の一覧表(抜
粋)を示す。本例の構文解析では ”ADD DAT1
TO DATAAREA.”は、図11の参照符号2
9「ADD 変数 TO 変数」に一致すると解析され
る。
【0018】次にコード生成処理を実行する。(S3)
当該処理は「ADD 変数 TO変数」を受け取り図1
2に示したような仮想機械語を生成する。
【0019】図15はハンディターミナル2で稼働する
インタプリタ19の動作フローを示している。以下当該
フローに沿って説明する。インタプリタが開始されると
当該プログラムが利用するプログラムカウンタ(以下P
Cと略称する)とスタックポインタ(以下SPと略称す
る)を初期化する。オブジェクトプログラムの先頭アド
レスとPCを加算した値が実行すべき命令アドレスにな
る。またSPはPCを待避するアドレスが格納される。
(S4,S5)具体的に、PCは0が設定され、SPは
図4の22内にワーク域が設定される。
【0020】次に実行モードフラグ24を参照しデバッ
グモードであるか否か判定する。(S6)値が0の時は
通常モードなので、仮想機械語の実行処理ステップ(S
11)に進む。デバッグモード(値が1)の場合、イン
タプリタ19は現在のPCをホストコンピュータ1に、
図12の送信データフォーマットに従い送信する。(S
7)次にホストコンピュータからの応答データを受信す
る。(S8)応答データは図13に示される4バイト長
の電文である。次に受信した応答データを調べる。(S
9)応答データの先頭文字が"S"の時、ステップ実行命
令なので(S11)へ進む。応答データの先頭文字が"
D"の時、応答データのアドレスと長さを取り出し、指
定されたメモリ番地のデータを指定長さ分読み出し、ホ
ストコンピュータ1へ、図12のダンプデータのフォー
マットで送信する。(S10)
【0021】通常実行モード(デバッグモード以外)
か、デバッグモード時に"S"コマンドを受け取ると、イ
ンタプリタは仮想機械語の実行を行う。まずPCの指す
アドレスの仮想機械語を読み出す。(S11)具体的に
は前記の仮想機械語の先頭アドレスにPCの値を加算し
たアドレスの内容を読み出せばよい。当該値は図7の一
覧に示されるコードになっている。次に上位3ビットの
命令タイプを割り出す。(S12)次に仮想命令番号を
割り出す。(S13)命令タイプから次のPCを計算す
る。(S14)具体的には(S12)で得た値を右に5
ビット論理シフトし、当該値を2倍し、仮想命令語サイ
ズの1を加えた値を現在のPCに加算すればよい。次に
命令語番号の処理を実行する。(S15)次に、再び
(S6)ステップへジャンプする。
【0022】命令実行は処理番号から各々の処理を実行
する。例として、図6の参照符号25の仮想機械語命令
(PCが(0000)16)は、(40)16が仮想機械語命
令であり、当該命令は図7の参照符号26で、命令タイ
プは(010)2になる。命令タイプを2倍し1を加え
たもの(この場合5になる)が命令語長になり、現在の
PCに当該値を加えたものを次のPCにする。
【0023】図7の参照符号26はアセンブラ表記では
「add」で示され、当該命令は命令語に続く2つの2
バイトコードを引数として、最初の引数が指すアドレス
に格納された数値を2番目の引数が指すアドレスの数値
へ加算する。同様にその他の処理命令も図7に示される
よう、命令語に続くデータを引数とし(引数の無いもの
もある)処理を実行する。
【0024】図7の参照符号27の「acc」命令はバ
ーコードを読み込む命令が含まれる。ハンディターミナ
ル2のインタプリタ19は当該命令実行時バーコードリ
ーダー(図示せず)からバーコードを読み込む。また図
7の参照符号28「disp」命令は、文字列を指定さ
れたライン/カラム位置に表示させるものである。ハン
ディターミナル2はLCD表示部3に文字列を表示す
る。
【0025】図15はホストコンピュータ1で実行され
るシンボリックデバッグ用プログラム(以下デバッガー
と略称する。)の処理フローである。以下当該フローに
沿って説明する。事前準備としてハンディターミナル2
とホストコンピュータ1をシリアルケーブル6で接続し
ておく。ハンディターミナル2でデバッグを行う際は、
キーボード4の入力キー(右下の大きなキー)を押しな
がら電源スイッチ(図示せず)を投入する。ハンディタ
ーミナル2の基本プログラム20内にあるモード変更処
理(図示せず)が起動されたら、デバッグモードを選択
しておく。
【0026】ホストコンピュータ1のデバッガーはハン
ディターミナル2からの送信データ(図12)を受信す
る。(S16)受信したらPCの値を表示する。(S1
7)次に受信したPCの値から、図6のアセンブラリス
トのソース行を探し出し画面表示する。(S18)これ
は図6のPC相対アドレスから、直前にあるソースステ
ートメント(図6で左端が">>"で示される表示行)を
表示すればよい。例えばハンディターミナル2からホス
トコンピュータ1への送信データが(500000)16
の場合、図6の"0000:"で示される行がPCアドレ
スであり、その直前にある">>"のステートメント "AD
D 1 TO COUNT." を表示すればよい。次にデバッガー
はホストコンピュータ1のキーボードの入力を待つ。
(S19)図示しない操作者のキー入力された文字を判
定し、ステップ実行か否か調べる。(S20)具体的に
は、キーボードよりの入力が"S"のとき、ステップ実行
なので、図13の実行指示応答をハンディターミナル2
に送信する。(S21)"D"の時は変数名をキー入力さ
せる。(S22)入力された変数名と一致するソースス
テートメントの変数名を探す。(S23)次に変数のア
ドレスと長さを探す。(S24、S25)例えば"COUN
T"という変数名が指定された場合、図6のソースステー
トメントから ">>77 COUNT PIC 9(004)." の行を探し出
す。当該ステートメントの次行を見ると "000F:" とな
っており、当変数が000F番地に割り当てられている
ことがわかる。さらにソースステートメントの "PIC9(0
04)" から、4バイト長の変数である点もわかる。デバ
ッガーは当該情報から図13のダンプ指示応答を作成し
送信する。(S26)当該例では(44000F04)
16をハンディターミナル2に送信する。ハンディターミ
ナル2は当該電文に応答し、ダンプ指示応答データをホ
ストコンピュータ1へ送るので、当該電文を受信し表示
する。(S27)ハンディターミナルの応答は"COUNT"
変数に格納された値である。図示しない操作者は変数の
値を確認できる。その後、再びPCを受信するステップ
にジャンプする。
【0027】以上の一連の動作で、ハンディターミナル
2のオブジェクトプログラムを実行させながら、対応す
るソースプログラムのステートメントや実際の変数の内
容表示が行えるので、プログラムのデバッグ作業が容易
になる。また、ホストコンピュータ1で、PC表示やソ
ースステートメント表示を毎回行わず、指定された値の
PCを受信するまで、実行指示応答を出し続ける処理を
デバッガーに組み込むことが考えられる。本処理では指
定ステートメントが実行されるまで、他の処理を連続実
行する事になる。これはブレークポイント機能(指定実
行命令を見つけたら停止する)になる。また、ステップ
実行と同一変数のダンプ指示応答を毎回行い、ダンプデ
ータの値が変化したときのみ、PCとソースステートメ
ントの表示を行う機能の組み込みも考えられる。本処理
では、指定変数が変化した命令の割り出しを可能にさせ
る機能となる。つまり、どのステートメントが変数の内
容を書き換えたか調べられる。これらの高度なデバッグ
機能も当該デバッガーでは簡単に実現できる。これらに
より充実したシンボリックデバッグ機能を提供できる。
【0028】
【発明の効果】以上説明したように、ハンディターミナ
ルの応用プログラム開発時、これまではハンディターミ
ナルの非力さから、シンボリックデバッグの様な、ソー
スコードと実行プログラムとを対応させるデバッグ環境
が無く、デバッグ操作が困難であったが、当該発明方式
では、ハンディターミナル側のインタプリタや実行プロ
グラムに負荷をかけずに、デバッグ環境を実現できる。
また、シンボリックデバッグ用に特別な再コンパイルを
行うことなく、ホストコンピュータとの連携で、ソース
プログラムを確認しながらハンディターミナルの動作や
変数の表示を確認することができる。これらによりデバ
ッグ操作が容易になり、大幅な開発作業効率の増大が可
能になる。
【図面の簡単な説明】
【図1】 本発明を適用するホストコンピュータの
外観斜視図
【図2】 本発明を適用するハンディターミナルの
外観斜視図
【図3】 ハンディターミナルの電気的ブロック図
【図4】 記憶装置内のデータの並び
【図5】 例題プログラム
【図6】 例題プログラムのコンパイル結果(仮想機
械語)
【図7】 例題プログラムのコンパイル結果(仮想機
械語)
【図8】 仮想機械語の一覧
【図9】 コンパイラ
【図10】 字句解析例
【図11】 構文一覧
【図12】 コード生成例
【図13】 送信データ
【図14】 応答データ
【図15】 インタプリタ
【図16】 デバッカー
【図17】 デバッカー操作例
【符号の説明】
1 ホストコンピュータ 2 ハンディターミナル 3 LCD表示部 4 キー入力部 5 通信ポート 6 シリアル通信ケーブル 7 中央処理装置(CPU) 8 フラッシュROM 9 キー入力部 10 外部インタフェース 11 プリンタ 12 ブザー回路 13 電源回路 14 RAM 15 LCD表示部 16 カレンダ回路 17 LED駆動回路 18 通信インタフェース回路 19 インタプリタ 20 基本プログラム 21 業務プログラム 22 ワーク領域 23 収集データ 24 モードフラグ 25 最初の仮想機械語命令 26 add命令 27 disp命令 28 acc命令 29 add構文

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ハンディタ−ミナルでおこなわれるハン
    ディターミナル向け日常業務プログラム(以下「応用プ
    ログラム」と略称する)のデバッグシステムであって、
    仮想機械語を出力する翻訳プログラムを用い、仮想機械
    語を解釈実行するプログラムをハンディターミナルで実
    行させ、デバッグ実行時、当該解釈実行プログラムがホ
    ストコンピュータと通信を行うことにより、シンボリッ
    クデバッグを行うこと特徴とするハンディターミナル用
    応用プログラムのデバッグシステム。
JP37038299A 1999-12-27 1999-12-27 ハンディターミナル用応用プログラムのデバッグシステム Pending JP2001184230A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP37038299A JP2001184230A (ja) 1999-12-27 1999-12-27 ハンディターミナル用応用プログラムのデバッグシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP37038299A JP2001184230A (ja) 1999-12-27 1999-12-27 ハンディターミナル用応用プログラムのデバッグシステム

Publications (1)

Publication Number Publication Date
JP2001184230A true JP2001184230A (ja) 2001-07-06

Family

ID=18496771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37038299A Pending JP2001184230A (ja) 1999-12-27 1999-12-27 ハンディターミナル用応用プログラムのデバッグシステム

Country Status (1)

Country Link
JP (1) JP2001184230A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912708B2 (en) * 2001-06-28 2005-06-28 Sun Microsystems, Inc. Method and apparatus to facilitate debugging a platform-independent virtual machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912708B2 (en) * 2001-06-28 2005-06-28 Sun Microsystems, Inc. Method and apparatus to facilitate debugging a platform-independent virtual machine

Similar Documents

Publication Publication Date Title
JP2795244B2 (ja) プログラムデバッグシステム
US8473971B2 (en) Type inference and type-directed late binding
EP0643851A1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
Ramsey et al. A retargetable debugger
US20040015843A1 (en) Method and program product for structured comment assists in computer programming
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JP2001184230A (ja) ハンディターミナル用応用プログラムのデバッグシステム
KR20020032256A (ko) 통합 임베디드 시스템 및 이의 구현 방법
JP2001175503A (ja) ハンディターミナル用応用プログラムの開発システム
US11921614B2 (en) System and method for developing, testing and debugging software for microcontrollers
Guyon et al. An integrated development environment for pattern matching programming
Glass et al. Llun—a high‐level debugger for generated parsers
Laurent Principled Procedural Parsing
Selic Complete High-Performance Code Generation from UML Models
Remmers Enhancing functionality with assistive error visualisations in Encore
Schwartz Low-Code to No-Code: A Software Development Revolution
Palkus An Eclipse-based integrated development environment for Curry
GUIDE intJ
KR970011897B1 (ko) 언어해석 처리장치
Vinju A Type-driven Approach to Concrete Meta Programming
CN114880212A (zh) 调试系统及调试方法
JP2939391B2 (ja) エミュレータ
JP2662533B2 (ja) ロジック・アナライザ
JP2939390B2 (ja) エミュレータ
Curley Emacs: the free software IDE