JPH06231003A - 実行可能ファイルのデバッガ - Google Patents

実行可能ファイルのデバッガ

Info

Publication number
JPH06231003A
JPH06231003A JP5018355A JP1835593A JPH06231003A JP H06231003 A JPH06231003 A JP H06231003A JP 5018355 A JP5018355 A JP 5018355A JP 1835593 A JP1835593 A JP 1835593A JP H06231003 A JPH06231003 A JP H06231003A
Authority
JP
Japan
Prior art keywords
file
symbol
program
debugger
address
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
JP5018355A
Other languages
English (en)
Inventor
Tatsuya Adachi
達也 足立
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP5018355A priority Critical patent/JPH06231003A/ja
Publication of JPH06231003A publication Critical patent/JPH06231003A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】WINDOWSの実行可能ファイルについての
デバッグ作業において、ソースファイルがなく実行可能
ファイルのみしかないときであっても、デバッグ作業を
支援し、その効率化を図る。 【構成】EXESYM12なるDOS上で動くデバッガ
プログラムにより、WINDOWSの実行可能ファイル
8を読み込む。実行可能ファイル8のヘッダー部には関
数とそのアドレスがインポートされているが、EXES
YM12はその関数およびそのアドレスを検索し、それ
に基づいてシンボルデータを作成し、シンボルファイル
の形式に変換したのち、シンボルファイル13として書
き込みを行う。そして、その作成したシンボルファイル
13に基づいて実行可能ファイル8に対するデバッグ作
業を行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラム開発の作業
分野において、バグとりを行うデバッグ作業の支援を行
うデバッガに係り、特にはWINDOWSにおける実行
可能ファイルに対するデバッガに関する。
【0002】
【従来の技術】パーソナルコンピュータでプログラミン
グし作成されたプログラムを実行させようとする場合、
次のような作業が必要となる。
【0003】現在のパソコンのプログラミング言語には
代表的なものとして、図4に示すように、アセンブリ言
語1とC言語2がある。プログラマーは、これらの言語
の数種の関数やニーモニックを組み合わせてプログラム
を記述する。この作業をコーディングといい、テキスト
エディタ3などの文字入力が可能なテキスト入力プログ
ラムを用いて関数などを入力してプログラムを作成しフ
ァイルに書き込む。このようにプログラミング言語をコ
ーディングしたファイルは一般にソースファイル(ソー
スプログラム)4と呼ばれる。ソースファイル4の中身
はまだテキストイメージであるのでプログラムとしての
機能は果たさない。
【0004】次に、このソースファイル4をパソコンで
実際に動作させることのできる言語となるよう変換(コ
ンパイル,アセンブル)する。パソコンが動作する言語
はマシン語といい、テキストイメージのソースファイル
4をコンパイル5(またはアセンブル)することによっ
て得られる。このようにコンパイル5することによって
得られたコードをオブジェクトといい、それをファイル
に落としたものをオブジェクトファイル(オブジェクト
プログラム)6という。このオブジェクトファイル6は
ただ単に言語に基づいてマシン語を出力しただけのもの
であるので、実際のパソコンのアドレスとは対応してい
ない。一般に、オブジェクトファイル6は複数個の機能
モジュールに分解されて作成されているからである。
【0005】そこで、次の作業としてリンク7を行う。
リンク7というのは、複数個のモジュールに分かれてい
るオブジェクトファイル6を結合し、マシン語をアドレ
スに対応付ける役割を果たす。ここで出力されたファイ
ルがパソコンで実行可能なファイル(実行可能ファイ
ル)8となる。
【0006】通常、プログラムの使用者に提供されるの
は、この実行可能ファイル8である。ところが、この実
行可能ファイル8にプログラミングのミスによるバグが
生じており、パソコンが正常に動作しない事態が発生し
た場合、そのバグを取り除くデバッグという作業を行う
必要がある。デバッグにはデバッガというプログラムを
用いる。
【0007】実行形式のプログラムのデバッグを行う場
合、デバッガの逆アセンブリ機能を用い、そのニーモニ
ックコードを解析しデバッグを行う。逆アセンブリ機能
を用いてプログラムをトレースすると、16進数アドレ
スイメージのマシン語プログラムがディスプレイに出力
表示される。デバッグ作業者は、その出力表示された情
報をもとにデバッグを行う。
【0008】
【発明が解決しようとする課題】しかし、実行形式のプ
ログラムだけでは情報量は少ない。例えばアドレスだけ
でコールされているサブルーチンがどういう役割を果た
すものであるのかを知ることは一般にむずかしいもので
ある。デバッグ作業は、それを行う者の知識と経験によ
って効率が異なるが、熟練者でも多大な時間と労力とを
必要とする。
【0009】デバッグ作業は、本来は作成者に委ねられ
ているものである。そこではソースファイルがあるの
で、比較的容易にデバッグ作業が行える。
【0010】しかし、年々複雑化の一途をたどるプログ
ラム開発において、そのような複雑なプログラムを1開
発グループ内で管理し切れるものではない。そのため、
プログラムは分割され、多数の開発グループで各々の担
当箇所を管理することになる。
【0011】ところが、グループ間の事情(例えば最新
技術の機密保持など)のためにソースファイルを提供し
てくれない場合がある。そのような場合において、担当
以外の箇所にバグを発見したときにそのバグを取り除く
ためには、ソースファイルがないのでバグの事実を担当
者に報告してデバッグを行ってもらうか、あるいは、独
自でその原因を突き止めてデバッグするかである。前者
は従来から行われている方法であり、使用者はバグの修
正が完了するまである程度の時間待ちをしなければなら
なかった。後者は前者の方法に比べて担当者の負担を軽
減するためにとられる方法である。しかし、後者の場
合、作業者は唯一提供されている実行可能ファイル8か
ら直接デバッグを行わなければならない。
【0012】しかしながら、これまでの技術によれば、
実行可能ファイルの直接的なデバッグ作業は非常に困難
なものであり、また、アドレスだけの情報では正確性を
欠き、しかも、時間と労力を無駄に消費しかねないので
ある。そのデバッグの対象がシンボルのないものであ
り、また、デバッグの逆アセンブリ機能を用いてもアド
レスしか表示されていないサブルーチンの解析を逐次行
わなければならないからである。
【0013】ところで、マルチウインドウ,マルチタス
クが可能なWINDOWSは、現在のパソコンソフトウ
ェア市場において大きな成功を収めつつある。ここ数年
の間にWINDOWS用のソフトウェアは増加の一途を
たどり、多種多様のものが出回るようになってきた。そ
のため、各企業間の競争は熾烈なものになり、いかによ
り安全で完成度の高いソフトウェアをいかにより迅速に
作成するかがプログラマーの最優先課題となる。完成度
の高いソフトウェアを作成するには、プログラムをくま
なくチェックし、存在するバグをできるだけ多く抽出し
デバッグする必要がある。しかし、機能が多岐にわたる
複雑なプログラムをデバッグするには、作業を分担化
し、各モジュールごとにデバッグを行う必要がある。
【0014】WINDOWSのデバッグ作業において
も、関数や変数のアドレスをシンボル名によって参照す
る機能をもったデバッガを使うデバッグ方法がより効率
的で好ましい。シンボルを用いてデバッグを行うために
は、デバッガプログラムを起動する際に、シンボルファ
イルを実行可能ファイルと同様に読み込めばよい。シン
ボルファイルは次のように作成する。コンパイル時にマ
ップファイルを作成することのできるコンパイラを使用
しマップファイルを作成し、このマップファイルの内容
に基づいてシンボルファイルを作成する。
【0015】ただし、上記のシンボルファイルを作成す
る方法は、作成者がソースファイルを所有している場合
に限り有効である。もし、提供されたプログラムが実行
形式のファイルのみであった場合にはシンボルファイル
を作成することはできないため、そのプログラムにおけ
るデバッグ作業はシンボルがないことから非常に困難な
ものとならざるを得ない。
【0016】本発明は、このような事情に鑑みて創案さ
れたものであって、特にWINDOWSにおけるデバッ
グ作業を支援し、その効率化を図ることを目的とする。
【0017】
【課題を解決するための手段】本発明に係る実行可能フ
ァイルのデバッガは、実行可能ファイルを読み込む手段
と、読み込んだ実行可能ファイルのヘッダー部にインポ
ートされている関数およびそのアドレスを検索する手段
と、検索した関数およびそのアドレスからシンボルを作
成する手段と、作成したシンボルに基づいてシンボルフ
ァイルを作成する手段とを備えたことを特徴とするもの
である。
【0018】
【作用】WINDOWSにおける実行可能ファイルに
は、そのヘッダー部にインポート,エクスポートされる
関数およびそのアドレスが定義されている。ヘッダー部
からインポートされている関数およびそのアドレスを抽
出し、その抽出した関数およびそのアドレスに基づいて
シンボルファイルを作成することが可能である。つま
り、WINDOWSの実行可能ファイルのみから、デバ
ッグ作業に必要なシンボルファイルを作成することがで
きるのである。
【0019】
【実施例】以下、本発明に係る実行可能ファイルのデバ
ッガの一実施例を図面に基づいて詳細に説明する。
【0020】図3はパーソナルコンピュータのプログラ
ム開発の様子を示している。アセンブリ言語1やC言語
2などのプログラミング言語における数種の関数やニー
モニックを組み合わせてコーディングを行い、テキスト
エディタ3などの文字入力が可能なテキスト入力プログ
ラムを用いてテキストイメージのソースファイル4を作
成する。次いで、コンパイル5によってソースファイル
4をマシン語で表現されたオブジェクトファイル6に変
換する。次いで、リンク7により、オブジェクトファイ
ル6から実行可能ファイル8とマップファイル9とを作
成する。ソースファイル4が手元にあるとき、通常は、
作成されたマップファイル9から、MAPSYMコマン
ド10によってシンボルファイル11を作成する。この
MAPSYMコマンド10によるシンボルファイル11
の作成ができないときは、つまり、ソースファイル4が
手元になく、実行可能ファイル8しか提供されていない
ときには、本発明に係る実行可能ファイルのデバッガを
使用することになる。
【0021】図3において破線で囲んだ部分が本発明の
デバッガであり、その名称はEXESYMとなってい
る。EXESYMはDOS(ディスク・オペレーティン
グ・システム)上で動作するプログラムであり、EXE
形式のプログラムである。実行可能ファイル8のみに基
づいて、EXESYM12なるデバッガを用いてシンボ
ルファイル13を作成するのである。
【0022】EXESYMコマンドの書式は次のように
なる。
【0023】EXESYM <file name1> <file name2> コマンドの入力については、DOSのコマンドプロンプ
ト上で上記の書式を入力することになる。<file
name1>には実行可能ファイルを指定し、<fil
e name2>にはシンボルファイルを指定する。
【0024】図2はEXESYM12の機能をもう少し
詳しく示したものである。まず、WINDOWSの実行
可能ファイル8の読み込み21を行う。次に、読み込ん
だ実行可能ファイル8のヘッダー部において必要な情報
の検索22を行い、その情報のリストアップ23を行っ
てデータテーブル24を作成する。次いで、データのシ
ンボル形式への変換25を行い、フロッピーディスク等
への書き込み26を行うことによりシンボルファイル1
3を作成する。
【0025】図1はより具体的な動作説明に供するフロ
ーチャートである。本発明に係る実行可能ファイルのデ
バッガのプログラムであるEXESYM12の動作は、
DOSのコマンドプロンプト上で入力されるコマンドに
よって行われる。入力の際には2つのパラメータが入力
される。一つは入力ファイル31であり、上記の<fi
le name1>に対応し、WINDOWSの実行可
能ファイル名を指定する。もう一つは出力ファイル32
であり、上記の<file name2>に対応し、シ
ンボルファイルを指定する。
【0026】ステップS1で第1のパラメータがあるか
どうかを判断し、ないときはステップS21に進んでエ
ラーメッセージを表示し処理を終了する。第1のパラメ
ータがあるときはステップS2に進んで第2のパラメー
タがあるかどうかを判断し、ないときはやはりステップ
S21に進んでエラーメッセージを表示し処理を終了す
る。第2のパラメータもあるときはステップS3に進
み、キーボードからタイプ入力されたWINDOWSの
実行可能ファイル名に基づいてそのファイル名に該当す
る実行可能ファイルを読み込む。そして、ステップS4
で実行可能ファイルをオープンし、ステップS5で実行
可能ファイルのヘッダー部を読み込み、プログラムEX
ESYMの内部で予めアロケート(割り当て)している
バッファに格納する。ステップS6ではそのバッファに
格納したヘッダー部にインポートされている関数および
そのアドレスを検索し、シンボルファイルを作成する上
で必須の情報だけを抽出しシンボルデータとして別のエ
リアに格納する。そして、ステップS7で実行可能ファ
イルをクローズする。
【0027】次に、ステップS8において前記の必須の
情報に基づいて所要のシンボルデータを作成する。そし
て、ステップS9ではそのシンボルデータをシンボルフ
ァイルの形式に変換するとともに、そのシンボルデータ
を格納すべきファイルをオープンする。続いてステップ
S10でシンボルファイルの形式に変換されたシンボル
データを書き込んで所要のシンボルファイルを作成し、
ステップS11でファイルをクローズする。
【0028】以上のようにして、WINDOWSの実行
可能ファイルのみに基づいて、その実行可能ファイルの
デバッグ作業に必要なシンボルファイルを作成すること
ができる。
【0029】さて、デバッグ作業に必要なシンボルファ
イルの作成が完了すると、次にデバッグ作業に移る。ま
ず、WINDOWSの実行可能ファイルとそれに基づい
て作成されたシンボルファイルとを読み込む。次に、試
験的にWINDOWSの実行可能ファイルを実行させて
みる。その実行は1ステップずつトレースすることで行
われる。トレース時にシンボルに含まれている関数や変
数のアドレスが現れた場合、デバッガはそのアドレスを
シンボルに置き換えて、デバッグ作業の支援を行う。
【0030】
【発明の効果】以上のように、本発明によれば、WIN
DOWSの実行可能ファイルのデバッグを行うに際し
て、ソースファイルがなく実行可能ファイルだけしかな
い場合であっても、実行可能ファイルに基づいてシンボ
ルファイルを作成するので、その実行可能ファイルのデ
バッグ作業の効率化を図ることができる。すなわち、も
ともとはシンボルを有していないプログラムのデバッグ
が容易化され、一々担当のプログラマーに修正を依頼す
るのではなく使用者側においてもバグの原因を突き止め
てデバッグすることができ、担当プログラマーの負担を
軽減することができる。使用者においてもデバッグに要
する時間および労力の軽減ひいてはプログラム開発に要
する時間および労力の軽減が図られ、プログラムの完成
度を高めることができる。また、WINDOWSのプロ
グラムの内部でどのような関数および変数が使用されて
いるかが一目で分かる。
【図面の簡単な説明】
【図1】本発明の一実施例に係る実行可能ファイルのデ
バッガの具体的な動作説明に供するフローチャートであ
る。
【図2】実施例における実行可能ファイルのデバッガの
EXESYMの機能を詳しく示したフローチャートであ
る。
【図3】実施例に係るパーソナルコンピュータのプログ
ラム開発に伴う概略的な作業手順図である。
【図4】従来例に係るパーソナルコンピュータのプログ
ラム開発に伴う概略的な作業手順図である。
【符号の説明】
1……アセンブリ言語 2……C言語 3……テキストエディタ 4……ソースファイル 5……コンパイル 6……オブジェクトファイル 7……リンク 8……実行可能ファイル 9……マップファイル 10……MAPSYMコマンド 11……シンボルファイル 12……EXESYMコマンド 13……シンボルファイル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 実行可能ファイルを読み込む手段と、読
    み込んだ実行可能ファイルのヘッダー部にインポートさ
    れている関数およびそのアドレスを検索する手段と、検
    索した関数およびそのアドレスからシンボルを作成する
    手段と、作成したシンボルに基づいてシンボルファイル
    を作成する手段とを備えたことを特徴とする実行可能フ
    ァイルのデバッガ。
JP5018355A 1993-02-05 1993-02-05 実行可能ファイルのデバッガ Pending JPH06231003A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5018355A JPH06231003A (ja) 1993-02-05 1993-02-05 実行可能ファイルのデバッガ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5018355A JPH06231003A (ja) 1993-02-05 1993-02-05 実行可能ファイルのデバッガ

Publications (1)

Publication Number Publication Date
JPH06231003A true JPH06231003A (ja) 1994-08-19

Family

ID=11969385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5018355A Pending JPH06231003A (ja) 1993-02-05 1993-02-05 実行可能ファイルのデバッガ

Country Status (1)

Country Link
JP (1) JPH06231003A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4880121B2 (ja) * 1998-08-13 2012-02-22 オラクル・アメリカ・インコーポレイテッド バーチャル・マシン環境でネイティブ・コードを変換し、実行する方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4880121B2 (ja) * 1998-08-13 2012-02-22 オラクル・アメリカ・インコーポレイテッド バーチャル・マシン環境でネイティブ・コードを変換し、実行する方法および装置

Similar Documents

Publication Publication Date Title
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5193191A (en) Incremental linking in source-code development system
US5182806A (en) Incremental compiler for source-code development system
US5201050A (en) Line-skip compiler for source-code development system
US5946488A (en) Method for selectively and incrementally displaying the results of preprocessing
US5926638A (en) Program debugging system for debugging a program having graphical user interface
US11579856B2 (en) Multi-chip compatible compiling method and device
JPH0883197A (ja) ソフトウエアプログラムをデバッグする方法およびコンピュータシステム
US20030033592A1 (en) Software debugger and software development support system
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JPH0950389A (ja) コンピュータシステムを使って実装される装置及び方法
US5301327A (en) Virtual memory management for source-code development system
JP2002532804A (ja) ハイブリッドコンピュータプログラミング環境
US7624381B1 (en) Portable detection of start and completion of object construction
AU638999B2 (en) Incremental compiler for source-code development system
JPH0766342B2 (ja) プログラムテスト装置
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JPH06231003A (ja) 実行可能ファイルのデバッガ
JPH07295612A (ja) 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPS6367695B2 (ja)
JP2000353112A (ja) 中間言語レベルのデバッグ方法及びシステム
JPH04209029A (ja) 並列処理プログラム翻訳処理装置