JP2008140162A - デバッグ情報収集方法 - Google Patents

デバッグ情報収集方法 Download PDF

Info

Publication number
JP2008140162A
JP2008140162A JP2006325922A JP2006325922A JP2008140162A JP 2008140162 A JP2008140162 A JP 2008140162A JP 2006325922 A JP2006325922 A JP 2006325922A JP 2006325922 A JP2006325922 A JP 2006325922A JP 2008140162 A JP2008140162 A JP 2008140162A
Authority
JP
Japan
Prior art keywords
probe
software
information
probes
binary
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
JP2006325922A
Other languages
English (en)
Inventor
Shinichiro Kawasaki
進一郎 川崎
Toru Nojiri
徹 野尻
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006325922A priority Critical patent/JP2008140162A/ja
Priority to US11/947,221 priority patent/US20080141224A1/en
Priority to KR1020070122825A priority patent/KR100990777B1/ko
Priority to CNB2007103066833A priority patent/CN100533398C/zh
Publication of JP2008140162A publication Critical patent/JP2008140162A/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】デバイス側の負担とソフトウェア開発者側の負担を同時に軽減し、かつデバッグ情報が偏りなく一様に取得できるようなデバッグ情報収集方法を提供すること。
【解決手段】ソフトウェア配布装置102において、バイナリ解析部122はソフトウェアにプローブを挿入可能な挿入位置の全体集合を求める。バイナリ変更部125は、ソフトウェアに挿入するプローブの挿入位置の母集団と、デバイス104ごとに挿入するプローブの挿入数を決定し、母集団から上記挿入数だけプローブの挿入位置を選択してソフトウェアに挿入する。その際、プローブ情報123、実行装置情報124、デバッグ情報132を参照する。ソフトウェア配布部129はプローブの挿入されたソフトウェアをデバイス104に配布する。
【選択図】図1

Description

本発明はソフトウェアの品質向上のため、特にネットワークに接続された多くのデバイスに対して配布され、実行されるソフトウェアのデバッグ情報収集方法に関する。
情報家電、携帯電話など、いわゆる組込み機器と呼ばれる情報処理機器において、ソフトウェア規模が増大している。ネットワーク対応のための機能追加、ユーザ要求の増大等により、ソフトウェアを用いて短期間で多くの新機能を実現することが求められているためである。このようなソフトウェア規模の増大に伴い、ソフトウェアの品質確保が要請されている。しかしながら、品質確保に当てる時間の確保が難しく、製品を出荷後にソフトウェア更新するなどの対応もとられている。
ソフトウェアの品質を確保する手法として、ソフトウェアに実行経過を調べるためのプローブを挿入し、デバッグ情報を収集する手法がある。例えば、ソフトウェアの実行部分と非実行部分を調査するカバレッジ、開発者が指定する条件文の真偽値を調査するアサーションなどの手法である。しかし、計算機資源に乏しい組込み機器では、必要とする記憶領域の増加や性能オーバーヘッドの要求を受け入れられず、多数のプローブを挿入することができない。
この問題に対し、特許文献1では、プローブを挿入する範囲を人間が指定し、指定された範囲に自動的にプローブを挿入する手法を明らかにしている。この手法では、挿入するプローブを一部に限定することでメモリ領域と実行時間の問題を回避する。同時に収集される情報も限定されるが、プローブ挿入範囲の変更とデバッグ情報収集を繰り返すことで、必要な量のデバッグ情報を収集することができる。
また、非特許文献1では、プローブを用いて取得したデバッグ情報を、ネットワークを介して収集する手法を明らかにしている。この方法は特許文献1の方法とは異なり、挿入するプローブを限定せず、全てのプローブをソフトウェアに挿入する。その代わり、ソフトウェア実行時に乱数を用いて情報を収集するプローブを一部に限定することで、収集する情報量を減らし、同時に情報収集による実行時間の増加を回避している。合わせて収集した情報を統計的に解析することで、障害の原因(バグの箇所)を推定する手法を明らかにしている。
特開平6−161825号公報 Ben Liblit,Alex Aiken,Alice X.Zheng and Michael I.Jordan. Bug Isolation via Remote Program Sampling. PLDI’03,June 9−11,2003
特許文献1ではプローブの挿入範囲が限定されており、メモリ資源および実行時間のオーバーヘッドは限定されており、開発者がプローブの挿入範囲を指定するため、多様なデバイスの特性やテスト条件に応じたきめ細かい情報収集が可能である。しかし、多数のデバイスから繰り返し情報を収集するには大きな手間がかかるという課題がある。
また、非特許文献1では乱数を用いて情報を取得するプローブを限定しているため、実行時間のオーバーヘッドは限定されており、開発者がプローブを指定する手間も不要となる。しかし、全てのプローブを予めプログラムに挿入しているため、メモリ資源に与えるオーバーヘッドが大きいという課題がある。
すなわち、これらの文献の技術では、多数かつ多様なデバイスからデバッグ情報を収集する際のメモリ資源およびプローブ実行時間の削減と、開発者による情報収集の手間の削減が両立されていない、という課題がある。また、仮に上記両文献の技術を組み合わせたとしても、プローブから収集するデバッグ情報に偏りが発生することは避けられず、よって迅速で効率的なソフトウェア開発の妨げになるという課題が残る。
本発明の目的は、デバイス側の負担と開発者側の負担を同時に軽減し、かつデバッグ情報が偏りなく一様に取得できるようなデバッグ情報収集方法を提供することである。
本発明は、デバッグ情報を収集するためにソフトウェアにプローブを挿入して複数のデバイスに配布し、デバイスにおいてソフトウェアを実行することにより得られるデバッグ情報を収集するデバッグ情報収集方法において、ソフトウェアにプローブを挿入可能な挿入位置の全体集合を求め、全体集合から部分集合を取り出してソフトウェアに挿入するプローブの挿入位置の母集団を決定し、デバイスごとに挿入するプローブの挿入数を決定し、母集団から上記挿入数だけプローブの挿入位置を選択してソフトウェアに挿入し、プローブの挿入されたソフトウェアをデバイスに配布する。
前記デバイスに挿入するプローブの挿入数は、デバイスの記憶容量またはCPU性能に基づき、デバイスごとに挿入数を決定し、前記母集団から上記挿入数だけプローブの挿入位置を乱数を用いて選択してソフトウェアに挿入する。
前記プローブの挿入位置の母集団は、過去に配布したソフトウェアに挿入したプローブの挿入回数を参照し、挿入回数の少ない挿入位置の部分集合から決定する。
前記プローブの挿入位置の母集団は、過去に配布したソフトウェアに挿入したプローブから収集したデバッグ情報を参照し、デバッグ情報から各プローブの実行回数を求め、実行回数の少ないプローブ挿入位置の部分集合から決定する。
前記プローブの挿入位置の母集団は、前記デバッグ情報から各プローブの実行回数を求め、その中で障害発生時に実行された実行回数の少ないプローブ挿入位置の部分集合から決定する。
本発明によれば、デバイス側の負担とソフトウェア開発者側の負担を軽減し、配布したソフトウェアの障害原因解析の迅速化を図ることができる。
以下、本発明の実施形態を、図面を用いて説明する。
図1は、本発明に係るソフトウェア配布システムの全体構成を示す図である。本システムは、ソフトウェア開発装置101、ソフトウェア配布装置102、デバッグ情報収集装置103、および複数の実行装置(デバイス)104、105、106などから構成される。まず、各装置の関連について説明する。
ソフトウェア開発者は、ソフトウェア開発装置101を用いてソフトウェアを開発し、実行可能なバイナリを作成する。製作されたバイナリは、イントラネットなどを介してソフトウェア配布装置102に送付される。ソフトウェア配布装置102はバイナリに対してプローブを挿入した後、インターネットなどを経由し、そのバイナリを実行装置104、105、106などに配布する。各実行装置は配布されたバイナリを実行し、実行装置の所有者などにサービスを提供する。同時にプローブによって得られるデバッグ情報を収集し、これをデバッグ情報収集装置103に送付する。デバッグ情報収集装置103は、各実行装置から送付されてくるデバッグ情報を蓄積し、統計的な解析などにより障害原因を推定するための情報を生成する。この情報はソフトウェア開発装置101などを通じ、ソフトウェア開発者に提供される。次に各装置の内部構成について説明する。
ソフトウェア開発装置101は、ソースコード111、バイナリ112などのデータを保持し、ソースコード編集処理部113、コンパイル処理部114などの機能を持つ。ソースコード編集処理部113は、ソフトウェア開発者によるソースコード111の作成作業を支援する。コンパイル処理部114は、ソースコード111をバイナリ112に変換する。バイナリ112は、開発者の判断に応じてソフトウェア配布装置102に送付される。
ソフトウェア配布装置102は、ソフトウェア開発装置101より送付されたバイナリ112をバイナリ121として保持する。バイナリ解析部122はバイナリ121を解析し、プローブを挿入可能な箇所を抽出する。抽出されたプローブ挿入箇所は、プローブ情報123に保持される。また、ソフトウェア配布対象となる実行装置(デバイス)のリストを、実行装置情報124に保持する。バイナリ変更部125はバイナリ121にプローブを挿入するが、その際、実行装置情報124、プローブ情報123、デバッグ情報132などを参照してプローブの数と挿入位置を決める。バイナリ変更部125は、挿入プローブ選択部126や、プローブ挿入部127などの機能モジュールから構成される。挿入が完了したバイナリは、プローブ挿入済バイナリ128となって保持される。ソフトウェア配布部129は、プローブ挿入済バイナリ128を、実行装置104などに送信する。
実行装置104は、ソフトウェア配布装置102にソフトウェア(バイナリ)の配布を要求し、ソフトウェア受信部143はプローブ挿入済バイナリ141を受信し、プローブ挿入済バイナリ141として保持する。ユーザによる起動などのトリガに応じてプローブ挿入済バイナリ141を実行し、実行の結果としてプローブ収集情報142を取得する。この時取得できるプローブ収集情報は、ソフトウェア配布装置102において挿入されたプローブに限定され、挿入されなかったプローブについては情報が得られないことは当然である。取得したプローブ収集情報142は、プローブ収集情報送信部144により、デバッグ情報収集装置103に送付される。
デバッグ情報収集装置103は、プローブ収集情報受信部133を介し、実行装置104などからプローブ収集情報142を受信し、デバッグ情報132として格納する。また、障害原因箇所推定部131は、デバッグ情報132を用いてソフトウェア実行時に発生した障害の原因に関係するプローブを推定し、原因の可能性が高いプローブのリストを作成する。このリストはソフトウェア開発者に提供され、これを基にソフトウェア障害の原因を解析する。この解析には一定量のデータが必要である。各実行装置で十分な回数ソフトウェアが実行されて十分な量のデータがデバッグ情報132に蓄積されるまで、一定の時間がかかる。
本システムの構成では、ソフトウェア配布装置102のバイナリ変更部125は、挿入プローブ選択部126とプローブ挿入部127を有する。挿入プローブ選択部126は、実行装置情報124、プローブ情報123、デバッグ情報132などを参照してバイナリ121に挿入するプローブが偏りなく一様になるよう選択する。またプローブ挿入部127は、各実行装置(デバイス)の性能に応じてプローブの挿入位置等を決めることにも特徴がある。
図2は、ソフトウェア配布装置102の保持するプローブ情報123の一例を示す図である。ここでは、対象とするソフトウェアとしてメール送受信用のプログラムを想定する。挿入する各プローブには、これらを識別するためにプローブID201を割り振り、対象モジュール202は各プローブがどのモジュールに属するかを示す。ここでは例として、MailReadUI、MailEditUI、CommonLoggerなどの名称のモジュールに属する。プローブ種別203は、関数の返り値を観測する「返り値」と、ポインタなどの変数へ代入された値を観測する「代入値」の2つを挙げている。この他に、ソフトウェア開発者が挿入する条件文の真偽値を観測する「アサーション」、分岐箇所の分岐方向を観測する「カバレッジ」など、別種のプローブでも良い。
対象クラス204、対象メソッド205、挿入位置206は、プローブの挿入箇所を特定するための情報である。ここではJava(登録商標)などのプログラム形式を想定し、クラスとメソッドにより命令列を特定し、挿入位置により命令列先頭からのオフセットバイト数を特定する例を示しているが、他のプログラム形式でもよい。ソースコード行207は、各プローブがソースコード111においてどの位置に対応しているかを示す情報である。障害との関連が推定されるプローブが決定されると、ソフトウェア開発者は、プローブに対応するソースコード行207の周辺を優先して障害原因を調査することができる。また、本実施例では、プローブ内で取得した値をそのまま観測結果とするのではなく、取得した値と特定の値を比較した結果を観測結果とした。比較対象208は、比較する特定の値、もしくは変数を示している。挿入回数209は、各プローブが何回挿入されたかを示す値である。一つの実行装置へソフトウェアを配布する時、ソフトウェアに一定個数のプローブ群が挿入されるので、挿入されたプローブに対応する「挿入回数」に1を加算する。
プローブID=1の例についてデータの内容を述べると、MailReadUIモジュールにおける返り値型のプローブであり、MailListクラス、updateメソッドの124バイト目に挿入されている。また、このプローブは、観測データを0と比較した結果を返し、これまでに配布バイナリに挿入された回数は3回である。
図3は、ソフトウェア配布装置102の保持する実行装置情報124の一例を示す図である。装置ID301は、出荷時に各実行装置に割り振られる製造番号をIDとして、一意に識別できるものである。実行装置の種別302は、H9000という旧型とH9010という新型の2機種とした。それぞれの機種を比較すると、CPU種別303は「A」と「B」、CPU周波数304は「200」MHzと「233」MHzのごとく性能が異なる。さらに、組込み機器はメモリ資源に関する制約があるため、配布可能なソフトウェアのサイズにも上限を設けることが多い。ここでは、ソフトウェア配布装置102から受信できるソフトウェアのサイズ制限305を、H9000については32kバイト、H9010については64kバイトと異なる値を持つ。その結果、挿入可能なプローブ数の上限306は、それぞれ12個、14個に設定されている。
図4は、デバッグ情報収集装置103の保持するデバッグ情報132の一例を示す図である。本データは、計測条件400と計測結果410に分かれている。計測条件400は、プローブID401、プローブ種別402、実行装置種別403からなる。ここでは、プローブID=1により特定されるプローブについて、4回の計測が行われたことを示している。このプローブのIDは「1」、種別は「返り値」であり、H9000による計測が2回、H9010による計測も2回実施されている。
計測結果410は、終了状態411と、比較結果の回数412から構成されている。終了状態411は、各プローブから得られる情報と合わせて、収集されるソフトウェア終了時の状態を示す情報である。ここでは、エラー無しで終了した「正常終了」、クラッシュなどのエラーにより終了した「エラー」の2状態を識別するデータとしている。比較結果の回数412は、各プローブにおける比較の結果を「負:<」「正:>」「等:=」に分け、各々の回数をカウントした数字である。例えばプローブID=1における最初のデータは、正常終了したときに、このプローブで2回の計測が行われ、比較結果が正のときが1回、等しかったときが1回あったことを示している。
これらのデバッグ情報132は、次にソフトウェアを配布する際にデバッグ情報を均一、効率的に収集できるよう、挿入するプローブを選択するために用いる。
図5は、本発明によるデバッグ情報収集処理の全体のフローチャートの一例を示す図である。各処理ステップについて順に説明する。
ステップS501:ソフトウェア開発装置101にて作成したバイナリを配布するために、ソフトウェア配布装置102にバイナリをコピーする。
ステップS502:バイナリ解析部122は配布対象のバイナリ121を解析し、挿入可能なプローブをリストアップする。例えばメソッドの呼び出し箇所を抽出し、これをメソッドの「返り値」を観測するプローブの挿入箇所とする。抽出したプローブ挿入箇所を、プローブ情報123に追加する。このようにして、配布対象となるバイナリ全体についてプローブ情報123を作成する。
ステップS503:ソフトウェアの配布対象となる実行装置(デバイス)を1つ選択する。この場合、ソフトウェア配布装置102が、実行装置情報124を基に自主的に配布先の実行装置を選択するか、あるいは実行装置104からソフトウェアの配布要求を受けて、これに応じて配布する形態でもよい。
ステップS504:バイナリ変更部125は、選択した配布対象の実行装置向けに、挿入するプローブを選択する。その際、実行装置に応じてプローブの数を決定し、また挿入履歴に応じて挿入するプローブの母集団を決定する。これらの詳細は後述する。
ステップS505:選択したプローブをバイナリ121に挿入し、プローブ挿入済バイナリ128を生成する。
ステップS506:ソフトウェア配布部129は、プローブ挿入済バイナリ128を配布対象の実行装置104へ送信する。
ステップS507:実行装置104は、受信したソフトウェアを実行する。
ステップS508:ソフトウェア実行の結果としてプローブ収集情報142を取得し、デバッグ情報収集装置103へ送信する。
ステップS509:デバッグ情報収集装置103は、取得したプローブ収集情報142をデバッグ情報132として格納する。
ステップS510:障害原因箇所推定部131は、実行時に発生した障害に関係するプローブを推定して、プローブのリストを作成する。
ステップS511:ソフトウェア開発者はプローブリストを基にソフトウェア障害の原因を解析する。
図6は、前記図5における挿入プローブ選択処理(ステップS504)の詳細なフローチャート図である。
ステップS601:バイナリ変更部125は、実行装置情報124を参照し、配布対象の実行装置に関する情報を取得する。取得する情報は、図3に示した装置種別、CPU種別、CPU周波数、配布ソフトウェアサイズ制限、プローブ数上限などである。
ステップS602:取得した実行装置情報124に基づき挿入するプローブ数を決定する。プローブ数は、配布対象の実行装置の性能によって適切に決定する。さらに、同一の実行装置に繰り返し配布する場合は、配布のたびごとに異なっていても良い。
ここで、実行装置に応じてプローブ数を決定するいくつかの具体的方法を述べる。
(1)配布可能なソフトウェアサイズ制限に基づき決定する方法。挿入するプローブの個数を増やすと、バイナリサイズは増加する。そこで、バイナリサイズが制限値を超えないような最大のプローブ数(プローブ数の上限値306)を、挿入個数とする方法である。例えば、プローブの挿入個数がバイナリサイズの増加に比例関係を定める場合、挿入前のバイナリサイズをXo、全プローブN個を挿入したバイナリのサイズをXp、配布可能なバイナリサイズの上限をMとしたとき、以下の式を満たすような最大のnをプローブ数とする。
n(Xp−Xo)/N+Xo<M
これにより、各実行装置の記憶領域を最大限に活用したデバッグ情報の収集が可能となる。
(2)CPUの種別や動作周波数に基づき決定する方法。CPUの種別に応じ、予め定めておいた定数をプローブ数とする。または、動作周波数とプローブ数の比例関係を定めておき、プローブ数を定める。これにより、演算能力が高いCPUを持ち、処理時間に余裕の多い実行装置では多数のプローブを用いて測定する。演算能力の低いCPUを持ち、処理時間に余裕の少ない実行装置では、少数のプローブに限定して測定する。その結果、各実行装置の動作能力に合わせたデバッグ情報の収集が可能となる。なお、測定するプローブ数を実行装置側で限定する方法を併用してもよい。この場合は、実行装置毎に測定プローブ数を変えるため、ソフトウェア配布装置102から実行装置に測定プローブ数を伝達し、伝達した数のプローブからのみ情報を取得することで、CPU性能に応じた情報収集を実現できる。
(3)その他のプローブ数決定方法。ユーザがソフトウェアを使用するために結ぶ契約の内容に基づく決定方法、GPS測位によるデバイスの位置情報に基づく決定方法、ネットワーク帯域やネットワーク接続が常時か否かに基づく決定方法なども可能である。また、前述の決定方法を含め、複数の決定方法を組み合わせても良い。各決定方法から算出されるプローブ数のうち、最小のプローブ数を選択する決定方法でも良い。
ステップS603:バイナリ変更部125は、さらにプローブ情報123、デバッグ情報132を参照し、プローブ挿入箇所の全体集合に関する情報を取得する。
ステップS604:挿入するプローブを選択するときに、選択対象となるプローブの母集団を決定する。この母集団は、プローブ情報123から取得したプローブ全体集合の部分集合である。すなわち選択するプローブは全体集合からではなく、母集団から決定する。
ここで、プローブの挿入履歴から母集団を決定するいくつかの具体的方法を述べる。
(4)各プローブの挿入回数に応じて決定する方法。プローブ情報123から得られる挿入回数の最大値を持つプローブを除外し、それ以外のプローブを母集団とする。言い換えれば、挿入回数の少ないプローブで母集団を構成する。例えば、図2の場合にはID=2は挿入回数が最大(4回)なので母集団から除外する。この操作によって挿入回数の少ないプローブが選択され、各プローブの挿入回数の偏りをなくし一様化することができる。プローブの挿入回数に偏りがあると、特定のプローブについて収集される情報が少なくなるため、障害原因箇所の推定に必要な情報を得るための待ち時間が長くなる。挿入回数の偏りをなくすことで、より短時間で障害原因箇所を推定することができる。
(5)過去のデバッグ情報に応じて決定する方法。各プローブの実行回数、およびエラー発生時の実行回数による方法である。図4に示したデバッグ情報132は、プローブID=1が4回実行され、そのうちエラーが1回発生している。一方、プローブID=2は2回実行され、そのうちエラーが1回発生している。プローブの母集団として、実行回数の少ないプローブを選択することで、それらのプローブの情報をより短時間で収集しやすくなる。もしくはエラー発生回数の少ないプローブを選択することで、エラー発生時の情報をより収集しやすくなる。これにより、各プローブについて実行回数の偏りが無くなり、推定に必要となる情報収集の待ち時間が短縮される。
(6)その他の母集団の決定方法。モジュール毎のプローブ実行回数を比較し、モジュール単位で母集団を選択する方法や、プローブの挿入履歴から一回の配布において挿入するプローブの組み合せをチェックし、プローブの組み合せの偏りを平均化する方法なども可能である。また、前述の決定方法を含め、複数の決定方法を組み合わせても良い。例えば、各決定方法から得られる母集団の和集合や積集合を、母集団とする方法がある。
ステップS605:上記決定したプローブの母集団から乱数等を用いてプローブを1つ選択する。選択したプローブについては、プローブ情報123の「挿入回数209」に1を加算する。
ステップS606:選択したプローブの数が、ステップS602にて決定した挿入プローブ数に達していれば、プローブの選択を完了する。達していない場合は、ステップS603に戻って再度プローブを選択する。
このように本実施例によれば、実行装置の性能に応じて挿入するプローブ数を決定するので実行装置側の負担が過大となることがない。また、プローブの挿入履歴を反映して母集団を決定するので、挿入するプローブに偏りがなくなる。その結果、デバイス側の負担と開発者側の負担を同時に軽減し、かつデバッグ情報を一様に取得できるようになり、ソフトウェアの障害原因解析の迅速化に寄与する。
上記実施例では、単一のバイナリについてデバッグ情報を収集する例を示したが、複数のバイナリを対象にして適用することも可能である。また上記実施例では、バイナリに対してプローブを挿入する例を示したが、ソースコードにプローブを挿入してもよい。その場合は、ソフトウェア配布装置102はバイナリの代わりにソースコードを配置し、コンパイル処理部を持たせればよい。
上記実施例では、インターネットなどの公共ネットワークを介してソフトウェア配布装置102、デバッグ情報収集装置103、実行装置104、105、106などを接続する場合を示したが、これらはイントラネットなどの組織内ネットワークを用いて接続してもよい。
すなわち、実行装置104などを出荷する前のソフトウェア改善についても、本発明は適用可能である。また、ソフトウェアの配布は実行装置104の出荷前にイントラネット経由で実施し、デバッグ情報の収集を実行装置104の出荷後にインターネット経由で実施する形態でもよい。すなわち、ソフトウェア配布のサービスを提供しない場合にも、本発明は適用可能である。
本実施例ではソフトウェア開発装置101、ソフトウェア配布装置102、デバッグ情報収集装置103などがイントラネットなどの組織内ネットワークにより接続する例を示したが、これらはインターネットなどの公共ネットワークを用いて接続してもよい。すなわち、ソフトウェア配布装置102、およびデバッグ情報収集装置103による、ソフトウェアの配布とデバッグ情報収集の機能を、ソフトウェア開発者に対して有償もしくは無償のサービスとして提供する場合にも、本発明は適用可能である。
本発明に係るソフトウェア配布システムの全体構成を示す図。 ソフトウェア配布装置の保持するプローブ情報123の一例を示す図。 ソフトウェア配布装置の保持する実行装置情報124の一例を示す図。 デバッグ情報収集装置の保持するデバッグ情報132の一例を示す図。 デバッグ情報収集処理の全体のフローチャートの一例を示す図。 図5における挿入プローブ選択処理の詳細なフローチャート図。
符号の説明
101…ソフトウェア開発装置、102…ソフトウェア配布装置、103…実行情報収集装置、104,105,106…実行装置、111…ソースコード、112…バイナリ、113…ソース編集処理部、114…コンパイル処理部、121…バイナリ、122…バイナリ解析部、123…プローブ情報、124…実行装置情報、125…バイナリ変更部、126…挿入プローブ選択部、127…プローブ挿入部、128…プローブ挿入済バイナリ、129…ソフトウェア配布部、131…障害原因箇所推定部、132…デバッグ情報、133…プローブ収集情報受信部、141…プローブ挿入済バイナリ、142…プローブ収集情報、143…ソフトウェア受信部、144…プローブ収集情報送信部。

Claims (5)

  1. デバッグ情報を収集するためにソフトウェアにプローブを挿入して複数のデバイスに配布し、該デバイスにおいて該ソフトウェアを実行することにより得られるデバッグ情報を収集するデバッグ情報収集方法において、
    上記ソフトウェアにプローブを挿入可能な挿入位置の全体集合を求め、
    該全体集合から部分集合を取り出して上記ソフトウェアに挿入するプローブの挿入位置の母集団を決定し、
    上記デバイスごとに挿入するプローブの挿入数を決定し、
    上記母集団から上記挿入数だけプローブの挿入位置を選択して上記ソフトウェアに挿入し、
    プローブの挿入されたソフトウェアを上記デバイスに配布することを特徴とするデバッグ情報収集方法。
  2. 請求項1に記載のデバッグ情報収集方法であって、
    前記デバイスに挿入するプローブの挿入数は、該デバイスの記憶容量またはCPU性能に基づき、デバイスごとに挿入数を決定し、
    前記母集団から上記挿入数だけプローブの挿入位置を乱数を用いて選択して前記ソフトウェアに挿入することを特徴とするデバッグ情報収集方法。
  3. 請求項1に記載のデバッグ情報収集方法であって、
    前記プローブの挿入位置の母集団は、過去に配布したソフトウェアに挿入したプローブの挿入回数を参照し、該挿入回数の少ない挿入位置の部分集合から決定することを特徴とするデバッグ情報収集方法。
  4. 請求項1に記載のデバッグ情報収集方法であって、
    前記プローブの挿入位置の母集団は、過去に配布したソフトウェアに挿入したプローブから収集したデバッグ情報を参照し、該デバッグ情報から各プローブの実行回数を求め、該実行回数の少ないプローブ挿入位置の部分集合から決定することを特徴とするデバッグ情報収集方法。
  5. 請求項4に記載のデバッグ情報収集方法であって、
    前記プローブの挿入位置の母集団は、前記デバッグ情報から各プローブの実行回数を求め、その中で障害発生時に実行された実行回数の少ないプローブ挿入位置の部分集合から決定することを特徴とするデバッグ情報収集方法。
JP2006325922A 2006-12-01 2006-12-01 デバッグ情報収集方法 Pending JP2008140162A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006325922A JP2008140162A (ja) 2006-12-01 2006-12-01 デバッグ情報収集方法
US11/947,221 US20080141224A1 (en) 2006-12-01 2007-11-29 Debug information collection method and debug information collection system
KR1020070122825A KR100990777B1 (ko) 2006-12-01 2007-11-29 디버그 정보 수집 방법 및 디버그 정보 수집 시스템
CNB2007103066833A CN100533398C (zh) 2006-12-01 2007-11-30 调试信息采集方法及调试信息采集系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006325922A JP2008140162A (ja) 2006-12-01 2006-12-01 デバッグ情報収集方法

Publications (1)

Publication Number Publication Date
JP2008140162A true JP2008140162A (ja) 2008-06-19

Family

ID=39499836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006325922A Pending JP2008140162A (ja) 2006-12-01 2006-12-01 デバッグ情報収集方法

Country Status (4)

Country Link
US (1) US20080141224A1 (ja)
JP (1) JP2008140162A (ja)
KR (1) KR100990777B1 (ja)
CN (1) CN100533398C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011070533A (ja) * 2009-09-28 2011-04-07 Bank Of Tokyo-Mitsubishi Ufj Ltd コード編集用プログラム及びコード編集装置
WO2012070137A1 (ja) * 2010-11-25 2012-05-31 トヨタ自動車株式会社 プロセッサ、電子制御装置、作成プログラム
WO2014156825A1 (ja) * 2013-03-26 2014-10-02 日本電気株式会社 ログ出力制御装置、方法及びプログラム
US9367380B2 (en) 2013-03-22 2016-06-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamically altering error logging activities in a computing system
JP2016143146A (ja) * 2015-01-30 2016-08-08 日本電信電話株式会社 オートリソースロギングシステム、オートリソースロギング方法及びプログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301605B2 (en) * 2007-12-17 2012-10-30 International Business Machines Corporation Managing maintenance tasks for computer programs
US8291399B2 (en) * 2008-03-26 2012-10-16 Avaya Inc. Off-line program analysis and run-time instrumentation
US9575871B2 (en) * 2012-09-04 2017-02-21 Salesforce.Com, Inc. System and method for dynamically debugging data in a multi-tenant database environment
US9268598B2 (en) * 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
CN105281967B (zh) * 2014-06-20 2019-06-28 北京神州泰岳软件股份有限公司 一种数据采集方法和系统
CN105681410B (zh) * 2016-01-07 2019-07-19 深圳市金证科技股份有限公司 一种跟踪记录调试信息的方法和装置
WO2018029668A1 (en) 2016-08-09 2018-02-15 Sealights Technologies Ltd. System and method for continuous testing and delivery of software
IL264050B (en) 2018-01-01 2021-12-01 Rookout Ltd System and method for controlled extraction of information in computer networks
US11086759B2 (en) 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics
CN111586475B (zh) * 2020-05-27 2022-05-06 飞思达技术(北京)有限公司 一种iptv和ott直播音视频质量和感知评价系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826005A (en) * 1996-03-22 1998-10-20 Sun Microsystems, Inc. System and method for diagnosing computer program faults through the provision of program probe points and referenceable diagnostic program probes
JPH10214203A (ja) * 1997-01-29 1998-08-11 Nec Corp 情報処理装置
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
US20040111707A1 (en) * 2000-12-15 2004-06-10 Bliss Andrew L. Debugger for multiple processors and multiple debugging types
CA2345416C (en) * 2001-04-27 2005-05-03 Ibm Canada Limited-Ibm Canada Limitee High performance debugging in a message flow environment
US7475303B1 (en) * 2003-12-29 2009-01-06 Mips Technologies, Inc. HyperJTAG system including debug probe, on-chip instrumentation, and protocol
US7590521B2 (en) * 2004-04-07 2009-09-15 Microsoft Corporation Method and system for probe optimization while instrumenting a program
US7950001B2 (en) * 2006-09-08 2011-05-24 International Business Machines Corporation Method and apparatus for instrumentation in a multiprocessing environment

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011070533A (ja) * 2009-09-28 2011-04-07 Bank Of Tokyo-Mitsubishi Ufj Ltd コード編集用プログラム及びコード編集装置
US8473903B2 (en) 2009-09-28 2013-06-25 The Bank Of Tokyo-Mitsubishi Ufj, Ltd. Code edit apparatus and recording medium
WO2012070137A1 (ja) * 2010-11-25 2012-05-31 トヨタ自動車株式会社 プロセッサ、電子制御装置、作成プログラム
JP5532144B2 (ja) * 2010-11-25 2014-06-25 トヨタ自動車株式会社 プロセッサ、電子制御装置、作成プログラム
US9367380B2 (en) 2013-03-22 2016-06-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamically altering error logging activities in a computing system
WO2014156825A1 (ja) * 2013-03-26 2014-10-02 日本電気株式会社 ログ出力制御装置、方法及びプログラム
JP6015849B2 (ja) * 2013-03-26 2016-10-26 日本電気株式会社 ログ出力制御装置、方法及びプログラム
JP2016143146A (ja) * 2015-01-30 2016-08-08 日本電信電話株式会社 オートリソースロギングシステム、オートリソースロギング方法及びプログラム

Also Published As

Publication number Publication date
KR20080050331A (ko) 2008-06-05
CN100533398C (zh) 2009-08-26
US20080141224A1 (en) 2008-06-12
KR100990777B1 (ko) 2010-10-29
CN101201782A (zh) 2008-06-18

Similar Documents

Publication Publication Date Title
JP2008140162A (ja) デバッグ情報収集方法
CN108521353B (zh) 定位性能瓶颈的处理方法、设备及可读存储介质
US10175969B2 (en) Data processing for upgrading medical equipment
CN106874187B (zh) 代码覆盖率收集方法和装置
EP2572294B1 (en) System and method for sql performance assurance services
US7864679B2 (en) System utilization rate managing apparatus and system utilization rate managing method to be employed for it, and its program
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
CN111158741B (zh) 监控业务模块对第三方类库依赖关系变化的方法及装置
US8174990B2 (en) Mechanism and system for programmable measurement of aggregate metrics from a dynamic set of nodes
CN113448854A (zh) 一种回归测试方法和装置
US20090100413A1 (en) Stack Walking Enhancements Using Sensorpoints
CN110262959A (zh) 底层服务压力测试方法、装置、电子设备及存储介质
WO2020168751A1 (zh) 基于HashMap的数据获取方法、装置、计算机设备和存储介质
US7406686B2 (en) Systems and methods for software performance tuning
JP2008217721A (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
US20070094266A1 (en) Collecting information on component implementation and use
CN110971478B (zh) 云平台服务性能的压测方法、装置及计算设备
Ruprecht et al. Automatic feature selection in large-scale system-software product lines
JP2009237654A (ja) テストプログラム管理システム
KR102016472B1 (ko) 코드 커버리지 측정 방법 및 장치, 그리고 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN110674024A (zh) 电子设备集成测试系统及其方法
US10977146B2 (en) Application operation monitoring apparatus and application operation monitoring method
US20050021655A1 (en) System for efficiently acquiring and sharing runtime statistics
US11449378B2 (en) Information processing apparatus and log control method
CN110908918A (zh) 针对多个相互依赖的node.js模块的单元测试方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111122