JP2013092950A - プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui - Google Patents

プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui Download PDF

Info

Publication number
JP2013092950A
JP2013092950A JP2011235534A JP2011235534A JP2013092950A JP 2013092950 A JP2013092950 A JP 2013092950A JP 2011235534 A JP2011235534 A JP 2011235534A JP 2011235534 A JP2011235534 A JP 2011235534A JP 2013092950 A JP2013092950 A JP 2013092950A
Authority
JP
Japan
Prior art keywords
reliability
code
code range
debugging
range
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.)
Granted
Application number
JP2011235534A
Other languages
English (en)
Other versions
JP5785474B2 (ja
Inventor
Atsushi Yokoi
淳 横井
Kenya Ishimoto
健也 石本
Masaru Kumagai
賢 熊谷
Susumu Fukuda
進 福田
Takehiko Amano
武彦 天野
Mayumi Goto
真由美 後藤
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2011235534A priority Critical patent/JP5785474B2/ja
Priority to US13/593,523 priority patent/US9740592B2/en
Publication of JP2013092950A publication Critical patent/JP2013092950A/ja
Application granted granted Critical
Publication of JP5785474B2 publication Critical patent/JP5785474B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】信頼できないコード範囲についてのみデバッグを実行することにより、デバッグの信頼性を高めつつ、プログラム全体のデバッグ時間を短縮する。
【解決手段】(a)プログラムの分類項目の指標毎の信頼度を含む信頼度情報を記憶部に格納するステップS11と、(b)演算処理部が、記憶部からデバッグ対象のプログラムについての信頼度情報を読み出して、当該信頼度情報中の指標毎の信頼度を用いて、信頼できるコード範囲と信頼できないコード範囲とを決定するステップS12と、(c)演算処理部が、信頼できないコード範囲についてのみデバッグ対象のプログラムのデバッグを実行するステップS13と、を含む。
【選択図】図4

Description

本発明は、プログラムのデバッグに関し、より具体的には、プログラム(コード)のデバッグ範囲を限定して、デバッグ効率を向上させる技術に関する。
ソフトウェア開発において、対象となるプログラムのサイズが年々増加している。対象となるプログラムには、新規開発コードのほかに、過去に自社開発されたコードやサードパーティによるライブラリ等のテスト済みのコードが含まれる。
ソフトウェア開発・保守では、プログラムのテストおよびデバッグが必要となる。そのデバッグ時に、全てのコードをデバッグしてしまうと、プログラムのサイズが大きくなるにつれて、デバッグしなければならないコードの範囲にテスト済みのコードまでもが含まれてしまい、デバッグの効率が悪くなってしまうという問題がある。
公開特許公報の特開平06-103113号は、既に信頼性が保証されているプログラムの全部または一部分をテストデバッグの対象から外して効率的にデバッグすることができる差分テストデバッグ支援方法を開示する。その方法は、既存の完成または半完成のプログラムに対し、カバレジ情報蓄積ファイルを設け、このカバレジ情報蓄積ファイルに全命令文別にテスト実行済みの情報を設定した後、当該プログラムの変更に対しては、変更部分のカバレジ情報についてのみテスト未実行状態に設定し、変更部分の命令文のみをデバッグテスト対象として実行させる。
公開特許公報の特開2002-108652号は、デバッグ作業の負担低減・効率化を図るためのプログラムの相関関係検出装置を開示する。その装置は、適用対象別の各プログラムを生成するために必要な構成部分同士を比較することにより、それらのプログラムをグループ分けし、そのグループ分けの結果をプログラム同士の相関関係として外部に出力する。プログラムの内容が一致している場合、その同様の内容について何度もデバッグ作業を行うことを避けることにより、デバッグ作業負担の軽減および作業効率の向上を図る。
公開特許公報の特開平11-272502号は、テスト対象プログラムの信頼性を推定するソフトウェア信頼性評価装置を開示する。その評価方法は、テスト対象プログラムのテスト処理を実行すると共に該テスト対象プログラムの信頼性推定に必要な各種情報を取得する取得ステップと、信頼度推定モデルに基づき推定された推定信頼度に基づきテスト継続の有無を判断する判断ステップとを有する。その各種情報は、不具合発見情報、テスト時間、ソフトウェア故障発生回数、テスト者数、テスト網羅度、利用者の指示する適用方法、適用範囲、適用する信頼度推定モデルの種類を含む。
特開平06−103113号公報 特開平2002−108652号公報 特開平11−272502号公報
特許文献1の方法では、プログラムの変更部分の命令文のみをデバッグテスト対象とする。したがって、この方法では、プログラムの変更以外の本来デバッグが必要となるコード範囲がデバッグから漏れてしまい、プログラム全体でのデバッグが不十分になり、その信頼性が低下する恐れが大きい。
特許文献2の装置では、プログラムの内容が一致している場合、その同様の内容についての重複したデバッグ作業を行うことを避ける。したがって、この装置では、プログラムの内容が一致していない場合には、何らデバッグ作業負担の軽減および作業効率の向上を図ることができない。
特許文献3の装置では、信頼度推定モデルに基づき推定された推定信頼度に基づきテスト継続の有無を判断する。しかし、この装置では、プログラムのデバッグ範囲を限定していないので、デバッグ効率の向上が不十分になる可能性が大きい。
したがって、本発明の目的は、これらの従来技術の問題を解決あるいは軽減しつつ、プログラム(コード)のデバッグ範囲を限定して、デバッグ効率を向上させることである。
本発明は、記憶部と演算処理部を有するコンピュータによるプログラムのデバッグ方法を提供する。その方法は、(a)プログラムの分類項目の指標毎の信頼度を含む信頼度情報を記憶部に格納するステップと、(b)演算処理部が、記憶部からデバッグ対象のプログラムについての信頼度情報を読み出して、当該信頼度情報中の指標毎の信頼度を用いて、信頼できるコード範囲と信頼できないコード範囲とを決定するステップと、(c)演算処理部が、信頼できないコード範囲についてのみデバッグ対象のプログラムのデバッグを実行するステップと、を含む。
本発明によれば、プログラムの分類項目の指標毎の信頼度を用いて決定された信頼できないコード範囲についてのみデバッグ対象のプログラムのデバッグを実行するので、プログラム全体のデバッグ時間を短縮することができる。
本発明の一態様では、(d)演算処理部が、デバッグの実行中において、ユーザからの指示に応じて、実行パス上のコードについて、指標毎の信頼度の基づき既に決定された信頼できるコード範囲と信頼できないコード範囲とを更新するステップをさらに含む。
本発明の一態様によれば、デバッグの進行状況に応じて、問題の無い、問題のある、あるいは問題がありそうなコード範囲を新たに信頼できるコード範囲あるいは信頼できないコード範囲として見直すことが可能となり、デバッグ時間を短縮するとともにそのデバッグの信頼性を向上させることが可能となる。
本発明の一態様では、信頼できるコード範囲と信頼できないコード範囲とを決定するステップおよび更新するステップの少なくとも一方は、プログラムの分類項目の指標毎の信頼度からコード範囲毎の信頼度を算出するステップと、コード範囲毎の信頼度が所定範囲内である場合に、当該コード範囲を信頼できないコード範囲と決定するステップと、を含む。
本発明の一態様によれば、デバッグ対象のプログラムの状況に即してコード範囲毎の信頼度を算出し、さらにその算出されたコード範囲毎の信頼度が所定範囲内である場合に、当該コード範囲を信頼できないコード範囲と決定するので、信頼できないコード範囲の精度を高めることが可能となり、その結果、デバッグ時間の短縮化およびデバッグの信頼性をさらに向上させることが可能となる。
本発明によれば、プログラムのデバッグ装置が提供される。そのデバッグ装置は、プログラムの分類項目の指標毎の信頼度を含む第1の信頼度情報を保管する第1の保管部と、第1の保管部の指標毎の信頼度からコード範囲毎の信頼度を算出する信頼度算出部と、コード範囲毎の信頼度を含む第2の信頼度情報を保管する第2の保管部と、デバッグ対象のプログラムについて、第2の保管部のコード範囲毎の信頼度に基づき、信頼できるコード範囲と信頼できないコード範囲とを決定する決定部と、信頼できないコード範囲についてデバッグ対象のプログラムのデバッグを実行するデバッガと、を備える。
本発明によれば、プログラムの分類項目の指標毎の信頼度から算出されたコード範囲毎の信頼度目の指標毎の信頼度に基づき決定された信頼できないコード範囲についてのみデバッグ対象のプログラムのデバッグを実行するので、デバッグの信頼性を高めつつ、プログラム全体のデバッグ時間を短縮することができる。
本発明によれば、記憶部と演算処理部を有するコンピュータによるプログラムのデバッグを支援するためのグラフィカル・ユーザ・インターフェース(GUI)が提供される。そのGUIは、記憶部に格納された、プログラムの分類項目の指標毎の信頼度を含む信頼度情報を用いて、演算処理部が、デバッグ対象のプログラムについて、信頼できるコード範囲と信頼できないコード範囲とを決定し、前記信頼できないコード範囲についてのみデバッグを実行するように支援するために、(a)表示画面と、(b)表示画面上の、デバッグ対象のプログラムの実行パス上の複数のコード名が表示された第1のウィンドウと、(c)表示画面上の、第1のウィンドウ内の複数のコード名の中から選択したコード名に対応するコード範囲を表示可能な第2のウィンドウと、(d)表示画面上の、第1のウィンドウ内の複数のコード名の各々について、または第2のウィンドウ内に表示されたコード範囲について、対応するコード名またはコード範囲の信頼度に応じて、コード名またはコード範囲を表示する色を選択的に可変するためのスライダー表示部と、を備える。
本発明によれば、デバッグ対象のプログラムについて、信頼できる、あるいは信頼できないコードおよびコード範囲を視覚上明確に把握することができるので、デバッグ作業の効率化や確実性を向上させることが可能となる。
本発明のデバッグ方法を実施するシステムの構成例を示す図である。 本発明のデバッグ装置の構成例を示すブロック図である。 本発明の処理装置の機能ブロック図である。 本発明のデバッグ方法のフローの一例を示す図である。 本発明のデバッグ方法のフローの一例を示す図である。 本発明のGUIの一例を示す図である。
図面を参照しながら本発明の実施の形態を説明する。図1は、本発明のデバッグ方法を実施するシステムの構成例を示す図である。システム100は、ネットワーク40で相互に通信可能に接続されたホスト(サーバー)10、PC(端末)20、ネットワーク・ドライブ30からなる。ネットワーク・ドライブ30は、HDDやテープドライブ等の記憶手段を含む。図1では、ホスト(サーバー)10とネットワーク・ドライブ30は、それぞれ1つしか描かれていないが、これはあくまで例示であって、2以上のホスト(サーバー)10とネットワーク・ドライブ30を含むことができることは言うまでもない。
本発明のデバッグ方法は、図1の構成において、PC20が、サーバー10やネットワーク・ドライブ30からからダウンロードしたデバッグ用ソフトウェア、あるいは自己の内蔵する記憶手段(HDD等)内に保管されたデバッグ用ソフトウェアを実行することにより実施される。デバッグ対象となるプログラム(コード)も、同様に、PC20がサーバー10やネットワーク・ドライブ30からからダウンロードあるいは自己の内蔵する記憶手段から呼び出される。なお、ネットワークに接続されないスタンドアローンのPCによって、本発明のデバッグ方法が実施可能であることは言うまでもない。
図2は、本発明のデバッグ装置の構成例を示すブロック図である。図1の構成で言えば、デバッグ装置としてはPC20が該当する。デバッグ装置20は、バス230を介して相互に接続された演算処理装置(CPU)200、記憶手段210、各種I/F220を含む。各種I/F220は、入力I/F、出力I/F、外部記憶I/F、外部通信I/F等を含む総称として用いられ、各I/Fが、それぞれ対応するキーボード、マウス等の入力手段240、CRT、LCD等の表示手段250、USB接続の半導体メモリやHDD等の外部記憶手段260等に接続する。
記憶手段210は、RAM、ROM等の半導体メモリ、HDD等を含み、第1の保管部212と第2の保管部214を有する。両保管部は、単一の記憶手段あるいは複数の記憶手段に分けて設けることができる。第1の保管部212は、プログラムの分類項目の指標毎の信頼度を含む第1の信頼度情報を保管する。第2の保管部214は、第1の保管部212の指標毎の信頼度から算出されたコード範囲毎の信頼度を含む第2の信頼度情報を保管する。
図3は、図2の演算処理装置200の機能ブロック図である。演算処理装置200は、本発明のデバッグ方法に係るデバッグ用ソフトウェアを実行することにより、デバッグ対象のプログラムに対して、図3の各機能を実施する。信頼度算出部201は、第1の保管部212に保管されるプログラムの分類項目の指標毎の信頼度からコード範囲毎の信頼度を算出する。信頼/非信頼のコード範囲決定部202は、デバッグ対象のプログラムについて、第2の保管部214のコード範囲毎の信頼度に基づき、信頼できるコード範囲と信頼できないコード範囲とを決定する。デバッガ203は、信頼できないコード範囲についてデバッグ対象のプログラムのデバッグを実行する。
ここで、本発明の説明において使用する各用語および図3の各ブロックについて説明する。最初に、第1の保管部212に保管される、プログラムの分類項目の指標毎の信頼度について説明する。プログラムの分類項目とは、初期情報として設定されるもので、プログラムの名前、変更部分、ユーザが追加したタグ付けなどのメタデータ等のプログラムを分類するための項目(分類項目)を意味する。また、分類項目としてプログラマ(コード作成者)等の人的要素を加えることもできる。要は、デバッグの効率に影響を与える要因を分類項目として加えることができる。
分類項目の指標には、例えば、名前による分類では、名前空間(例えばJava(登録商標)ではパッケージ名)やディレクトリ名、ファイル名等が含まれる。変更部分による分類の指標としては、変更セット内のファイルか否か、自分のワークスペースで編集中のソースか否か、特定の日付か否か、ベースラインやマイルストーン以降に変更された部分か否か等が含まれる。人的要素による分類では、プログラマやソフトウェアハウスの実績、経験年数等を指標として用いてもよい。
分類項目の指標毎の信頼度は、分類された各プログラム(コード)の信頼度、言い換えればデバッグの必要度(重要度)を数値、例えば割合(%)で表したものを意味する。信頼度を割合(%)で表した場合は、割合(%)が大きくなるにつれて信頼度が高くなることを意味する。例として、名前空間では、A社のパッケージは信頼度96%、B社のパッケージは信頼度80%、開発中のパッケージは信頼度50%といったように、信頼度を設定する。変更セット内のファイルの場合は、開発中のパッケージの場合と同様に信頼度50%といったように設定する。
次に、信頼度算出部201において算出され、第2の保管部214に保管される、コード範囲毎の信頼度について説明する。コード範囲毎の信頼度は、コード範囲が信頼できるコード範囲か信頼できないコード範囲かを決める基準になる。ここで、コード範囲は、信頼度を設定する、言い換えれば実際にデバッグするか否かの単位として定められるもので、一行のコードから1つのファイル、パッケージ等の単位まで、その大きさ(範囲)は任意に定めることができる。
コード範囲毎の信頼度は、分類項目の指標毎の信頼度を基に定められる。例えば、開発中のパッケージであり、かつ変更セット内にあるコード(ファイル)の信頼度は、開発中のパッケージの信頼度50%に変更セット内のファイルの信頼度50%を乗算して、25%(=0.5*0.5)として算出される。この場合は、2つの指標毎の信頼度を乗算しているが、さらに重み付けの係数を掛けたり加えたりしてもよい。乗算以外の所定の関数を用いて信頼度を算出してもよい。また、分類項目の指標毎の信頼度をそのまま対応するコード範囲の信頼度とすることもできる。開発中のパッケージ全体の中で、既に開発およびデバッグ済のコード範囲(例えば信頼度80%)と、残りのコード範囲(例えば信頼度50%)というように、それぞれで信頼度を算出することもできる。
上述したコード範囲毎の信頼度は、主にデバッグ前(時)に予め算出して第2の保管部214に保管しておくものであるが、デバッグ中に算出してその値を更新することもできる。例えば、デバッグ中に、途中までの実行で問題があることがわかった場合、その時点までの実行パス上のコード範囲の信頼度を下げるように算出し直し、その更新された信頼度を保管し、さらに、その実行パス上の先のコード範囲についても信頼度を見直すこともできる。デバッグ中のステップイン、ステップアウト動作では、ステップイン、ステップアウト時の特定の実行パスの信頼度をデバッグ作業中に更新することもできる。これにより、実際のデバッグ状況をより適切に反映した信頼度を算出(更新)および蓄積することができる。
信頼/非信頼のコード範囲決定部202での信頼できるコード範囲と信頼できないコード範囲の決定について説明する。信頼できるコード範囲と信頼できないコード範囲は、算出されたコード範囲毎の信頼度が所定範囲内であるか否かで決定される。例えば、信頼度が75%以上は信頼できるコード範囲とし、それ以下、あるいは50%以下は、信頼できないコード範囲とすることができる。なお、所定範囲は、パッケージ単位、あるいは所定のコードの集合単位で個別に設定することもできる。また、何らかの理由で信頼度の設定(算出)がされていないコード範囲については、原則として信頼できないコード範囲として決定する。
デバッガ203によるデバッグ動作について説明する。デバッガは、デバッグ対象のプロセスを開始後、デバッグ対象のプロセスに対して、ブレークポイントの位置の通知、ステップ実行、プロセスの再開の指示を信頼できないコードの範囲に対してのみ行う。具体的には、例えば、以下のように行われる。
(a)デバッガは、ブレークポイントの位置を、信頼できないコードの範囲に分類されているデバッグ対象のプロセスに指示する。
(b)デバッグ対象のプロセスは、指示されたブレークポイントまでプロセスを実行し、ブレークポイントで停止したことをデバッガに通知する。
(c)デバッガは、ステップ実行について、信頼度情報に基づいて次の実行位置までを指示する、またはプロセスの再開については従来どおり信頼度情報に基づかずに指示を行う。
(d)デバッグ対象のプロセスは、指示に従ってステップ実行またはプロセスを再開する。
デバッガによるステップ実行は、ステップインとステップアウトの場合では例えば以下のように行われる。
<ステップインの場合>
(a)デバッガは、デバッグ対象のプロセスにステップインを指示する。
(b)デバッグ対象のプロセスは、ステップインを実行し、停止位置をデバッガに通知する。
(c)デバッガは、停止位置を信頼できるコード範囲、信頼できないコードの情報に基づいて判別する。すなわち、信頼できないコード範囲であればその位置で停止させる。信頼できるコード範囲であれば、デバッグ対象のプロセスにステップアウトを指示し、信頼できないコード範囲に到達した位置で停止させる。
<ステップアウトの場合>
(a)デバッガは、デバッグ対象のプロセスにステップアウトを指示する。
(b)デバッグ対象のプロセスは、ステップアウトを実行し、停止位置をデバッガに通知する。
(c)デバッガは、停止位置を信頼できるコード範囲、信頼できないコード範囲の情報に基づいて判別する。すなわち、信頼できないコード範囲であればその位置で停止させる。信頼できるコード範囲であれば、デバッグ対象のプロセスに再開を指示し、信頼できないコード範囲に到達した位置で停止させる。
次に、図4と図5を参照しながら本発明のデバッグ方法のフローについて説明する。図4は全体のフローを示し、図5は図4のステップS12の詳細フロー(サブルーチン)である。両図のフローは、処理装置200が実行するデバッグ用ソフトウェアにより実施される。
ステップS11において、信頼度情報を記憶手段に保管する。ここで言う信頼度情報は、既に上述したプログラムの分類項目の指標毎の信頼度を含む信頼度情報である。記憶手段は、図2の記憶手段210(例えば第1の保管部212)が該当する。ステップS12において、信頼できるコード範囲と信頼できないコード範囲を決定する。この決定ステップは、後のステップS15において、デバッグ中の更新プロセスとしても同様に実行される。
ここで、図5を参照する。ステップS121において、記憶手段から呼び出した分類項目の指標毎の信頼度を基にコード範囲毎の信頼度を算出する。算出方法は、上述した通りである。ステップS122において、コード範囲毎の信頼度が所定範囲内か否かを判定する。所定範囲については、上述した通りである。この判定がYesの場合、そのコード範囲が信頼できない範囲であると決定される。判定がNoの場合は、信頼できる範囲と決定される。なお、更新プロセスにおいては、コード範囲の決定が更新(維持、変更)される。ステップS125において、決定/更新された信頼度情報が記憶手段(第2保管部214)に保管される。
図4に戻って、ステップS13において、デバッガによるデバッグ動作が行われる。デバッグ動作については、上述した通りである。ステップS14において、デバッグ中にユーザからの変更指示があるか否かを判定する。この変更指示とは、デバッグ中に、信頼度/コード範囲の設定を変更する指示を意味し、例えば、上述したように、途中までの実行で問題があることがわかった場合に、その時点までの実行パス上のコード範囲の信頼度を下げる場合や、その変更した信頼度に応じてコード範囲の設定(信頼、非信頼)を変更する場合が該当する。
ステップS14の判定がYesの場合、ステップS15において、ステップS12(図5)と同様なプロセスにより、信頼できるコード範囲と信頼できないコード範囲が更新される。ステップS14の判定がNoの場合あるいはステップS15の更新後に、ステップS16において、デバッグの実行パスが終わりか否かが判定される。この判定がYesの場合、一連のデバッグが終了し、判定がNoの場合は、ステップS13に戻ってデバッグ動作が繰り返される。
次に、図6を参照しながら上述した本発明のプログラムのデバッグを支援するためのグラフィカル・ユーザ・インターフェース(GUI)の一例について説明する。このGUIは、上述した本発明のデバッグ装置またはデバッグ方法を実施する上で用いられる。すなわち、このGUIは、例えば、記憶部に格納された、プログラムの分類項目の指標毎の信頼度を含む信頼度情報を用いて、演算処理部が、デバッグ対象のプログラムについて、信頼できるコード範囲と信頼できないコード範囲とを決定し、前記信頼できないコード範囲についてのみデバッグを実行するように支援するために用いられる。このGUIを用いることにより、ユーザによるデバッグ作業が効率化され、デバッグの全体の効率化がさらに促進される。
図6のGUIは、図2のPC20の表示手段250の表示画面上に表示される。なお、図示の制約上、図6では白黒表示しかできないが、実際には、各ブロック表示部(313、321〜323)等は、カラー表示およびその色の濃淡が表示できるようになっている。また、表示されるアイコンは、絵文字など各種OS等の下で使用可能な任意の形態を選択することができる。各アイコンは、マウスのポインタ302やキーボードの操作により選択される。
GUIは、表示画面300と、表示画面300上の、第1のウィンドウ310と、第2のウィンドウ320と、スライダー表示部33とを含む。第1のウィンドウ310には、デバッグ対象のプログラムの実行パス上の複数のコード名313が表示される。コード名に代わってパス名を直接表示しもよい。第1のウィンドウ310内の4つのアイコン311は、選択したコード名(パス名)に対して、その信頼度を上下させるためのもので、UPは信頼度を上げる場合、DNは信頼度を下げる場合に使われる。
より具体的には、例えばJava(登録商標)のメソッド単位で信頼度を設定する場合は、アイコン311を現在停止しているメソッドの信頼度を上げてステップインさせるためのアイコン、次に実行するメソッドの信頼度を下げてステップインさせるためのアイコン、それまでの実行パスの信頼度を下げて終了させるためのアイコンといったように設定することができる。スクロールボタン312、314は、それぞれ信頼度上下アイコン311、コード名(パス名)313のスクロールのために使われる。
第2のウィンドウ320には、第1のウィンドウ内の複数のコード名(パス名)の中から選択したコード名に対応するコード範囲が表示される。図6では、3つのコード範囲321〜323が示されている。各コード範囲には、複数のコードが列記されている。アイコン324は、表示されるコード範囲に対応するコード名(パス名)を示す。アイコン324には、第1のウィンドウ310のコード名313と同様な名称や略称が表示される。
スクロールボタン325、327は、それぞれコード範囲、コード名(パス名)のスクロールのために使われる。スクロールボタン326は、現在のデバッグ位置を示すもので、ボタン右横の列のコードが現在デバッグ中のコードを示す。初期化アイコン328は、信頼度の設定を初期値に戻すためのもので、選択したコード範囲単位、あるいはコード名(パス名)単位で初期値に戻すことができる。詳細設定アイコン329は、後述するスライダー表示部330による信頼度の設定をさらに詳細に設定、例えば信頼度の数値を直接入力する場合などのために使われる。詳細設定アイコン329がクリックされると、詳細設定メニューが別ウィンドウ(図示なし)として表示される。
スライダー表示部330は、第1のウィンドウ310内の複数のコード名(パス名)313の各々について、または第2のウィンドウ320内に表示されたコード範囲321〜323について、対応するコード名(パス名)またはコード範囲の信頼度に応じて、コード名(パス名)またはコード範囲を表示する色を選択的に可変するために使われる。具体的には、ボタン331を図の左右にずらすことで、選択したコード名(パス名)313またはコード範囲321〜323の色およびその濃淡を変えることができる。
例えば、ボタン331が右に進むとともに、選択したコード名またはコード範囲の信頼度が上がり同時に色が濃くなり、逆に、ボタン331が左に進むとともに、選択したコード名またはコード範囲の信頼度が下がり同時に色が薄くなる。なお、ボタン331を図の左右にずらす過程で、コード名またはコード範囲が、信頼できない範囲と信頼できる範囲とで切り替わった場合は、その境で色が異なる色に変化して、信頼度が変わったことをユーザに知らせることもできる。例えば、当初信頼できるコード範囲であったコード範囲321は赤色であったが、ボタン331の右へのスライドにより、ある時点を境に信頼できないコード範囲であることを示す青色に切り替わる。その時点(境界)は、例えば上述した信頼度の所定範囲の境界(例えば75%)とすることができる。
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。さらに、本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
10 サーバー(ホスト)
20 PC
30 ネトワークドライブ
40 ネットワーク
100 ネットワークシステム
300 表示画面
310 第1のウィンドウ
320 第2のウィンドウ
330 スライダー表示部

Claims (9)

  1. 記憶部と演算処理部を有するコンピュータによるプログラムのデバッグ方法であって、
    プログラムの分類項目の指標毎の信頼度を含む信頼度情報を前記記憶部に格納するステップと、
    前記演算処理部が、前記記憶部からデバッグ対象のプログラムについての前記信頼度情報を読み出して、当該信頼度情報中の前記指標毎の信頼度を用いて、信頼できるコード範囲と信頼できないコード範囲とを決定するステップと、
    前記演算処理部が、前記信頼できないコード範囲についてのみ前記デバッグ対象のプログラムのデバッグを実行するステップと、を含む方法。
  2. 前記演算処理部が、前記デバッグの実行中において、ユーザからの指示に応じて、実行パス上のコードについて、前記指標毎の信頼度の基づき既に決定された前記信頼できるコード範囲と前記信頼できないコード範囲とを更新するステップをさらに含む、請求項1の方法。
  3. 前記決定するステップおよび前記更新するステップの少なくとも一方は、
    前記指標毎の信頼度からコード範囲毎の信頼度を算出するステップと、
    コード範囲毎の信頼度が所定範囲内である場合に、当該コード範囲を信頼できないコード範囲と決定するステップと、
    を含む、請求項2の方法。
  4. プログラムのデバッグ装置であって、
    プログラムの分類項目の指標毎の信頼度を含む第1の信頼度情報を保管する第1の保管部と、
    前記第1の保管部の前記指標毎の信頼度からコード範囲毎の信頼度を算出する信頼度算出部と、
    前記コード範囲毎の信頼度を含む第2の信頼度情報を保管する第2の保管部と、
    デバッグ対象のプログラムについて、前記第2の保管部の前記コード範囲毎の信頼度に基づき、信頼できるコード範囲と信頼できないコード範囲とを決定する決定部と、
    前記信頼できないコード範囲について前記デバッグ対象のプログラムのデバッグを実行するデバッガと、を備えるデバッグ装置。
  5. 前記デバッガは、デバッグ中の実行パスを前記信頼度算出部に通知し、
    前記信頼度算出部は、ユーザからの指示に応じて、前記実行パス上のコードについて、既に算出された前記コード範囲毎の信頼度を更新して前記第2の保管部に保管し、
    前記決定部は、前記第2の保管部の更新された前記コード範囲毎の信頼度に基づき、信頼できるコード範囲と信頼できないコード範囲とを更新する、請求項4のデバッグ装置。
  6. 前記決定部は、前記コード範囲毎の信頼度が所定範囲内である場合に、当該コード範囲を信頼できないコード範囲と決定する、請求項4または5のデバッグ装置。
  7. 記憶部と演算処理部を有するコンピュータによるプログラムのデバッグを支援するためのグラフィカル・ユーザ・インターフェース(GUI)であって、
    前記記憶部に格納された、プログラムの分類項目の指標毎の信頼度を含む信頼度情報を用いて、前記演算処理部が、デバッグ対象のプログラムについて、信頼できるコード範囲と信頼できないコード範囲とを決定し、前記信頼できないコード範囲についてのみデバッグを実行するように支援するために、
    表示画面と、
    前記表示画面上の、デバッグ対象のプログラムの実行パス上の複数のコード名が表示された第1のウィンドウと、
    前記表示画面上の、前記第1のウィンドウ内の前記複数のコード名の中から選択したコード名に対応するコード範囲を表示可能な第2のウィンドウと、
    前記表示画面上の、前記第1のウィンドウ内の前記複数のコード名の各々について、または前記第2のウィンドウ内に表示されたコード範囲について、対応するコード名またはコード範囲の信頼度に応じて、前記コード名または前記コード範囲を表示する色を選択的に可変するためのスライダー表示部と、を備えるGUI。
  8. 前記スライダー表示部における前記コード名および前記コード範囲を表示する色または当該色の濃淡の可変は、前記デバッグ対象のプログラムのデバッグ中に前記スライダー表示部のポインタ位置を変えることによりおこなうことができる、請求項7のGUI。
  9. 前記信頼度に応じて、前記コード名または前記コード範囲の表示色が変化する、あるは当該表示色の濃淡が変化する、請求項7または8のGUI。
JP2011235534A 2011-10-27 2011-10-27 プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui Expired - Fee Related JP5785474B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011235534A JP5785474B2 (ja) 2011-10-27 2011-10-27 プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui
US13/593,523 US9740592B2 (en) 2011-10-27 2012-08-24 Supporting debugging of program and graphical user interface for supporting debugging

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011235534A JP5785474B2 (ja) 2011-10-27 2011-10-27 プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui

Publications (2)

Publication Number Publication Date
JP2013092950A true JP2013092950A (ja) 2013-05-16
JP5785474B2 JP5785474B2 (ja) 2015-09-30

Family

ID=48173817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011235534A Expired - Fee Related JP5785474B2 (ja) 2011-10-27 2011-10-27 プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui

Country Status (2)

Country Link
US (1) US9740592B2 (ja)
JP (1) JP5785474B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9129063B2 (en) * 2013-05-14 2015-09-08 Oracle International Corporation Visualizing a computer program execution history
KR102505127B1 (ko) 2018-05-30 2023-03-02 삼성전자주식회사 소프트웨어 취약점을 검출하는 전자 장치 및 그 동작 방법
US11487538B1 (en) * 2021-01-20 2022-11-01 Two Six Labs, LLC Software repository recommendation engine

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212387A (ja) * 1996-01-31 1997-08-15 Matsushita Electric Works Ltd プログラム開発支援装置
JP2005316685A (ja) * 2004-04-28 2005-11-10 Mitsubishi Electric Corp プログラム管理装置

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103113A (ja) 1992-09-22 1994-04-15 Hitachi Ltd 差分テストデバック支援方法
JPH11272502A (ja) 1998-03-24 1999-10-08 Canon Inc ソフトウェア信頼性評価装置及びソフトウェア信頼性評価方法並びに記憶媒体
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems
US6895577B1 (en) * 1999-05-13 2005-05-17 Compuware Corporation Risk metric for testing software
US6651244B1 (en) * 1999-07-26 2003-11-18 Cisco Technology, Inc. System and method for determining program complexity
JP2001043110A (ja) 1999-08-03 2001-02-16 Kenji Kobayashi プログラムのデバッグ方法
JP2002108652A (ja) 2000-09-29 2002-04-12 Denso Corp プログラムの相関関係検出装置
US7013457B2 (en) * 2001-07-26 2006-03-14 Springsoft, Inc. Prioritized debugging of an error space in program code
US7257805B2 (en) * 2001-11-09 2007-08-14 International Business Machines Corporation Restoring debugging breakpoints subsequent to program code modifications
US7293256B2 (en) * 2002-06-18 2007-11-06 Microsoft Corporation Debugger causality system and methods
US7272823B2 (en) * 2002-08-22 2007-09-18 Sun Microsystems, Inc. Method and apparatus for software metrics immediate feedback mechanism
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
JP2004252684A (ja) 2003-02-20 2004-09-09 Hitachi Ltd プログラムデバッグ方法およびシステム
US7401323B2 (en) * 2003-04-21 2008-07-15 Microsoft Corporation Just-My-Code debugging
US7299456B2 (en) * 2003-09-18 2007-11-20 International Business Machines Corporation Run into function
JP2005141406A (ja) 2003-11-05 2005-06-02 Toyota Motor Corp コンパイラ検査システムおよび同プログラム
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US20050273757A1 (en) * 2004-06-07 2005-12-08 Anderson Craig D Methods, systems, and computer program products for summarizing operational behavior of a computer program
US7581209B2 (en) * 2005-02-28 2009-08-25 Microsoft Corporation Method for determining code coverage
US20060225051A1 (en) * 2005-04-05 2006-10-05 Cisco Technology, Inc. Method and system for code coverage
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
US20070061782A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Independent software integration
JP2007233754A (ja) 2006-03-01 2007-09-13 Nec Corp デバッグシステム、デバッグ方法およびプログラム
US7886272B1 (en) * 2006-03-16 2011-02-08 Avaya Inc. Prioritize code for testing to improve code coverage of complex software
EP2011004B1 (en) * 2006-04-04 2019-01-02 TIBCO Software Inc. Method and system for providing a visual debugger for an interpreted statistical language
CA2543304A1 (en) * 2006-04-11 2007-10-11 Ibm Canada Limited - Ibm Canada Limitee Code highlight and intelligent location descriptor for programming shells
US7890935B2 (en) * 2006-05-31 2011-02-15 International Business Machines Corporation Thread-specific presentation of breakpoints
US7725881B2 (en) * 2006-06-09 2010-05-25 Microsoft Corporation Automatically extracting coupling metrics from compiled code
US8276126B2 (en) * 2006-11-08 2012-09-25 Oracle America, Inc. Determining causes of software regressions based on regression and delta information
US8219980B2 (en) * 2007-01-10 2012-07-10 International Business Machines Corporation Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data
US7958400B2 (en) * 2007-04-16 2011-06-07 International Business Machines Corporation Detecting unexpected impact of software changes using coverage analysis
US8473907B1 (en) * 2007-07-31 2013-06-25 Coverity, Inc. Computer programming adaptive analysis
US8191074B2 (en) * 2007-11-15 2012-05-29 Ericsson Ab Method and apparatus for automatic debugging technique
US8627287B2 (en) * 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US8141055B2 (en) * 2007-12-31 2012-03-20 International Business Machines Corporation Method for dynamic discovery of code segments in instrumented binary modules
US8423960B2 (en) * 2008-03-31 2013-04-16 International Business Machines Corporation Evaluation of software based on review history
US20090254888A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Debug tours for software debugging
US8266592B2 (en) * 2008-04-21 2012-09-11 Microsoft Corporation Ranking and optimizing automated test scripts
US8607198B2 (en) * 2008-06-24 2013-12-10 International Business Machines Corporation Cross-concern code coverage assessment
JP2010020494A (ja) 2008-07-09 2010-01-28 Mitsubishi Electric Corp 保護制御装置
US8291384B2 (en) * 2009-01-15 2012-10-16 International Business Machines Corporation Weighted code coverage tool
US20110047531A1 (en) * 2009-08-19 2011-02-24 Wenguang Wang Methods and apparatuses for selective code coverage
US10152403B2 (en) * 2009-09-01 2018-12-11 Accenture Global Services Limited Assessment of software code quality based on coding violation indications
US8561021B2 (en) * 2010-02-08 2013-10-15 Microsoft Corporation Test code qualitative evaluation
US8429622B2 (en) * 2010-04-15 2013-04-23 Oracle International Corporation Business process debugger with parallel-step debug operation
US8443340B2 (en) * 2010-06-15 2013-05-14 Microsoft Corporation Execution capture and replay based debugging
US8601441B2 (en) * 2010-07-17 2013-12-03 Accenture Global Services Limited Method and system for evaluating the testing of a software system having a plurality of components
US8769497B2 (en) * 2010-07-20 2014-07-01 General Electric Company System and method for use in indicating execution of application code
US8434057B2 (en) * 2010-08-17 2013-04-30 Oracle International Corporation Optimized implementation of breakpoint in java debugger agent
EP2612206A1 (en) * 2010-08-31 2013-07-10 ABB Technology AG Method for debugging of process or manufacturing plant solutions comprising multiple sub-systems
US8850399B2 (en) * 2010-11-15 2014-09-30 Microsoft Corporation Software development using code retraction and background warm up
US8453106B2 (en) * 2010-12-17 2013-05-28 Microsoft Corporation Graphical user interface for exploring source code execution behavior
EP2477116A1 (en) * 2011-01-13 2012-07-18 Software AG Method and system for debugging a job running on a legacy system
US8893090B2 (en) * 2011-04-15 2014-11-18 Microsoft Corporation Stepping out of an asynchronous method into its continuation in a debugger
US20120272220A1 (en) * 2011-04-19 2012-10-25 Calcagno Cristiano System and method for display of software quality
US8789014B2 (en) * 2011-05-13 2014-07-22 Microsoft Corporation Managing a working set in an integrated development environment
US8839203B2 (en) * 2011-05-25 2014-09-16 Microsoft Corporation Code coverage-based taint perimeter detection
US8776025B2 (en) * 2011-11-04 2014-07-08 International Business Machines Corporation Integrated debugger and code coverage tool

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212387A (ja) * 1996-01-31 1997-08-15 Matsushita Electric Works Ltd プログラム開発支援装置
JP2005316685A (ja) * 2004-04-28 2005-11-10 Mitsubishi Electric Corp プログラム管理装置

Also Published As

Publication number Publication date
US20130111447A1 (en) 2013-05-02
US9740592B2 (en) 2017-08-22
JP5785474B2 (ja) 2015-09-30

Similar Documents

Publication Publication Date Title
US8762871B2 (en) Dynamic preview of diagram elements to be inserted into a diagram
US9389872B2 (en) Software wizard implementation framework
US20190079757A1 (en) Associating a visualization of user interface with source code
TW200907778A (en) An interactive progress bar
US20150301806A1 (en) Tentative program code in an editor
US8079014B2 (en) Software development apparatus and method
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
US9785416B2 (en) Presenting a custom view in an integrated development environment based on a variable selection
US11042466B2 (en) Exception prediction before an actual exception during debugging
JP2016511497A (ja) ジャストマイコードを使用したジャバスクリプトデバッギング
JP5785474B2 (ja) プログラムのデバッグ方法、デバッグ装置、およびデバッグ支援gui
JP2005300324A (ja) 被試験対象デバイスの測定データ解析方法、プログラム、および測定データ解析システム
US20140258991A1 (en) Trace coverage analysis
JP4675639B2 (ja) データ処理システム、アプリケーションプログラムのカスタマイズパラメータを表示する方法およびコンピュータプログラム製品
EP3640794A1 (en) Program development support device, program development support method, and program development support program
JP2009230420A (ja) ソースコード品質管理装置
JP4941674B2 (ja) シミュレーション・システム
JP5743663B2 (ja) テスト支援システム、テスト支援方法、及びプログラム
US11609772B2 (en) Dynamically generating guided tours for software
US20140074803A1 (en) Log message optimization to ignore or identify redundant log messages
WO2004107087A2 (en) Generating test cases
JP2013137716A (ja) マクロ展開装置及びプログラム
JP2023053720A (ja) ユーザプログラムの開発を支援するためのシステム、方法およびプログラム
JP2008286670A (ja) テスト条件パラメータ抽出方法
CN110569025A (zh) 变量处理方法、装置、可读存储介质及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150129

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150709

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150724

R150 Certificate of patent or registration of utility model

Ref document number: 5785474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees