JP2012079130A - デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法 - Google Patents

デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法 Download PDF

Info

Publication number
JP2012079130A
JP2012079130A JP2010224366A JP2010224366A JP2012079130A JP 2012079130 A JP2012079130 A JP 2012079130A JP 2010224366 A JP2010224366 A JP 2010224366A JP 2010224366 A JP2010224366 A JP 2010224366A JP 2012079130 A JP2012079130 A JP 2012079130A
Authority
JP
Japan
Prior art keywords
debug
program
identifier
connection request
processes
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
JP2010224366A
Other languages
English (en)
Inventor
Yutaka Tamiya
豊 田宮
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010224366A priority Critical patent/JP2012079130A/ja
Priority to US13/165,173 priority patent/US20120084757A1/en
Publication of JP2012079130A publication Critical patent/JP2012079130A/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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface

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)

Abstract

【課題】複数のプロセスに関するリモートデバッグを適切に実現すること。
【解決手段】デバッグ支援プログラムは、コンピュータに、デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行させる。
【選択図】図7

Description

本発明は、リモートデバッグを支援するデバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法に関する。
従来、携帯電話等の組み込み機器において動作するプログラムのデバッグには、「リモートデバッグ」と呼ばれるデバッグ手法が使われている。
図1は、従来のリモートデバッグの仕組みを説明するための図である。同図において、ターゲットマシン510は、デバッグ対象のプロセスが実行される組み込み機器である。ホストマシン520は、ユーザ(例えば、開発者)が、デバッグ操作に利用するコンピュータである。ターゲットマシン510とホストマシン520とは、ネットワーク又はシリアルケーブル等の通信回線によって接続される。
ホストマシン520は、デバッグクライアント521及びデバッグ情報522等を有する。デバッグクライアント521は、ユーザからのデバッグ操作指示の受付や、操作指示に応じた情報の表示等を行うプログラムである。デバッグクライアント521は、デバッグ対象とされるプロセスに対応してホストマシン520上に起動される。デバッグ情報522は、デバッグ対象のプロセスに係るプログラムのソースコードと、ソース内の各種シンボル(変数、関数等)のアドレス情報との対応情報等を含む情報である。
ダーゲットマシン510は、デバッグサーバ511等を有する。デバッグサーバ511は、デバッグ対象のプロセスに関する各種のデバッグ処理を実行する。同図では、デバッグ対象のプロセスとして、プロセスp1が起動されている例が示されている。
例えば、デバッグクライアント521に対して、プロセスp1に関するレジスタやメモリ状態の参照指示がユーザによって入力されると、デバッグクライアント521は、当該参照指示に対応するデバッグコマンドをデバッグサーバ511に送信する。デバッグサーバ511は、当該デバッグコマンドに応じて、プロセスp1に関するレジスタやメモリの状態を取得し、取得された情報をデバッグクライアント521に返信する。デバッグクライアント521は、受信された情報を表示させる。この際、デバッグクライアント521は、デバッグ情報522を用いて、受信された情報を、ユーザに理解し易い表現形式で表示させる。
以上のようなリモートデバッグによれば、PC(Personal Computer)等が備える、利便性の高い入力装置や表示装置等を用いて、組み込み機器のデバッグを容易に行うことができる。
特開平9−259002号公報
他方において、近年、組み込み機器のプロセッサにおいて、Unix(登録商標)やSymbianOS等のOS(Operating System)が搭載されるようになり、マルチプロセスシステムが一般化してきている。また、組み込み機器において、仮想化技術によって複数のOSが同時に動作する、マルチOSシステムも使われるようになってきている。すなわち、一台の組み込み機器において、複数のプロセスが並列的に実行可能となっている。したがって、複数のプロセスが相互に協調することによって、所定の機能が実現するプログラムの実装も可能となっている。
このような背景に鑑みれば、組み込み機器のリモートデバッグに関して、図2に示されるような構成が実現されるとデバッグ作業の効率化を期待できる。
図2は、複数のプロセスに関して並列的にリモートデバッグを行うために想定される一つの構成例を示す図である。図2中、図1と同一部分には同一符号を付し、その説明は適宜省略する。
同図において、ターゲットマシン510上では、プロセスp1〜p3の三つのプロセスが起動されている。また、ホストマシン520上では、デバッグクライアント521a〜521cの三つのデバッグクライアント521が起動されている。デバッグクライアント521aは、プロセスp1をデバッグ対象とする。デバッグクライアント521bは、プロセスp2をデバッグ対象とする。デバッグクライアント521cは、プロセスp3をデバッグ対象とする。なお、同図におけるプロセスp1〜p3は、相互に異なるプログラムに係るプロセスであるとする。したがって、デバッグクライアント521a〜521cは、それぞれ相互に異なるデバッグ情報522a〜522cに関して起動されている。
図2に示される構成によれば、ユーザは、デバッグクライアント521a〜521cを操作することにより、プロセスp1〜p3に関するデバッグを並列的に行うことができる。但し、図2の状態が実現されるためには、プロセスp1〜p3に対して各デバッグ情報522が正しく割り付けられてデバッグクライアント521が起動される必要がある。
しかしながら、組み込み機器において、各プロセスは、図3に示されるように様々なロード元からターゲットマシン510へロードされうる。
図3は、複数のプロセスに関するリモートデバッグの問題点を説明するための図である。図3中、図2と同一部分には同一符号を付し、その説明は適宜省略する。
図3において、プロセスp1は、ブートデバイス530に記録されているプログラムが、ブートローダ513によってロードされることにより生成されることが示されている。プロセスp2は、外部メモリ540に記録されているプログラムが、OS514によってロードされることにより生成されることが示されている。プロセスp3は、ネットワーク550を介してダウンロードされるプログラムが、OS514によってロードされることにより生成されることが示されている。
このように、組み機器における各プロセスのロード元は、多種多様である。
また、各プロセスがロードされるタイミングや方法は、ターゲットマシンに搭載されるブートローダやOSに強く依存している。したがって、デバッグサーバ511は、必ずしも各プロセスの起動に関与できない。その結果、デバッグサーバ511は、各プロセスが、何時、何処に(どのメモリ番地に)、どういうプロセスIDでターゲットマシン510にロードされるのかを知ることは困難である。
したがって、従来、図3のクエスチョンマーク(「?」)に示されるように、デバッグサーバ511が、ターゲットマシン510上の各プロセスとホストマシン520上のデバッグ情報522(すなわち、デバッグクライアント521)との対応付けを把握することは非常に困難であった。
1つの側面では、本発明は、複数のプロセスに関するリモートデバッグを適切に実現することのできるデバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法の提供を目的とする。
1つの案では、デバッグ支援プログラムは、コンピュータに、デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行させる。
複数のプロセスに関するリモートデバッグを適切に実現することができる。
従来のリモートデバッグの仕組みを説明するための図である。 複数のプロセスに関して並列的にリモートデバッグを行うために想定される一つの構成例を示す図である。 複数のプロセスに関するリモートデバッグの問題点を説明するための図である。 本発明の実施の形態におけるリモートデバッグ支援システムの構成例を示す図である。 本発明の実施の形態のデバッグクライアント及びデバッグサーバの機能構成例を示す図である。 本発明の実施の形態におけるターゲットマシンのハードウェア構成例を示す図である。 デバッグ支援システムが実行する処理手順の一例を説明するための図である。 デバッグクライアントとデバッグ対象のプロセスとの対応情報の一例を示す図である。 プログラムIDの第一の例を説明するための図である。 プログラムIDの第二の例を説明するための図である。 プログラムIDの第三の例を説明するための図である。
以下、図面に基づいて本発明の実施の形態を説明する。図4は、本発明の実施の形態におけるリモートデバッグ支援システムの構成例を示す図である。同図において、リモートデバッグ支援システム1は、ターゲットマシン10及びホストマシン20等を含む。ターゲットマシン10とホストマシン20とは、ネットワーク又はシリアルケーブル等の通信回線30(有線又は無線の別は問わない)を介して接続されている。なお、一台のターゲットマシン10に対して、複数のホストマシン20が接続されてもよい。
同図において、ターゲットマシン10は、デバッグ対象のプロセスが起動されるコンピュータである。リモートデバッグの有用性を発揮する形態として、ターゲットマシン10は、組み込みシステムが組み込まれた機器(組み込み機器)である形態が挙げられる。組み込み機器の一例として、携帯電話、PDA(Personal Digital Assistance)、スマートフォン、デジタルテレビ、又はデジタルカメラ等が挙げられる。但し、マルチプロセスを実現可能であり、通信機能を有する機器であれば、ターゲットマシン10は特定の機器に限定されない。本実施の形態において、ターゲットマシン10は、デバッグ支援装置の一例である。
ホストマシン20は、ユーザ(例えば、開発者)が、デバッグ操作に利用する、PC(Personal Computer)等のコンピュータである。
ホストマシン20は、デバッグクライアント21及びデバッグ情報22等を有する。デバッグクライアント21は、ユーザからのデバッグ操作指示の受付や、操作指示に応じた情報の表示等を行うプログラムである。デバッグクライアント21は、デバッグ対象とされるプロセスに対応してホストマシン20上に起動される。デバッグ情報22は、デバッグ対象のプロセスに係るプログラムのソースコードと、ソース内の各種シンボル(変数、関数等)のアドレス情報との対応情報等を含む情報である。
ダーゲットマシン10は、デバッグサーバ11等を有する。デバッグサーバ11は、デバッグ対象のプロセスに関する各種のデバッグ処理を実行する。同図では、デバッグ対象として、プロセスP1〜P3の三つのプロセスが起動されている状態が示されている。これらのプロセスは、同一のOS(Operating System)上において起動されていてもよいし、異なるOS上において起動されていてもよい。各プロセスが、異なるOSにおいて起動されている場合とは、ターゲットマシン10において複数の仮想マシンが起動されている場合が一例に相当する。この場合、仮想マシンごとにOSを起動可能であり、更に、OSごとにプロセスを起動することが可能だからである。なお、ターゲットマシン10において複数の仮想マシンが起動される場合においても、起動されるデバッグサーバ11は一つでよい。この場合、デバッグサーバ11は、仮想マシンを管理する、ハイパーバイザ等と呼ばれるプログラムの一部として実装されてもよい。
三つのプロセスに対応して、ホストマシン20では、三つのデバッグクライアント21が起動されている。すなわち、デバッグクライアント21aは、プロセスP1に対応する。デバッグクライアント21bは、プロセスP2に対応する。デバッグクライアント21cは、プロセスP3に対応する。換言すれば、デバッグ情報22aは、プロセスP1に係るプログラムのデバッグ情報22である。デバッグ情報22bは、プロセスP2に係るプログラムのデバッグ情報22である。デバッグ情報22cは、プロセスP3に係るプログラムのデバッグ情報22である。なお、プロセスP1〜P3は、相互に異なるプログラムのプロセスであるとする。
例えば、デバッグクライアント21aに対して、プロセスP1に関するレジスタやメモリ状態の参照指示がユーザによって入力されると、デバッグクライアント21aは、当該参照指示に対応するデバッグコマンドをデバッグサーバ11に送信する。デバッグサーバ11は、当該デバッグコマンドに応じて、プロセスP1に関するレジスタやメモリの状態を取得し、取得された情報をデバッグクライアント21aに返信する。デバッグクライアント21aは、受信された情報を表示させる。この際、デバッグクライアント21aは、デバッグ情報22aを用いて、受信された情報を、ユーザに理解し易い表現形式で表示させる。
デバッグクライアント21b又はデバッグクライアント21cに対してデバッグ指示が入力された場合も、同様の処理フローが実行される。但し、デバッグクライアント21bについてはプロセスP2が、デバッグクライアント21cについてはプロセスP3が、それぞれデバッグ処理の対象とされる。
このように、ユーザは、ターゲットマシン10上において起動されているプロセスについて、ホストマシン20を操作してリモートデバッグを行うことができる。
なお、デバッグクライアント21及びデバッグサーバ11が提供可能なデバッグ機能は、レジスタやメモリ状態の参照に限られない。デバッグクライアント21及びデバッグサーバ11は、ブレークポイントの設定や解除、レジスタの書き換え等、一般的なデバッガが有する機能を提供することができる。
図5は、本発明の実施の形態のデバッグクライアント及びデバッグサーバの機能構成例を示す図である。同図に示されるように、各デバッグクライアント21は、プログラムID取得部211、接続要求送信部212、及びデバッグコマンド要求部213等を有する。プログラムID取得部211は、デバッグ情報22の一部として含まれている、デバッグ対象のプログラムの実行形式ファイル221(の複製)より、当該プログラムの識別子を取得する。本実施の形態において、当該識別子を「プログラムID」と呼ぶ。すなわち、本実施の形態では、ホストマシン20側にも、デバッグ対象のプログラムの実行形式ファイル221が配置(保存)される。
接続要求送信部212は、リモートデバッグのための接続要求をデバッグサーバ11に送信する。当該接続要求には、デバッグ対象のプログラムのプログラムIDが指定される。
デバッグコマンド要求部213は、リモートデバッグのための接続が確立された後、ユーザによる指示入力に応じたデバッグコマンドをデバッグサーバ11に送信する。デバッグコマンド要求部213は、また、送信したデバッグコマンドに応じて返信される応答に含まれている情報を、ホストマシン20の表示装置に表示させる。
一方、デバッグサーバ11は、接続要求受信部111、デバッグ対象検索部112、接続部113、及びデバッグコマンド応答部114等を有する。
接続要求受信部111は、デバッグクライアント21からのリモートデバッグのための接続要求を受信する。例えば、接続要求受信部111は、当該接続要求の受信用のポートを開設し、当該ポート宛の接続要求の受信を待機する。
デバッグ対象検索部112は、ターゲットマシン10において起動されている複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域よりプログラムIDと一致する値が取得されるプロセスを検索する。ここでいうプログラムIDは、接続要求受信部111により受信される接続要求に指定されているプログラムIDである。書き込みが行われない領域とは、例えばread onlyな領域のことである。
接続部113は、デバッグ対象検索部112によって検索されたプロセスと、接続要求に係るデバッグクライアント21との間に接続関係又は対応関係を構築する。例えば、接続部113は、接続要求に係るデバッグクライアント21との通信用に新たなポートを開設する。接続部113は、開設されたポートのポート番号と、検索されたプロセスのプロセスIDとの対応情報を、例えば、メモリ装置103に記録する。プロセスIDとは、プロセスの起動時に、OS(Operating System)によって当該プロセスに対して割り当てられるIDである。
デバッグコマンド応答部114は、デバッグクライアント21からのデバッグコマンドの受信を待機し、受信されたデバッグコマンドに応じた処理を実行する。デバッグコマンド応答部114が実行する処理の対象とされるプロセスは、デバッグコマンドが受信されたポートのポート番号に基づいて判定される。すなわち、当該ポート番号との対応情報がメモリ装置103に記憶されているプロセスIDに係るプロセスが処理対象とされる。
図6は、本発明の実施の形態におけるターゲットマシンのハードウェア構成例を示す図である。同図においてターゲットマシン10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105とを有する。
ターゲットマシン10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってターゲットマシン10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、SDメモリカード、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
以下、デバッグ支援システム1の処理手順について説明する。図7は、デバッグ支援システムが実行する処理手順の一例を説明するための図である。例えば、ユーザによって、いずれかのデバッグ情報22が指定又は選択されて、デバッグクライアント21の起動指示が入力されると、当該デバッグクライアント21に関して、図7の処理が開始される。なお、デバッグ情報22の指定等は、実質的に、デバッグ対象とするプログラム(プロセス)の指定等に相当する。
ステップS101において、デバッグクライアント21のプログラムID取得部211は、指定されたデバッグ情報22に含まれているプログラムの実行形式ファイル221よりプログラムIDを取得する。続いて、接続要求送信部212は、プログラムID取得部211によって取得されたプログラムIDを指定して、リモートデバッグのための接続要求をデバッグサーバ11に送信する(S102)。なお、接続要求の送信先のアドレス情報は、例えば、デバッグクラアイント21の起動時において指定されてもよいし、補助記憶装置102に予め記録されていてもよい。当該アドレス情報には、デバッグサーバ11が開設しているポートのポート番号も含まれる。
一方、デバッグサーバ11の接続要求受信部111は、ターゲットマシン10においてデバッグサーバ11が起動された際に、接続要求の受信用のポートを開設して、接続要求の受信を待機している(S201)。当該ポートを介して、デバッグクライアント21からの接続要求が受信されると、接続要求受信部111は、当該接続要求よりプログラムIDを取り出す(S202)。
続いて、デバッグ対象検索部112は、ターゲットマシン10において起動されている複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域より当該プログラムIDと一致する値が取得されるプロセスを検索する(S203)。ターゲットマシン10において起動されているプロセス及びそのメモリ空間のアドレスは、OSに問い合わせることにより把握可能である。
該当するプロセスが検索されなかった場合(S204でNo)、接続要求受信部111は、接続の拒否を示す応答をデバッグクライアント21に返信する(S205)。なお、該当するプロセスが検索されなかった場合、デバッグ対象検索部112は、所定時間経過後に再度ステップS203の検索を繰り返してもよい。検索の繰り返しは、該当するプロセスが起動されるまで継続されてもよいし、所定回数に限定されてもよい。
一方、該当するプロセス(以下、「対象プロセス」という。)が検索された場合(S204でYes)、接続部113は、対象プロセスをリモートデバッグのデバッグ対象とする論理的な通信路をデバッグクライアント21との間に形成する(S206)。接続部113は、当該通信路を介して接続の許可を示す応答をデバッグクライアント21に返信する。なお、論理的な通信路の形成は、例えば、当該デバッグクライアント21に対応した新たなポートの開設が一例として挙げられる。この場合、接続部113は、新たに開設されたポートのポート番号と、対象プロセスのプロセスIDとの対応情報をメモリ装置103に記録する。これにより、当該プロセスIDに係る対象プロセスと、デバッグクライアント21との接続関係が構築されたことになる。
図8は、デバッグクライアントとデバッグ対象のプロセスとの対応情報の一例を示す図である。同図に示されるように、対応情報115は、ポート番号とプロセスIDとの対応付けを示す情報である。
デバッグサーバ11からの応答が受信されると(S103)、デバッグクライアント21は、応答の内容に応じて処理を分岐させる(S104)。すなわち、接続が拒否された場合(S104でNo)、デバッグクライアント21は、自らを異常終了させる(S105)。したがって、この場合、リモードデバッグを行うことはできない。接続が許可された場合(S104でYes)、デバッグコマンド要求部213は、デバッグサーバ11との間でリモートデバッグのための通信を行う(S106)。当該通信は、ステップS206において形成された通信路を介して行われる。例えば、デバッグコマンド要求部213は、ユーザからの入力される指示に応じたデバッグコマンドをデバッグサーバ11に送信する。
当該デバッグコマンドは、デバッグサーバ11において、ステップS206において開設されたポートを介して受信される。デバッグコマンド応答部114は、デバッグコマンドが受信されたポートのポート番号に対応するプロセスIDを対応情報115に基づいて判定する。デバッグコマンド応答部114は、当該プロセスIDに係る対象プロセスに関して、当該デバッグコマンドを実行する(S207)。例えば、レジスタの値やメモリ状態の取得、ブレークポイントの設定や解除、レジスタの書き換え等が実行される。なお、デバッグコマンドの実行の仕組みについては、公知のデバッガと同様でよい。したがって、その詳細については省略する。
以降、ユーザの指示入力に応じて、ステップS106及びS207が繰り返し実行されることにより、リモートデバッグが行われる。
なお、デバッグクライアント21とデバッグ対象のプロセスとの対応付けの方法は、必ずしも、ポート番号とプロセスIDとの対応付けに限定されない。換言すれば、デバッグクライアント21を識別するための情報は、ポート番号に限定されない。例えば、接続部113は、各デバッグクライアント21に対して一意なセッションIDを割り当て、当該セッションIDとプロセスIDとの対応情報をメモリ装置103に記録するようにしてもよい。この場合、接続要求に対する応答には、当該セッションIDが含まれる。デバッグクライアント21のデバッグコマンド要求部213は、デバッグコマンドと共にセッションIDをデバッグサーバ11に送信する。デバッグサーバ11のデバッグコマンド応答部114は、セッションIDと対応情報とに基づいて対応するプロセスを判定する。なお、プログラムIDがセッションIDとして用いられてもよい。また、この場合、デバッグクライアント21ごとにポートは開設されなくてもよい。すなわち、接続要求の受信用のポートが、各デバッグクライアント21からのデバッグコマンドの受信用として共用されてもよい。セッションIDによって各デバッグクライアント21との論理的な通信路は確保可能だからである。すなわち、デバッグサーバ11は、セッションIDによって、デバッグコマンドの送信元のデバッグクライアント21を識別可能だからである。
続いて、プログラムIDの詳細について説明する。図9は、プログラムIDの第一の例を説明するための図である。
第一の例では、プログラムIDは、実行形式ファイル221の特定の箇所に記録される。例えば、プログラムIDは、ソースコードのコマパイル時にコンパイラによって生成され、実行形式ファイル221の特定の箇所に記録される(埋め込まれる)。当該特定の箇所は、プログラムの実行時において参照のみが行われるセクション(read onlyな領域)、換言すれば、書き込みが行われないセクション内の一部であればよい。セクションとは、実行形式ファイル221内のデータ(すなわち、プログラム)がメモリに配置される際の、配置の単位である。セクションには、例えば、.text、.data、.bss、.rodata等が有る。
.textは、プログラムのうち、機械語の部分を格納するためのセクションである。したがって、当該セクションには書き込みは行われない。.dataは、プログラムのうち、初期値を持つ変数を格納するためのセクションである。したがって、当該セクションには書き込みが行われる。.bssは、プログラムのうち、初期値を持たない変数を格納するためのセクションである。したがって、当該セクションには書き込みが行われる。.rodataは、プログラムのうち、定数を格納するためのセクションである。したがって、当該セクションには書き込みは行われない。
同図の例では、.textの先頭から100バイト目(.text[100])にプログラムIDが記録された例が示されている。なお、図9以降において「PID」は、プログラムIDを示す。
この場合、デバッグクライアント21のプログラムID取得部211は、実行形式ファイル221の実行コードセクションの先頭から100バイト目より、所定のバイト数のプログラムIDを取得する。
また、デバッグサーバ11のデバッグ対象検索部112は、実行形式ファイル221がロードされて生成されたプロセスのメモリ空間(メモリイメージ)221mにおける実行コードセクションの先頭から100バイト目より、所定バイト数のプログラムIDを取得する。すなわち、デバッグ対象検索部112は、プロセスのメモリ空間における一部分のデータが、受信されたプログラムIDと一致するプロセスを検索する。
ところで、実行形式ファイル221を構成する各セクションがメモリ空間のどの位置にロードされるかを示す情報は、実行形式ファイル221には記録されているものの、ロード後のメモリイメージには含まれていない。そして、当該メモリイメージにおいて、各セクションの区切りは必ずしも明確ではない。したがって、デバッグ対象検索部112は、各セクションの開始位置を特定できない可能性がある。そこで、プロセスID取得部が、例えば、プロセスIDの取得時に、プロセスIDが格納されているセクションがロードされるアドレス情報を実行形式ファイル221より読み取るようにしてもよい。接続要求送信部212は、プロセスIDと共に当該アドレス情報を指定して接続要求を送信する。デバッグサーバ11のデバッグ対象検索部112は、指定されたアドレス情報に基づいて、メモリ空間221mにおけるプログラムIDの位置を特定する。
なお、メモリ空間221mにおける各セクションの位置は、デバッグサーバ11のデバッグ対象検索部112が、ターゲットマシン10内に記憶されている実行形式ファイル221を参照して特定してもよい。
続いて、図10は、プログラムIDの第二の例を説明するための図である。第二の例のプログラムIDは、書き込みが行われないセクション内の所定の複数の部分(代表箇所)の値を連結した値によって生成される。
同図の例では、.textの先頭から10バイト目(.text[10])と、100バイト目(.text[100])と、.rodataの先頭から20バイト目(rodata[20])とにおける所定のバイト数のデータを連結することにより、プログラムIDが生成されている。
この場合、デバッグクライアント21のプログラムID取得部211は、実行形式ファイル221の該当部分から取得されるデータを連結してプログラムIDを生成する。
また、デバッグサーバ11のデバッグ対象検索部112は、実行形式ファイル221がロードされて生成されたプロセスのメモリ空間221mにおける該当箇部分から取得されるデータを連結したプログラムIDを生成する。すなわち、デバッグ対象検索部112は、プロセスのメモリ空間における所定部分のデータを連結した値が、受信されたプログラムIDと一致するプロセスを検索する。
第二の例によれば、実行形式ファイル221に予めプログラムIDが記録される必要はない。また、プログラムの複数の部分が連結されることにより、プログラムIDについて、プログラムごとの一意性を高めることができる。
続いて、図11は、プログラムIDの第三の例を説明するための図である。第三の例のプログラムIDは、書き込みが行われないセクションの一部又は全部に対して所定の変換処理を実行することにより生成される。
同図の例では、.textと.rodataとのバイナリデータのハッシュ値がプログラムIDとして算出される例が示されている。ハッシュ関数は、所定のものに限定されない。例えば、MD5が用いられてもよい。また、当該バイナリデータがDES(Data Encryption Standard)等の暗号化アルゴリズムによって暗号化された結果がプログラムIDとされてもよい。
この場合、デバッグクライアント21のプログラムID取得部211は、実行形式ファイル221において書き込みが行われないセクションの所定の一部分又は全部に対して所定の変換処理を実行し、変換処理の結果をプログラムIDとする。
また、デバッグサーバ11のデバッグ対象検索部112は、実行形式ファイル221がロードされて生成されたプロセスのメモリ空間221mにおいて書き込みが行われないセクションの所定の一部分又は全部に対して所定の変換処理を実行し、変換処理の結果をプログラムIDとする。すなわち、デバッグ対象検索部112は、当該変換処理の結果が、受信されたプログラムIDと一致するプロセスを検索する。
第三の例によれば、第二の例に比べて、プログラムのより広範囲な部分に基づいてプログラムIDを生成することができる。したがって、プログラムIDについて、プログラムごとの一意性を更に高めることができる。
上述したように、本実施の形態によれば、デバッグサーバ11は、プログラムIDに基づいて、デバッグクライアント21(デバッグ情報22)と、デバッグ対象のプロセスとを対応付けることができる。したがって、ターゲットマシン10において異なるプログラムに係る複数のプロセスが起動されている場合であっても、各デバッグクライアント21と各プロセスとの関係を正しく構築することができる。その結果、マルチプロセス環境におけるリモートデバッグを適切に実現することができる。例えば、デバッグ対象のプロセス数が増大しても、快適なデバッグ環境を開発者に提供することができる。
また、本実施の形態によれば、デバッグ対象のプロセスとデバッグクライアント21との対応付けに関して、ターゲットマシン10のOS(Operating System)が特別な機能を有している必要はない。したがって、仮想マシン上のプロセスや、システムのブート時にロードされるプロセス等についても、適切にデバッグ対象とすることができる。
また、デバッグサーバ11において、プログラムIDを取得するための処理は、省メモリ及び省CPU時間の手順によって実現することができる。したがって、ハードウェア資源の制約が厳しいターゲットマシン10上でも容易に実装することができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
コンピュータに、
デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、
当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、
検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行させるデバッグ支援プログラム。
(付記2)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域の一部分のデータが前記識別子と一致するプロセスを、検索する付記1記載のデバッグ支援プログラム。
(付記3)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域における複数の部分のデータを連結した値が、前記識別子と一致するプロセスを検索する付記1記載のデバッグ支援プログラム。
(付記4)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域におけるデータに対して所定の変換処理を実行した結果が、前記識別子と一致するプロセスを検索する付記1記載のデバッグ支援プログラム。
(付記5)
デバッグ支援装置であって、
デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手部と、
当該デバッグ支援装置において起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索部と、
検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続部とを有するデバッグ支援装置。
(付記6)
前記検索部は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域の一部分のデータが前記識別子と一致するプロセスを、検索する付記5記載のデバッグ支援装置。
(付記7)
前記検索部は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域における複数の部分のデータを連結した値が、前記識別子と一致するプロセスを検索する付記5記載のデバッグ支援装置。
(付記8)
前記検索部は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域におけるデータに対して所定の変換処理を実行した結果が、前記識別子と一致するプロセスを検索する付記5記載のデバッグ支援装置。
(付記9)
コンピュータが、
デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、
当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、
検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行するデバッグ支援方法。
(付記10)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域の一部分のデータが前記識別子と一致するプロセスを、検索する付記9記載のデバッグ支援方法。
(付記11)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域における複数の部分のデータを連結した値が、前記識別子と一致するプロセスを検索する付記9記載のデバッグ支援方法。
(付記12)
前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域におけるデータに対して所定の変換処理を実行した結果が、前記識別子と一致するプロセスを検索する付記9記載のデバッグ支援方法。
1 リモートデバッグ支援システム
10 ターゲットマシン
11 デバッグサーバ
20 ホストマシン
21 デバッグクライアント
22 デバッグ情報
30 通信回線
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
111 接続要求受信部
112 デバッグ対象検索部
113 接続部
114 デバッグコマンド応答部
211 プログラムID取得部
212 接続要求送信部
213 デバッグコマンド要求部
221 実行形式ファイル
B バス

Claims (6)

  1. コンピュータに、
    デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、
    当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、
    検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行させるデバッグ支援プログラム。
  2. 前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域の一部分のデータが前記識別子と一致するプロセスを、検索する請求項1記載のデバッグ支援プログラム。
  3. 前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域における複数の部分のデータを連結した値が、前記識別子と一致するプロセスを検索する請求項1記載のデバッグ支援プログラム。
  4. 前記検索手順は、前記複数のプロセスの中から、当該プロセスに係るメモリ空間において書き込みが行われない領域におけるデータに対して所定の変換処理を実行した結果が、前記識別子と一致するプロセスを検索する請求項1記載のデバッグ支援プログラム。
  5. デバッグ支援装置であって、
    デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手部と、
    当該デバッグ支援装置において起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索部と、
    検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続部とを有するデバッグ支援装置。
  6. コンピュータが、
    デバッグ対象のプロセスの識別子が指定されたリモートデバッグの接続要求を受信する受信手順と、
    当該コンピュータにおいて起動されている複数のプロセスの中から、前記識別子と一致するプロセスを検索する検索手順と、
    検索されたプロセスを、前記接続要求に係るデバッグ対象とする接続手順とを実行するデバッグ支援方法。
JP2010224366A 2010-10-01 2010-10-01 デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法 Pending JP2012079130A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010224366A JP2012079130A (ja) 2010-10-01 2010-10-01 デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
US13/165,173 US20120084757A1 (en) 2010-10-01 2011-06-21 Computer-readable, non-transitory medium saving debugging support program, debugging support device, and debugging support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010224366A JP2012079130A (ja) 2010-10-01 2010-10-01 デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法

Publications (1)

Publication Number Publication Date
JP2012079130A true JP2012079130A (ja) 2012-04-19

Family

ID=45890929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010224366A Pending JP2012079130A (ja) 2010-10-01 2010-10-01 デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法

Country Status (2)

Country Link
US (1) US20120084757A1 (ja)
JP (1) JP2012079130A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014099167A (ja) * 2012-10-19 2014-05-29 Loarant Corp リモート操作システム、無線通信ユニット、及びリモートデバッグシステム
JP2016528650A (ja) * 2013-08-22 2016-09-15 オラクル・インターナショナル・コーポレイション クラウドベースのターゲットデバッグ
WO2018027018A1 (en) * 2016-08-03 2018-02-08 Intel Corporation Remote debugging and management

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103197951B (zh) * 2012-01-04 2017-11-03 腾讯科技(深圳)有限公司 一种搭建应用运行环境的方法及装置
US9251039B2 (en) 2012-02-17 2016-02-02 Microsoft Technology Licensing, Llc Remote debugging as a service
TW201407369A (zh) * 2012-08-15 2014-02-16 Hon Hai Prec Ind Co Ltd 手持設備及其與電子產品間的通信方法
CN103856361B (zh) * 2012-11-29 2017-10-10 腾讯科技(深圳)有限公司 实现远程调试的方法及***
JP6244941B2 (ja) * 2014-01-28 2017-12-13 株式会社リコー 起動制御装置、通信システム、プログラム、及び起動制御方法
US9740593B2 (en) * 2015-01-08 2017-08-22 International Business Machines Corporation Comparative program execution through control of two or more debug sessions to automatically determine execution differences
JP2017191508A (ja) * 2016-04-14 2017-10-19 富士通株式会社 情報処理装置および接続情報設定プログラム
US10725890B1 (en) * 2017-07-12 2020-07-28 Amazon Technologies, Inc. Program testing service
GB201905835D0 (en) * 2019-04-26 2019-06-12 Ibm On-premise and off-premise debugging
CN111090578B (zh) * 2019-10-12 2024-05-10 中国平安人寿保险股份有限公司 工程开发联调方法、装置、计算机设备及存储介质
CN111064769A (zh) * 2019-11-06 2020-04-24 江苏三希科技股份有限公司 一种电量集中器的远程调试方法、***及设备
CN117312102B (zh) * 2023-11-29 2024-02-13 上海华立软件***有限公司 调试方法、***、设备及计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325732A (ja) * 1994-05-31 1995-12-12 Mitsubishi Electric Corp マルチプロセスのデバッグ方法
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JP2000155692A (ja) * 1998-11-18 2000-06-06 Toshiba Corp 計算機システム及びネットワークシステム並びに記録媒体
JP2006185360A (ja) * 2004-12-28 2006-07-13 Sony Computer Entertainment Inc プログラムデバッグ装置、プログラムデバッグ方法及びプログラム
JP2010204955A (ja) * 2009-03-03 2010-09-16 Internatl Business Mach Corp <Ibm> プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325732A (ja) * 1994-05-31 1995-12-12 Mitsubishi Electric Corp マルチプロセスのデバッグ方法
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JP2000155692A (ja) * 1998-11-18 2000-06-06 Toshiba Corp 計算機システム及びネットワークシステム並びに記録媒体
JP2006185360A (ja) * 2004-12-28 2006-07-13 Sony Computer Entertainment Inc プログラムデバッグ装置、プログラムデバッグ方法及びプログラム
JP2010204955A (ja) * 2009-03-03 2010-09-16 Internatl Business Mach Corp <Ibm> プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014099167A (ja) * 2012-10-19 2014-05-29 Loarant Corp リモート操作システム、無線通信ユニット、及びリモートデバッグシステム
JP2016528650A (ja) * 2013-08-22 2016-09-15 オラクル・インターナショナル・コーポレイション クラウドベースのターゲットデバッグ
WO2018027018A1 (en) * 2016-08-03 2018-02-08 Intel Corporation Remote debugging and management
US11119839B2 (en) 2016-08-03 2021-09-14 Intel Corporation Remote debugging and management
US11921569B2 (en) 2016-08-03 2024-03-05 Intel Corporation Remote debugging and management

Also Published As

Publication number Publication date
US20120084757A1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
JP2012079130A (ja) デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
US11868785B2 (en) Application program page processing method and device
US8464242B2 (en) Virtualization of configuration settings
US20120047486A1 (en) Optimized implementation of breakpoint in java debugger agent
US20100125554A1 (en) Memory Recovery Across Reboots of an Emulated Operating System
US10929149B2 (en) Method and system for updating firmware
RU2628921C1 (ru) Система и способ выполнения антивирусной проверки файла на виртуальной машине
RU2635271C2 (ru) Способ категоризации сборок и зависимых образов
US9516094B2 (en) Event-responsive download of portions of streamed applications
US10366226B2 (en) Malicious code analysis device and method based on external device connected via USB cable
US9235389B2 (en) Method of providing embedded software development tool for supporting embedded software development environment based on native building, and apparatus thereof
US10097567B2 (en) Information processing apparatus and identifying method
US20140157231A1 (en) Modifying a Middleware
US9916149B2 (en) Information processing apparatus, control method for information processing apparatus, and storage medium of program for executing control method
CN110955598B (zh) 一种内核态程序的断点处理方法及装置
JP6023317B2 (ja) 情報処理装置、および、情報処理方法
US11263082B2 (en) Data recovery of guest virtual machines
WO2017020460A1 (zh) 一种集成插件的方法和装置
JP2007206933A (ja) 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法
JP2006294041A (ja) 移動通信機器におけるアプリケーションをアップデートするためのシステム、およびその方法
US10545704B2 (en) Image forming apparatus and control method to update an application in an image forming apparatus
WO2015165057A1 (zh) 一种硬盘执行应用代码的方法及装置
JP5952218B2 (ja) 情報処理装置および情報処理方法
CN108446186B (zh) 从加壳Android应用程序中恢复Dex源文件的方法
JPWO2014118940A1 (ja) 計算機装置及び計算機装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140722