JP2002259121A - ソースラインデバッグ装置 - Google Patents

ソースラインデバッグ装置

Info

Publication number
JP2002259121A
JP2002259121A JP2001054229A JP2001054229A JP2002259121A JP 2002259121 A JP2002259121 A JP 2002259121A JP 2001054229 A JP2001054229 A JP 2001054229A JP 2001054229 A JP2001054229 A JP 2001054229A JP 2002259121 A JP2002259121 A JP 2002259121A
Authority
JP
Japan
Prior art keywords
program
source
information
file
executable
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
JP2001054229A
Other languages
English (en)
Inventor
Jun Kishikawa
準 岸川
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.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2001054229A priority Critical patent/JP2002259121A/ja
Publication of JP2002259121A publication Critical patent/JP2002259121A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 デバッガが稼動するコンピュータにて、実行
形式プログラムからソースプログラムを復元する。 【解決手段】 実行形式プログラム生成時に、ソースフ
ァイル毎にて、定義されている関数及び変数の情報、参
照している関数及び変数の情報、開始アドレス、及び終
了アドレスを含ませ、更に、上記の関数毎にて、引数情
報、関数の開始アドレス、関数の終了アドレスを含ませ
る。これらを逆コンパイルの際に利用して、ソースコー
ドを復元する。元のソースプログラムと復元されたソー
スプログラムとの、行番号における変換対応テーブルを
作成し、デバッガが稼動するマシンにて、ソースレベル
デバッグを可能なものにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】マイクロコンピュータシステ
ム上で実行されるプログラムのソースコードデバッグを
行なうシステム、及びソースコードデバッグを行なう方
法に関する。
【0002】
【従来の技術】マイクロコンピュータ上で稼動するシス
テム、及びそれらシステムを構成するプログラムを開発
する際には、通常、ワークステーションやパーソナルコ
ンピュータ(パソコン)を利用して開発作業が行なわれ
る。これらの開発時には、様々な高級プログラミング言
語、例えば、C言語やC++等により、プログラムをコ
ーディングする。
【0003】まず、コーディングの際、パソコン等にお
いて、各種テキストエディタを利用し、テキストデータ
によりプログラムが構築される。構築されるそれらプロ
グラムは、ファイルに書き込まれる。このようにテキス
トとしてのプログラムを保持したファイルを一般にソー
スファイルと呼び、テキストとしてのプログラムをソー
スプログラムと呼ぶ。よく知られるように、ソースファ
イルの内容であるソースプログラムは、そのままではコ
ンピュータで動作させることはできない。
【0004】次に、これらソースファイル(ソースプロ
グラム)をコンピュータで動作させるために、所定の変
換処理、即ちコンパイル処理及びリンク処理が必要にな
る。先ず、コンパイル処理により、ソースファイルはマ
シン語で表現されるオブジェクトファイルに変換され
る。さらに、それらオブジェクトファイルを実際に稼動
するコンピュータで動作し得る形式、即ち、複数のモジ
ュールとして存在するオブジェクトファイルを結合させ
実稼動するコンピュータのアドレスに対応付ける形式に
変換させることが必要である。ここで作成される形式の
ファイルは、実行形式ファイル(又は実行可能ファイ
ル)と呼ばれる。
【0005】以上の手順を、図5に示す。これらこと
は、マイクロコンピュータで稼動するプログラムのみな
らず、様々なコンピュータ・プログラムに共通の属性で
あり、勿論当業者には公知の事柄である。
【0006】ところで、マイクロコンピュータ(マイク
ロプロセッサ)で動作するシステムに関わるプログラム
を開発する場合、上記のように、通常先ずパソコンやワ
ークステーションでソースファイルを作成し、続いて、
同じくパソコンやワークステーションにおいて、更にコ
ンパイル処理とリンク処理を行なう。
【0007】その後、マイクロプロセッサである対象プ
ロセッサに実行形式プログラムを実装するためには、対
象プロセッサのための制御プロセッサが、それら実行形
式プログラムをダウンロードするのが通常である。
【0008】ここで、制御プロセッサにデバッガを備え
て、対象プロセッサをテスト動作させつつデバッグ作業
を行うことになる。このデバッガにおいて、ソースコー
ド(ソースプログラム)デバッグを行おうとする場合、
当然ながら、制御プロセッサの周辺に(即ち、参照し得
る位置に)ソースプログラムが存在していなければなら
ない。ところが、 ・ソースプログラムを開発するためのマシン(コンピュ
ータ)と、対象プロセッサのための制御プロセッサと
は、全く別の機械であることがある、 ・対象プロセッサのための制御プロセッサでは、無用な
記憶領域を節約するため、ソースプログラムを保持して
いないこともある、 ・加えて、ソースプログラムを開発するためのマシン
(コンピュータ)と、対象プロセッサのための制御プロ
セッサとは、何らの通信手段を備えないことも多い、と
いうこれらの理由から、上記デバッガからは、ソースプ
ログラムが参照できないことも多い、というのが現状で
ある。
【0009】特開平7−104978号では、ソースプ
ログラムを圧縮した上で実行形式プログラムに付加する
ことにより、実行形式プログラムが存在する限りソース
プログラムを復元できるような仕組みを構築し、よっ
て、上記の問題点の解決を示唆する。しかし、実行形式
プログラムは所定量の圧縮ソースプログラムを担持して
いるため、記憶領域の有効な利用が図れないという問題
点は残る。
【0010】
【発明が解決しようとする課題】本発明は、実行形式プ
ログラムは格納するがそのソースプログラムを格納せ
ず、且つ、そのソースプログラムコードを格納するホス
トコンピュータ(等)との通信手段を有さないホストコ
ンピュータにおいて、ソースプログラム(ファイル)を
復元し更にソースラインデバッグを行えるようにするこ
とを目的とする。しかも、実行形式(プログラム)ファ
イルの必要容量を殆ど変化(増大)させることなく、上
記のことを実現することを目的とする。
【0011】
【課題を解決するための手段】本発明は、上記の目的を
達成するためになされたものである。本発明に係る請求
項1に記載のプログラム開発システムは、ソースプログ
ラムファイルをコンパイル処理してオブジェクトコード
を生成し、更に該オブジェクトコードを結合処理して実
行形式プログラムを生成するプログラム開発システムで
ある。そのプログラム開発システムにおいて、上記オブ
ジェクトコード及び実行形式プログラム内に、逆コンパ
イルによるソースプログラムの復元にて求められる情報
を付加する。
【0012】本発明に係る請求項2に記載のプログラム
開発システムは、上記の逆コンパイルによるソースプロ
グラムの復元にて求められる情報が、ソースファイル毎
の、 ・定義されている関数及び変数の情報、 ・参照している関数及び変数の情報、 ・開始アドレス、 ・終了アドレス を含み、更に、上記の関数毎の、 ・引数情報、 ・関数の開始アドレス、 ・関数の終了アドレス、 を含む、請求項1に記載のプログラム開発システムであ
る。
【0013】本発明に係る請求項3に記載のプログラム
開発システムは、上記実行形式プログラムの個々のコー
ドに、ソースプログラムの行番号を備えさせる、請求項
1又は請求項2に記載のプログラム開発システムであ
る。
【0014】本発明に係る請求項4に記載のプログラム
デバッグシステムは、請求項1乃至請求項3にて生成さ
れる実行形式プログラムを基にし、該実行形式プログラ
ムに付加されている、逆コンパイルによるソースプログ
ラムの復元にて求められる情報を利用して、ソースプロ
グラムの復元を行う、プログラムデバッグシステムであ
る。
【0015】本発明に係る請求項5に記載のプログラム
デバッグシステムは、請求項3にて生成される実行形式
プログラムが備える行番号と、復元後生成されるソース
プログラムにおける行番号との対応関係が、変換テーブ
ルとして生成される、請求項4に記載のプログラムデバ
ッグシステムである。
【0016】
【発明の実施の形態】以下において、図面を参照しつつ
本発明に係る好適な実施の形態を説明する。
【0017】図1は、本発明に係るソースコードプログ
ラムデバッグ実施処理例の順序を示す。図1において
は、第1のホストコンピュータ2において、ソースプロ
グラムを作成し、第2のホストコンピュータ4におい
て、デバッグを行う。
【0018】第1のホストコンピュータ2にて、適切な
テキストエディタにより1つ又は複数のソースプログラ
ム6が作成される。作成されたソースプログラム6の夫
々は、コンパイラ8によりコンパイル処理され、オブジ
ェクトファイル10へ変換される。上記オブジェクトフ
ァイル10の個々には、ソースプログラムへの復元のた
めの情報(以下、ソースコード復元情報、と言う。)が
付加されている。即ち、本発明における上記コンパイラ
8は、オブジェクトファイル10生成時に、ソースコー
ド復元情報も生成し付加するように設計され形成されて
いる。
【0019】更に、第1のホストコンピュータ2にて、
リンカ12により上記オブジェクトファイル10の結合
処理が為され、実行形式ファイル14が形成される。こ
の実行形式ファイル14にも、ソースコード復元情報が
付加されている。即ち、本発明における上記リンカ12
は、実行形式ファイル14生成時に、オブジェクトファ
イル10に付加されるソースコード復元情報も整理して
結合する。
【0020】上記の実行形式ファイル14は、第2のホ
ストコンピュータ4に転送され、記録部(図示せず。)
に格納される。第2のホストコンピュータ4においてデ
バッグ処理を行う場合、実行形式ファイル14’のロー
ド処理時に第2のホストコンピュータ4に格納されるデ
バッガ16は、関数単位ないしはソースファイル単位に
ソースコードプログラム18を復元する。ソースコード
プログラム復元については、後で説明する。
【0021】第2のホストコンピュータ4においては、
ソースコードプログラム18を参照できるだけではな
い。第2のホストコンピュータ4に格納されるデバッガ
16を利用することにより、ソースコード(ソースプロ
グラム)デバッグ処理を行うことができる。即ち、第1
のホストコンピュータ2において実施できるソースコー
ドデバッグ処理と同様な、デバッグ処理が実施され得
る。デバッグ処理については、後で説明する。
【0022】図2は、ソース復元情報が付加されたオブ
ジェクトファイル10(又は、実行形式ファイル14)
の構成の例を示す。
【0023】上記のオブジェクトファイル10内には、
従来から備わるソースコードデバッグ情報(但し、図示
せず。)以外に、「ソースプログラムを復元するために
必要な『ソースファイル情報』20、及び『関数情報』
22」が含まれる。ここで、「ソースコードデバッグ情
報」とは、従来技術のデバッガで利用されデバッグ処理
を支援するための情報である。更に、図2に示すよう
に、オブジェクトファイル10には、ヘッダ情報24、
グローバルシンボル情報26、ローカルシンボル情報2
8、及びプログラムコード(アセンブリコード)30が
含まれるが、これらは従来技術においても含まれている
ことは、当業者には周知の事項である。
【0024】本発明の好適な実施の形態においては、上
記プログラムコード(アセンブリコード)30を構成す
る一つ一つの命令コードが、元のソースプログラムの行
番号のデータを付随的に有している。例えば、図4にお
いて、(1)が元のソースプログラムの一部、(2)が
そのアセンブリコードであるとする。(1)が元のソー
スプログラムにおいて行番号が「30」であるとする
と、(2)の夫々のコードがこの「30」という数字を
随伴している、ということである。
【0025】図2の「ソースファイル情報」20は、ソ
ースファイル6毎に、 ・定義されている関数及び変数の情報、 ・参照している関数及び変数の情報、 ・開始アドレス、 ・終了アドレス により、構成されている。
【0026】図2の「関数情報」22は、 ・引数情報、 ・関数の開始アドレス、 ・関数の終了アドレス、 により構成されている。
【0027】オブジェクトファイル10は、リンカ12
により結合処理が行われ、実行形式プログラム14が形
成される。この実行形式プログラム14も、図2の構成
(例)を備えて形成される。但し、コンパイル処理後の
オブジェクトファイル10の構成においては「ソースフ
ァイル情報20」にはそのソースファイル6に関する情
報しか含まれていないが、リンク処理後の実行形式プロ
グラム14の構成では「ソースファイル情報20」には
結合されたプログラムのソースファイル6全てに関する
情報が含まれる。
【0028】上記のリンカ12による結合の際には、未
解決なシンボルのアドレス確定、及びリロケータブル情
報のアブソリュート情報への変換が、行われる。
【0029】第2のホストコンピュータ4では、上記の
実行形式プログラム14’はデバッガ16を介してロー
ドされる。デバッガ16によって、ソースファイル情報
20及び関数情報22を基にして、ソースファイル18
毎に、先ず、グローバル変数、個々の関数エントリとリ
ターン部分の復元が行われる。図3は、その時点まで復
元させたC言語ソースファイルの例である。
【0030】続いて、ソースファイル情報20及び関数
情報22に記録されているアドレスに係るデータを利用
して、各関数についてのエントリ位置から終了位置(ア
ドレス)までの実プログラムコードが、実行形式ファイ
ル14’の「プログラムコード」30から抽出される。
抽出された実プログラムコード(アセンブリコード)3
0から、逆アセンブルが実行される。
【0031】上記の逆アセンブルにおいて、アセンブリ
コードのラベルに相当するオペランドは、適宜、変数情
報や引数情報を元にして、シンボル名に変換される。シ
ンボルへの変換後、アセンブリコードにおいて、例え
ば、個々のアセンブリコードが随伴する元のソースプロ
グラムの行番号が同一であるものを一かたまりにして、
アセンブリコード群の逆コンパイルを実施する。
【0032】上記の(ソースプログラムへの)逆コンパ
イルが1つの関数について終了したら、後続の関数につ
いて復元を行う。全ての関数について逆コンパイル即ち
復元処理が終了したら、ソースファイル18毎にそれら
関数を取りまとめてソースプログラム全体を復元する。
【0033】アセンブリコード30の各々は、元のソー
スプログラム6の行番号を伴う。第2のホストコンピュ
ータ4のデバッガ16は、アセンブリコード30の復元
後のソースプログラム18での行番号と、上記の元のソ
ースプログラム6の行番号とを対応付け、行番号の変換
テーブル32を作成する。
【0034】例えば、第2のホストコンピュータ4の記
録部(図示せず。)に格納される図4(3)の2行のア
センブリコードは、元のソースプログラム6の行番号と
して何れも「30」を伴っているとする。更に、これら
2行のアセンブリコードが図4(4)のように復元さ
れ、復元後は行番号が「40」及び「41」になったと
する。このとき、行番号「30」と「40」「41」と
を対応付けて図4(5)のような変換テーブル32が生
成されることになる。
【0035】上述のように、オブジェクトファイル10
及び実行形式ファイル14、14’は、「ソースライン
デバッグ情報」を含んでいる。この「ソースラインデバ
ッグ情報」は元のソースプログラム6の行番号に合わせ
て生成されているため、そのままでは、復元後のソース
プログラム18に対応し得ない。ここで、上記変換テー
ブル(32)を用いると、「ソースラインデバッグ情
報」と復元後のソースプログラム18とを対応付けるこ
とができ、復元後のソースプログラム18において「ソ
ースラインデバッグ情報」を利用してソースラインデバ
ッグを行うことができる。
【0036】
【発明の効果】本発明を利用することにより、次のこと
が可能になる。つまり、実行形式プログラムは格納する
がそのソースプログラムを格納せず、且つ、そのソース
プログラムコードを格納するホストコンピュータ(等)
との通信手段を有さないホストコンピュータにおいて、
ソースプログラム(ファイル)を復元することができ更
にソースラインデバッグを行うことができる。しかも、
実行形式(プログラム)ファイルの必要容量を殆ど変化
(増大)させることなく、上記のことが可能になる。
【図面の簡単な説明】
【図1】 本発明に係るソースコードプログラムデバッ
グ実施処理例の順序を示す。
【図2】 ソース復元情報が付加されたオブジェクトフ
ァイル、又は実行形式ファイルの構成の例を示す
【図3】 グローバル変数、個々の関数エントリとリタ
ーン部分までの復元をさせたC言語ソースファイルの例
である。
【図4】 元のソースプログラム、実行形式プログラ
ム、及び復元されたソースプログラムの例と、変換テー
ブルの例である。
【図5】 ソースプログラムから実行形式ファイルを作
成する、一般的な手順である。
【符号の説明】
2・・・第1のホストコンピュータ、4・・・第2のホ
ストコンピュータ、6ソースファイル(ソースプログラ
ム)、8・・・コンパイラ、10・・・ソース復元情報
付きオブジェクトファイル(オブジェクトプログラ
ム)、12・・・リンカ、14、14’・・・ソース復
元情報付き実行形式ファイル(実行形式プログラム)、
16・・・デバッガ、18・・・復元後ソースファイル
(ソースプログラム)、20・・・ソースファイル情
報、22・・・関数情報、30・・・アセンブリコード
(プログラムコード)、32・・・変換テーブル。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムファイルをコンパイル
    処理してオブジェクトコードを生成し、更に該オブジェ
    クトコードを結合処理して実行形式プログラムを生成す
    るプログラム開発システムにおいて、 上記オブジェクトコード及び実行形式プログラム内に、
    逆コンパイルによるソースプログラムの復元にて求めら
    れる情報を付加する、プログラム開発システム。
  2. 【請求項2】 上記の逆コンパイルによるソースプログ
    ラムの復元にて求められる情報が、ソースファイル毎
    の、 ・定義されている関数及び変数の情報、 ・参照している関数及び変数の情報、 ・開始アドレス、 ・終了アドレス を含み、更に、上記の関数毎の、 ・引数情報、 ・関数の開始アドレス、 ・関数の終了アドレス、 を含む、請求項1に記載のプログラム開発システム。
  3. 【請求項3】 上記実行形式プログラムの個々のコード
    に、ソースプログラムの行番号を備えさせる、請求項1
    又は請求項2に記載のプログラム開発システム。
  4. 【請求項4】 請求項1乃至請求項3にて生成される実
    行形式プログラムを基にし、 該実行形式プログラムに付加されている、逆コンパイル
    によるソースプログラムの復元にて求められる情報を利
    用して、 ソースプログラムの復元を行う、プログラムデバッグシ
    ステム。
  5. 【請求項5】 請求項3にて生成される実行形式プログ
    ラムが備える行番号と、復元後生成されるソースプログ
    ラムにおける行番号との対応関係が、変換テーブルとし
    て生成される、請求項4に記載のプログラムデバッグシ
    ステム。
JP2001054229A 2001-02-28 2001-02-28 ソースラインデバッグ装置 Pending JP2002259121A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001054229A JP2002259121A (ja) 2001-02-28 2001-02-28 ソースラインデバッグ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001054229A JP2002259121A (ja) 2001-02-28 2001-02-28 ソースラインデバッグ装置

Publications (1)

Publication Number Publication Date
JP2002259121A true JP2002259121A (ja) 2002-09-13

Family

ID=18914593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001054229A Pending JP2002259121A (ja) 2001-02-28 2001-02-28 ソースラインデバッグ装置

Country Status (1)

Country Link
JP (1) JP2002259121A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223590A (ja) * 2008-03-15 2009-10-01 Omron Corp プログラム開発支援装置の動作仕様管理方法
JP2012525648A (ja) * 2009-04-28 2012-10-22 クアルコム,インコーポレイテッド バイナリソフトウェア分析
CN103019942A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 一种基于安卓系统的待测应用自动测试方法和系统
JP2015191671A (ja) * 2014-03-28 2015-11-02 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御プログラムに対するインタラクション方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223590A (ja) * 2008-03-15 2009-10-01 Omron Corp プログラム開発支援装置の動作仕様管理方法
JP2012525648A (ja) * 2009-04-28 2012-10-22 クアルコム,インコーポレイテッド バイナリソフトウェア分析
CN103019942A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 一种基于安卓系统的待测应用自动测试方法和系统
JP2015191671A (ja) * 2014-03-28 2015-11-02 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御プログラムに対するインタラクション方法
US9971321B2 (en) 2014-03-28 2018-05-15 Dspace Digital Signal Processing And Control Engineering Gmbh Method for influencing a control program

Similar Documents

Publication Publication Date Title
US5170465A (en) Incremental-scanning compiler for source-code development system
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5182806A (en) Incremental compiler for source-code development system
US5590331A (en) Method and apparatus for generating platform-standard object files containing machine-independent code
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5561800A (en) Method and apparatus for incrementally linking modified routines into software
US6003095A (en) Apparatus and method for demand loading a dynamic link library
US7478366B2 (en) Debugger and method for debugging computer programs across multiple programming languages
US5193191A (en) Incremental linking in source-code development system
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US20030088860A1 (en) Compiler annotation for binary translation tools
US7877741B2 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
JP4181326B2 (ja) コード最適化のための方法、装置及びプログラム
US7299462B2 (en) Relocation format for linking
AU2892200A (en) Automatic stub/adapter generator
US7689979B1 (en) Methods and apparatus to improve application launch time
US20040083467A1 (en) System and method for executing intermediate code
US20050188362A1 (en) Method and system for performing link-time code optimization without additional code analysis
US5301327A (en) Virtual memory management for source-code development system
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
US8930925B2 (en) Method for enabling compilation of a Cobol source program utilizing a two-stage compilation process, the Cobol source program including a mix of Cobol, C++ or JAVA statements, and optional OpenMP directives
JP2002532804A (ja) ハイブリッドコンピュータプログラミング環境
AU638999B2 (en) Incremental compiler for source-code development system
US20060174230A1 (en) Methods for hosting general purpose computer languages on speical purpose systems
JP2002259121A (ja) ソースラインデバッグ装置