JP4909877B2 - デバッグ装置及びデバッグ方法 - Google Patents

デバッグ装置及びデバッグ方法 Download PDF

Info

Publication number
JP4909877B2
JP4909877B2 JP2007309260A JP2007309260A JP4909877B2 JP 4909877 B2 JP4909877 B2 JP 4909877B2 JP 2007309260 A JP2007309260 A JP 2007309260A JP 2007309260 A JP2007309260 A JP 2007309260A JP 4909877 B2 JP4909877 B2 JP 4909877B2
Authority
JP
Japan
Prior art keywords
code
debugging
display
internally generated
generated code
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
JP2007309260A
Other languages
English (en)
Other versions
JP2009134462A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007309260A priority Critical patent/JP4909877B2/ja
Priority to US12/273,934 priority patent/US8370810B2/en
Publication of JP2009134462A publication Critical patent/JP2009134462A/ja
Application granted granted Critical
Publication of JP4909877B2 publication Critical patent/JP4909877B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3644Debugging of software by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3628Debugging of software of optimised code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、デバッグ装置及びデバッグ方法に関し、特に、プログラムのデバッグを行うデバッグ装置及びデバッグ方法に関する。
従来、プログラムの作成にあたって、そのプログラムが正常に動作するかを確認するためデバッグ装置を用いてデバッグが行われる。デバッグ装置は、コンパイル装置により生成されたオブジェクトプログラムを入力とし、対応するソースコード又はアセンブリコードをグラフィカルユーザインターフェース(以下、GUIという)に表示する。
また、デバッグ装置には、ブレークポイントの設定及びステップ実行等を行う機能がある。例えば、デバッグ実行者が、GUIを利用しステップ実行を行うと、デバッグ装置は、ソースコードの1行又はアセンブリコードの1命令を実行する。更に、デバッグ装置は、ソースコード又はアセンブリコードの1命令を実行した結果、エラーの発生につながるような問題となるコードが存在すると、問題となる箇所を強調表示したり、そのエラー内容を示す補助的なコード又はメッセージ等の表示を行う。この結果、デバッグ実行者は、問題となるコードの発見が容易となっていた。
このようなデバッグ装置は、数多く提案されており、例えば、デバッグ実行者がデバッグを行う際に、ソースコード又はアセンブリコード中に補助的なコード又はメッセージ等の表示を行うデバッグ装置が提案されている(例えば、特許文献1参照)。
この提案によると、デバッグ実行者がソースレベルのステップ実行を行う場合、コンパイラの最適化によりソースコードの実行順序に変更があると、デバッグ実行者に注意を促すためのメッセージの表示を行う。
しかしながら、従来のデバッグ装置は、上述したような問題となるコードに補助的なメッセージを表示することはできるが、デバッグ中にコンパイラの最適化に伴い生成された、デバッグの不要なコードの情報と、デバッグの必要なコードの情報とを区別することができなかった。
また、従来のデバッグ装置は、このように区別されたデバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することができなかった。
特許第3107151号公報
そこで、本発明は、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができるデバッグ装置及びデバッグ方法を提供することを目的とする。
また、本発明は、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができるデバッグ装置及びデバッグ方法を提供することを目的とする。
本発明の一態様によれば、プログラムのデバッグを行うデバッグ装置であって、前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析する解析部と、解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部と、を有するデバッグ装置を提供することができる。
本発明の一態様によれば、プログラムのデバッグを行うデバッグ装置であって、前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択する表示選択部と、前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第1の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第2の所定のメッセージのみを表示する表示処理部と、を有するデバッグ装置を提供することができる。
本発明のデバッグ装置によれば、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができる。
また、本発明のデバッグ装置によれば、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができる。
以下、図面を参照して本発明の実施の形態を詳細に説明する。
まず図1及び図2に基づき、本発明の一実施の形態に係るデバッグ装置の構成を説明する。図1は、本実施の形態に係るデバッグ装置が含まれるプログラム生成装置の構成を示す構成図である。
プログラム生成装置100は、中央処理装置(CPU)、主メモリ等を搭載した本体装置101と、各種データを記憶する記憶装置102と、各種データを表示する表示装置103とを有して構成されている。
本体装置101は、パーソナルコンピュータ等のコンピュータ装置本体であり、入力装置として、キーボード104及びマウス105が接続されている。本体装置101は、これらの入力装置からの指示に基づいて、各種プログラムを実行する。
記憶装置102には、コンパイル機能のプログラムを有するコンパイラ106と、デバッグ機能のプログラムを有するデバッガ107とが記憶されている。
ユーザは、プログラミング言語により記述されたソースプログラムを入力とし、コンパイラ106を本体装置101上において実行することにより、オブジェクトプログラムを得ることができる。即ち、本体装置101とコンパイラ106とにより、コンパイル装置が構成されている。
また、ユーザは、コンパイル装置により得られたオブジェクトプログラムを入力とし、デバッガ107を本体装置101上おいて実行することにより、後述する各デバッグを実行することができる。即ち、本体装置101とデバッガ107とにより、デバッグ装置が構成されている。
ここで、このように構成される本実施の形態に係るデバッグ装置について説明する。図2は、本実施の形態に係るデバッグ装置の構成を説明するためのブロック図である。
デバッグ装置1は、内部生成コード情報解析部11と、デコード部12と、コマンド実行部13と、表示処理部14とを有して構成されている。
上述したコンパイル装置2は、後述する内部生成コード情報を内部生成コード情報解析部11に出力すると共に、ビットマップの命令列、即ち、オブジェクトコードをデコード部12に出力する。なお、説明を簡単にするために図2では、内部生成コード情報とオブジェクトコードとを別々に出力するように示しているが、内部生成コード情報は、オブジェクトコードを含むオブジェクトファイルの所定の領域オブジェクトに格納されている。
内部生成コード情報解析部11は、入力された内部生成コード情報を解析し、解析した内部生成コード情報解析結果をコマンド実行部13及び表示処理部14に出力する。
デコード部12は、入力されたオブジェクトコードをデコード処理し、機械命令の命令列、即ち、アセンブリコードに変換し、表示処理部14に出力する。
コマンド実行部13には、ユーザからのデバッグ用のコマンドが入力される。ユーザが、表示装置103上に表示されるGUIを操作することにより、対応するデバッグ用のコマンドがコマンド実行部13に入力される。コマンド実行部13は、入力されたデバッグ用のコマンドを解析し、コマンド実行結果を表示処理部14に出力する。また、コマンド実行部13は、入力された内部生成コード情報解析結果を解析し、後述する内部生成コードの表示又は非表示に応じて、ブレークポイントの設定の処理を行う。
表示処理部14は、入力されたアセンブリコード、内部生成コード解析結果及びコマンド実行結果に基づいて、表示処理を実行し、処理結果を表示装置103に出力する。表示処理部14は、内部生成コードの表示又は非表示の処理を実行する。表示処理部14は、内部生成コードの表示又は非表示を選択する表示選択部を構成する。内部生成コードの表示が選択された場合、内部生成コードの開始行の直前に内部生成コードの処理内容と開始位置であることを示すメッセージを表示し、内部生成コードの終了行の直後に内部生成コードの処理内容と終了位置であることを示すメッセージを表示する。内部生成コードの非表示が選択された場合、内部生成コードの処理内容と内部生成コード自体は隠蔽されていることを示すメッセージを表示し、内部生成コード自体は隠蔽される。
また、表示処理部14は、内部生成コードの表示又は非表示に依存して、ステップ系コマンドの処理を切り換えることができる。ステップ系コマンドが実行されると、内部生成コードの表示が選択されている場合、内部生成コードにおいてもプログラムは1ステップずつ進む。ステップ系コマンドが実行されると、内部生成コードの非表示が選択されている場合、プログラムは内部生成コードの最後まで進む。このステップ系コマンドには、stepコマンド及びstepiコマンドが存在する。以下、stepコマンドは、ソースコードの1行を実行し、stepiコマンドは、アセンブリコードの1命令を実行するものとする。
ここで、コンパイル装置2の処理について説明する。図3は、コンパイル装置の処理の流れの例を示すフローチャートである。
まず、コンパイル装置2は、ソースプログラムを読み込み(ステップS1)、コンパイルを実行する(ステップS2)。ステップS2におけるコンパイルの実行は、最適化、デバッグ情報の付加及び後述する内部生成コード情報の付加等である。次に、コンパイル装置2は、アセンブリコードを生成し(ステップS3)、オブジェクトプログラムを出力する(ステップS4)。最後に、コンパイル装置2は、上述した処理により生成された複数のオブジェクトプログラムをリンクし(ステップS5)、1つの実行可能なオブジェクトプログラム、即ち、実行モジュールを生成する。
コンパイラの最適化の機能を適用すると、ユーザにとってデバッグしにくい又はデバッグ不要なアセンブリコードが生成されることがある。例えば、コンパイラが並列化技術の1つである自動SIMD(Single Instruction Multiple Data)最適化を行う場合、以下の3つのアセンブリコードが生成されることがある。1つ目は、SIMD化可能か否かを動的に判定するコードである。2つ目は、SIMD化コードであり、3つ目は、非SIMD化コードである。
自動SIMD最適化が実行され、上述した3つのコードが生成された場合、まずSIMD化可能か否かを動的に判定するコードが実行される。このSIMD化可能か否かを動的に判定するコードによりSIMD化可能と判定されるとSIMD化コードが実行され、SIMD化不可能と判定されると非SIMD化コードが実行される。
ここで、ユーザが注目するポイントは、SIMD化可能か否かを動的に判定するコードではなく、判定の結果どちらのコード、即ち、SIMD化コード又は非SIMD化コードが実行されるかである。つまり、デバッグ対象コードは、SIMD化コード又は非SIMD化コードになり、SIMD化可能か否かを動的に判定するコードは、デバッグ不要なコードになる。このコンパイラの最適化に伴い生成されるデバッグ不要なコードを内部生成コードと定義する。
例えば、デバッグ不要なコードの1つの例として、SIMD化可能か否かを動的に判定するコードをあげているが、このコードはプログラムを正常に実行するために、コンパイル装置が暗黙的に生成するコードである。そのため、このコードに不具合が混入した場合は、コンパイル装置自体の不具合の可能性が高いと考えられる。即ち、プログラマは、このコードをケアする必要が低いと推測される。
ただし、注意すべき点は、全てコンパイル装置の不具合であると決め付けられる訳ではなく、プログラマが記述したソースコードとコンパイル装置との相互作用により、上記の暗黙的に生成されたコードに不具合が混入する可能性もある。そのため、デバッグ不要なコードも表示できるようになっている。
自動SIMD最適化の例では、SIMD化可能か否かを動的に判定するコードが内部生成コードに相当する。この内部生成コードは、入力データ等に基づいて、SIMDの処理を実行するか、非SIMDの処理を実行するかを判定するためのプログラムである。言い換えると、内部生成コードは、コンパイラがソースコードに対して複数の実行命令群を生成する場合に、コンパイラの内部において生成されるコードである。
内部生成コード情報の付加では、最適化により生成された内部生成コードから内部生成コード情報が生成され、生成された内部生成コード情報は、所定のフォーマットにより暗号化されオブジェクトプログラム内の所定の領域に付加される。
コンパイラの最適化に伴い生成されるデバッグ対象ではない内部生成コードがGUI上に表示されると、デバッグの妨げとなり効率の悪化が予想される。
そこで、本実施の形態では、内部生成コード情報を解析し、デバッグ対象ではない内部生成コードに対して内部生成コードの処理内容等を示すメッセージを付加する、又は、内部生成コード自体をユーザから隠蔽することにより、デバッグ効率を向上させることを特徴とする。
ここで、内部生成コード情報解析部11の処理について説明する。図4は、内部生成コード情報解析部の処理の例を説明するための説明図である。
内部生成コード情報解析部11には、所定のフォーマットにより暗号化された内部生成コード情報が入力される。内部生成コード情報解析部11は、この内部生成コード情報を解析し、内部生成コード情報解析結果を得る。
内部生成コード情報解析部11により得られる内部生成コード情報解析結果は、内部生成コードの処理内容、開始アドレス、終了アドレス及び終了後に実行されうる命令アドレスを含む。図4の例では、内部生成コード情報解析結果は、内部生成コードの処理内容は、align checkとalias checkであり、内部生成コードの開始アドレスは、0x8102b0であり、内部生成コードの終了アドレスは、0x810320であり、内部生成コードの終了後に実行されうる命令アドレスは、0x810328又は0x810386であることを示す情報である。内部生成コードの終了後に実行されうる命令アドレスとは、SIMD化コードの先頭のアドレス又は非SIMD化コードの先頭のアドレスである。コマンド実行部13は、ステップ実行時に、次に処理が行われる命令のアドレスへ、ブレークポイントの設定を行うことによって、後述するような内部生成コードの表示又は非表示に応じた処理を行う。
内部生成コード情報解析部11により解析して得られた内部生成コード情報解析結果は、コマンド実行部13及び表示処理部14に入力され、コマンド実行部13及び表示処理部14のそれぞれは、この内部生成コード情報解析結果に基づいて上述した処理を実行する。
なお、内部生成コード情報解析部11は、解析した内部生成コード情報解析結果を表示装置103に表示するようにしてもよい。内部生成コード情報解析部11は、内部生成コード情報を解析して得られた内部生成コードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部を構成する。この結果、ユーザは、内部生成コードの処理内容、開始位置及び終了位置等を認識することができるため、デバッグの効率を向上することができる。
図5は、内部生成コードの表示又は非表示が選択された場合の処理の流れの例を示すフローチャートである。この処理は、ユーザが表示装置103のGUIを操作し、内部生成コードを表示するか否かを選択すると開始される。
まず、コマンド実行部13は、入力されたコマンドの解析を行い、コマンド実行結果を表示処理部14に出力する(ステップS11)。表示処理部14は、コマンド実行結果を解析し、内部生成コードを表示するか否かを判定する(ステップS12)。内部生成コードを表示する場合、YESとなり、内部生成コードの開始直前及び終了直後に、内部生成コードの処理内容と開始位置又は終了位置とを示す所定のメッセージを表示する(ステップS13)。
このステップS13における処理は、内部生成コード情報解析結果に基づいて、アセンブリコードに対し行われる。表示処理部14には、コマンド実行結果が入力されると共に、内部生成コード情報解析部11からの内部生成コード情報解析結果とデコード部12からのアセンブリコードが入力される。表示処理部14は、内部生成コード情報解析結果から上述した内部生成コードの開始アドレス及び終了アドレス等を解析し、対応するアセンブリコードのアドレスの位置に所定のメッセージを付加する。このように処理されたアセンブリコードは、表示装置103に出力され、表示装置103に表示される。
一方、内部生成コードを非表示にする場合、NOとなり、内部生成コードを隠蔽し、内部生成コードの処理内容と内部生成コードを隠蔽したことを示す所定のメッセージのみを表示する(ステップS14)。このステップS14における処理は、ステップS13と同様に、内部生成コード情報解析結果に基づいて、アセンブリコードに対し行われる。
図6は、内部生成コードの表示又は非表示に基づいて、ステップ系コマンドの処理を切り換える処理の流れの例を示すフローチャートである。この処理は、ユーザが表示装置103のGUIを操作し、ステップ系コマンドであるstepiを実行すると開始される。
まず、コマンド実行部13は、入力されたコマンドの解析を行い、コマンド実行結果を表示処理部14に出力する(ステップS21)。表示処理部14は、コマンド実行結果を解析すると共に、内部生成コードが表示されているか否かを検出する(ステップS22)。内部コードが表示されている場合、YESとなり、内部生成コードを1ステップずつ実行する(ステップS23)。内部生成コードが表示されていない場合、NOとなり、内部生成コードの最後まで実行する(ステップS24)。
図7は、図5のステップS13における、内部生成コードの表示が選択された場合の画面の表示例を示す図である。図7では、アドレス0x891a68からアドレス0x891b00の区間が内部生成コードに相当する。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x891a68の直前に点線により囲まれた部分21が付加され、内部生成コードの終了のアドレス0x891b99の直後に点線により囲まれた部分22が付加される。
点線により囲まれた部分21は、内部生成コードの処理内容と開始位置であることを示すサポートメッセージであり、点線により囲まれた部分22は、内部生成コードの処理内容と終了位置であることを示すサポートメッセージである。なお、プログラムカウンタ(以下、PCという)は、アドレス0x891a60に停止している。PCの停止位置は、図7において、三角印30であり、以下の説明でも同様とする。3つの三角印30が存在するのは、3つの命令を同時に実行することが可能であることを示している。
図8は、図5のステップS13における、内部生成コードの非表示が選択された場合の画面の表示例を示す図である。内部生成コードの非表示が選択された場合、図7の内部生成コードが隠蔽され、点線により囲まれた部分23が付加される。
点線により囲まれた部分23は、内部生成コードの処理内容と内部生成コード自体は隠蔽されていることを示すサポートメッセージである。なお、PCは、アドレス0x891a60に停止している。
図9は、内部生成コードが表示されている状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。内部生成コードが表示されている場合、即ち、図7ではPCはアドレス0x891a60に停止している。この状態において、stepiコマンドを1度実行すると、内部生成コードの直前のコードが実行された後、PCは、内部生成コードの先頭、即ち、アドレス0x891a68において停止する。その後も、stepiコマンドを実行すると、内部生成コードを1ステップずつ実行する。
図10は、内部生成コードが表示されていない状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。内部生成コードが表示されていない場合、即ち、図8ではPCはアドレス0x891a60に停止している。この状態において、stepiコマンドを1度実行すると、内部生成コードの直前のコードが実行された後、内部生成コードの最後まで実行する。この結果、PCは、内部生成コードの終了直後、即ち、アドレス0x891b08において停止する。このPCが内部生成コードの終了直後において停止する処理は、上述したコマンド設定部13により設定されたブレークポイントに跳ぶことにより実行される。
以上のように、デバッグ装置1は、オブジェクトファイルの所定の領域に格納されている内部生成コード情報を解析し、デバッグ対象ではない内部生成コードに対して、内部生成コードの処理内容と開始位置又は終了位置とを示すサポートメッセージを付加するようにした。また、デバッグ装置1は、デバッグ対象ではない内部生成コードを隠蔽し、内部生成コードの処理内容と内部生成コードを隠蔽したことを示すサポートメッセージを付加するようにした。この結果、ユーザは、デバッグ対象ではない内部生成コードの処理内容、開始位置及び終了位置を認識する、あるいは、デバッグ対象ではない内部生成コード自体を隠蔽することができる。
以上から、内部生成コードを表示する場合でも、内部生成コードの開始位置と終了位置にメッセージを付加することで、ユーザは、内部生成コードを深く読み解く必要がなくなる。また、内部生成コード自体をユーザから隠蔽することで、ユーザが読むべきアセンブリコード量を減らすことができる。
よって、本実施の形態のデバッグ装置によれば、デバッグの不要なコードの情報をデバッグの必要なコードの情報と区別することができる。また、デバッグ不要なコードの開始位置及び終了位置にメッセージを付加する、あるいは、デバッグ不要なコード自体を隠蔽することによりデバッグの効率を向上させることができる。
次に、本実施の形態の応用例について説明する。
上述した実施の形態では、自動SIMD最適化により生成される内部生成コードについて説明したが、自動SIMD最適化以外の内部生成コードについて適用してもよい。
図11は、ループ展開を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図11では、アドレス0x8102a8からアドレス0x8102f0の区間が、ループ展開を行う場合に生成される内部生成コードに相当する。即ち、この内部生成コードは、ループ展開を実行できるか否かの判定するためのプログラムであり、デバッグ不要なコードである。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x8102a8の直前に点線により囲まれた部分24が付加され、内部生成コードの終了のアドレス0x8102f0の直後に点線により囲まれた部分25が付加される。なお、PCは、アドレス0x8102a0に停止している。
図12は、レジスタの退避を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図12では、アドレス0x81016eからアドレス0x810178の区間が、レジスタの退避を行う場合にコンパイラにより生成される内部生成コードに相当し、デバッグ不要なコードの部分である。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x81016eの直前に点線により囲まれた部分26が付加され、内部生成コードの終了のアドレス0x810178の直後に点線により囲まれた部分27が付加される。なお、PCは、アドレス0x81016cに停止している。
図13は、分岐テーブルの参照を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。図13では、アドレス0x81015eからアドレス0x810168の区間が、分岐テーブルの参照を行う場合にコンパイラにより生成される内部生成コードに相当し、デバッグ不要なコードの部分である。内部生成コードの表示が選択された場合、内部生成コードの先頭のアドレス0x81015eの直前に点線により囲まれた部分28が付加され、内部生成コードの終了のアドレス0x810168の直後に点線により囲まれた部分29が付加される。なお、PCは、アドレス0x81015cに停止している。
なお、応用例では、内部生成コードを表示する例について説明したが、上述した実施の形態と同様、内部生成コードを非表示にすることもできる。また、上述した実施の形態と同様、内部生成コードの表示又は非表示の状態に基づいて、ステップ系コマンドの処理を切換えることもできる。
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに1対1には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック(部)を想定して実施の形態を説明した。また、本明細書における各フローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD-ROM等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全体あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグ装置を実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本実施の形態に係るデバッグ装置が含まれるプログラム生成装置の構成を示す構成図である。 本実施の形態に係るデバッグ装置の構成を説明するためのブロック図である。 コンパイル装置の処理の流れの例を示すフローチャートである。 内部生成コード情報解析部の処理の例を説明するための説明図である。 内部生成コードの表示又は非表示が選択された場合の処理の流れの例を示すフローチャートである。 内部生成コードの表示又は非表示に基づいて、ステップ系コマンドの処理を切り換える処理の流れの例を示すフローチャートである。 図5のステップS13における、内部生成コードの表示が選択された場合の画面の表示例を示す図である。 図5のステップS13における、内部生成コードの非表示が選択された場合の画面の表示例を示す図である。 内部生成コードが表示されている状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。 内部生成コードが表示されていない状態においてstepiコマンドを実行した場合の画面の表示例を示す図である。 ループ展開を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。 レジスタの退避を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。 分岐テーブルの参照を行う場合に生成される内部生成コードを表示する画面の表示例を示す図である。
符号の説明
1 デバッグ装置、2 コンパイル装置、11 内部生成コード情報解析部、12 デコード部、13 コマンド実行部、14 表示処理部、100 プログラム生成装置、101 本体装置、102 記憶装置、103 表示装置、104 キーボード、105 マウス、106 コンパイラ、107 デバッガ

Claims (5)

  1. プログラムのデバッグを行うデバッグ装置であって、
    前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析する解析部と、
    解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力する出力部と、
    を有することを特徴とするデバッグ装置。
  2. プログラムのデバッグを行うデバッグ装置であって、
    前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択する表示選択部と、
    前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第1の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第2の所定のメッセージのみを表示する表示処理部と、
    を有することを特徴とするデバッグ装置。
  3. 前記表示処理部は、ステップ実行の際に、前記デバッグ不要なコードの非表示が選択されている場合、前記デバッグ不要なコードの終了まで実行することを特徴とする請求項2に記載のデバッグ装置。
  4. プログラムのデバッグを行うデバッグ方法であって、
    前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの情報を解析し、
    解析して得られた前記デバッグ不要なコードの、処理内容の情報、開始アドレス、終了アドレスを出力することを特徴とするデバッグ方法。
  5. プログラムのデバッグを行うデバッグ方法であって、
    前記プログラムのソースコードに対して、コンパイラの最適化に伴い生成された、所定の処理命令が記述されているデバッグ不要なコードの表示又は非表示を選択し、
    前記デバッグ不要なコードの表示が選択された場合、前記デバッグ不要なコードの直前及び直後に前記デバッグ不要なコードの開始及び終了を示す第1の所定のメッセージを表示し、前記デバッグ不要なコードの非表示が選択された場合、前記デバッグ不要なコードを隠蔽し、前記デバッグ不要なコードが隠蔽されていることを示す第2の所定のメッセージのみを表示することを特徴とするデバッグ方法。
JP2007309260A 2007-11-29 2007-11-29 デバッグ装置及びデバッグ方法 Expired - Fee Related JP4909877B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007309260A JP4909877B2 (ja) 2007-11-29 2007-11-29 デバッグ装置及びデバッグ方法
US12/273,934 US8370810B2 (en) 2007-11-29 2008-11-19 Debugging device and debugging method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007309260A JP4909877B2 (ja) 2007-11-29 2007-11-29 デバッグ装置及びデバッグ方法

Publications (2)

Publication Number Publication Date
JP2009134462A JP2009134462A (ja) 2009-06-18
JP4909877B2 true JP4909877B2 (ja) 2012-04-04

Family

ID=40677089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007309260A Expired - Fee Related JP4909877B2 (ja) 2007-11-29 2007-11-29 デバッグ装置及びデバッグ方法

Country Status (2)

Country Link
US (1) US8370810B2 (ja)
JP (1) JP4909877B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5303531B2 (ja) * 2010-09-28 2013-10-02 株式会社日立製作所 組込システムの保守支援装置
KR101962248B1 (ko) * 2012-03-16 2019-03-27 삼성전자주식회사 재구성 가능 프로세서의 검증 지원 장치 및 방법
US9111033B2 (en) 2012-04-17 2015-08-18 International Business Machines Corporation Compiling source code for debugging with user preferred snapshot locations
US8881115B2 (en) 2012-04-17 2014-11-04 International Business Machines Corporation Compiling source code for debugging with expanded snapshots
US8910126B2 (en) 2012-04-18 2014-12-09 International Business Machines Corporation Compiling source code for debugging with variable value restoration based on debugging user activity
KR20140005526A (ko) * 2012-07-04 2014-01-15 삼성전자주식회사 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법
US8826240B1 (en) * 2012-09-29 2014-09-02 Appurify, Inc. Application validation through object level hierarchy analysis
US9015832B1 (en) 2012-10-19 2015-04-21 Google Inc. Application auditing through object level code inspection
US9113358B1 (en) 2012-11-19 2015-08-18 Google Inc. Configurable network virtualization
US9268668B1 (en) 2012-12-20 2016-02-23 Google Inc. System for testing markup language applications
US9274935B1 (en) 2013-01-15 2016-03-01 Google Inc. Application testing system with application programming interface
US9021443B1 (en) 2013-04-12 2015-04-28 Google Inc. Test automation API for host devices
US9268670B1 (en) 2013-08-08 2016-02-23 Google Inc. System for module selection in software application testing including generating a test executable based on an availability of root access
US9367415B1 (en) 2014-01-20 2016-06-14 Google Inc. System for testing markup language applications on a device
US9491229B1 (en) 2014-01-24 2016-11-08 Google Inc. Application experience sharing system
US9170922B1 (en) 2014-01-27 2015-10-27 Google Inc. Remote application debugging
US10111099B2 (en) 2014-05-12 2018-10-23 Microsoft Technology Licensing, Llc Distributing content in managed wireless distribution networks
US9874914B2 (en) 2014-05-19 2018-01-23 Microsoft Technology Licensing, Llc Power management contracts for accessory devices
US9703681B2 (en) * 2014-05-29 2017-07-11 Microsoft Technology Licensing, Llc Performance optimization tip presentation during debugging
US9717006B2 (en) 2014-06-23 2017-07-25 Microsoft Technology Licensing, Llc Device quarantine in a wireless network
US9864655B2 (en) 2015-10-30 2018-01-09 Google Llc Methods and apparatus for mobile computing device security in testing facilities
US10095603B2 (en) 2017-01-09 2018-10-09 International Business Machines Corporation Pre-fetching disassembly code for remote software debugging

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03107151A (ja) 1989-09-21 1991-05-07 Fuji Photo Film Co Ltd 画像形成装置
JPH04106633A (ja) * 1990-08-27 1992-04-08 Nec Corp 逆アセンブル方式
JPH0863369A (ja) * 1994-08-24 1996-03-08 Toshiba Corp 最適化情報出力方式
JP3606654B2 (ja) * 1995-10-30 2005-01-05 富士通株式会社 コンパイラ装置
JP3107151B2 (ja) 1997-04-14 2000-11-06 日本電気株式会社 最適化コードデバッグ方式
JP2001060161A (ja) * 1999-08-24 2001-03-06 Nec Ic Microcomput Syst Ltd デバッグ装置、方法及び記録媒体
JP2001134462A (ja) * 1999-11-08 2001-05-18 Matsushita Electric Ind Co Ltd プログラムデバッグ装置
JP2002288004A (ja) * 2001-03-27 2002-10-04 Canon Inc プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
JP3612294B2 (ja) * 2001-08-06 2005-01-19 松下電器産業株式会社 デバッグ方法およびデバッグ装置
US7506313B2 (en) * 2002-03-04 2009-03-17 International Business Machines Corporation Debug of code with selective display of data
US6961924B2 (en) * 2002-05-21 2005-11-01 International Business Machines Corporation Displaying variable usage while debugging
US6964036B2 (en) * 2002-05-21 2005-11-08 International Business Machines Corporation Descriptive variables while debugging
US20040003383A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Stripping of unnecessary information from source code
US20040030963A1 (en) * 2002-08-12 2004-02-12 Sun Microsystems, Inc., A Delaware Corporation Method and apparatus for debugging computer program
US7231633B2 (en) * 2003-07-15 2007-06-12 Lsi Corporation Debugging with set verbosity level during read and analysis of executable code and associated comments while logging according to set verbosity level
US7328426B2 (en) * 2003-08-13 2008-02-05 International Business Machines Corporation Editor with commands for automatically disabling and enabling program code portions
JP4106633B2 (ja) 2004-02-18 2008-06-25 日本電気株式会社 情報処理システム及び情報処理方法
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
US7644397B2 (en) * 2004-06-19 2010-01-05 Apple Inc. Software performance analysis using data mining
WO2006084357A1 (en) * 2005-02-10 2006-08-17 Tira Wireless Inc. Outputting debug messages for applications intended for mobile devices
US20070078538A1 (en) * 2005-09-30 2007-04-05 Omron Corporation Debug device
JP2008269529A (ja) * 2007-04-25 2008-11-06 Toshiba Corp デバッグ支援装置

Also Published As

Publication number Publication date
US8370810B2 (en) 2013-02-05
JP2009134462A (ja) 2009-06-18
US20090144705A1 (en) 2009-06-04

Similar Documents

Publication Publication Date Title
JP4909877B2 (ja) デバッグ装置及びデバッグ方法
US7266809B2 (en) Software debugger and software development support system for microcomputer operable to execute conditional execution instruction
CN102279789B (zh) 生产阶段嵌入式系统的调试系统及其调试方法
CN104756086B (zh) 用于调试依领域而定的语言的系统和方法
EP3338179B1 (en) Graphical representation of data in a program code editor
JP4822817B2 (ja) コンパイルシステム
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
CN101414278B (zh) 基于动态反编译技术的二进制应用程序调试方法
US9489286B2 (en) Method and system for computer assisted hot-tracing mechanism
CN104063258A (zh) 用于调试过程中的代码动态切换的方法和系统
US20080209401A1 (en) Techniques for integrating debugging with decompilation
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
CN110554861B (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
US20090013313A1 (en) Debug device, debug method, and program
JP2008269529A (ja) デバッグ支援装置
JP2004133630A (ja) プログラム作成方法、プログラム変換装置、プログラム及び記憶媒体
JP4594704B2 (ja) プログラム開発支援システム、プログラムおよび記録媒体
JP2011090511A (ja) 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法
JP7163879B2 (ja) データフロー生成装置、その方法、およびそのプログラム
JP2007034825A (ja) デバッグ装置
JP2004078268A (ja) 情報処理装置、情報処理方法、およびプログラム
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JP2010039785A (ja) コンパイラ及びコンパイル方法
JP2010049474A (ja) プログラム開発支援システムおよびプログラム開発支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120116

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees