JP2016128961A - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP2016128961A
JP2016128961A JP2015003081A JP2015003081A JP2016128961A JP 2016128961 A JP2016128961 A JP 2016128961A JP 2015003081 A JP2015003081 A JP 2015003081A JP 2015003081 A JP2015003081 A JP 2015003081A JP 2016128961 A JP2016128961 A JP 2016128961A
Authority
JP
Japan
Prior art keywords
information
address
search
symbol
extraction
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
JP2015003081A
Other languages
English (en)
Other versions
JP6534814B2 (ja
Inventor
匡 山中
Tadashi Yamanaka
匡 山中
佐藤 崇
Takashi Sato
崇 佐藤
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.)
NEC Communication Systems Ltd
Original Assignee
NEC Communication Systems 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 NEC Communication Systems Ltd filed Critical NEC Communication Systems Ltd
Priority to JP2015003081A priority Critical patent/JP6534814B2/ja
Publication of JP2016128961A publication Critical patent/JP2016128961A/ja
Application granted granted Critical
Publication of JP6534814B2 publication Critical patent/JP6534814B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】シンボルである変数等についての情報を、確実に、容易に、しかも短時間に取得すること。
【解決手段】入力されたデバッグ情報を以降の処理用の信号にする手段と、入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする手段とを備える。そして、前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報をを生成する手段を備える。さらに、前記検索条件により、前記デバッグ情報について前記検索をし、前記項目について、前記検索により検索された内容に対応する抽出情報の抽出をする手段と、前記抽出情報の出力をする手段を備える。
【選択図】 図1

Description

本発明は、情報を検索及び抽出して出力する情報処理装置、情報処理方法及び情報処理プログラムに関する。
ソフトウェア開発の際には、そのソフトウェアを動作させ又は組み込むハードウェアの構成要素に関する情報が必要な場合がある。
ハードウェアの構成要素に関する情報として、代表的なものに、RAM(ランダムアクセスメモリ)に入力された値(以下、「RAM値」という。)がある。RAM値を取得する際に、システムやハードウェアの制約により、指定したアドレスのRAM値のみが取得できる簡易なRAMモニタ(以下、RAM値をモニタする装置をいう。)しか利用できないことがしばしばある。この場合、システム上で動作しているソフトウェアの状態をRAMモニタから取得するには、RAMに配置される変数のアドレスとサイズ等を、正しく設定する必要がある。
また、変数のアドレスとサイズは、プログラムが正しくコンパイルできているか否かの確認にも使用される。例えば、変数サイズが正しいサイズとなっていることの確認や、構造体メンバが指定したアラインに配置(構造体メンバのアドレスを処理系にとって最適な境界に整列)されていることの確認等である。
そのため、変数に関するアドレスやサイズ等の情報を確実に求めることが重要になる。
一般的に、C言語によるプログラム開発では、静的領域に宣言された変数のアドレスとサイズは、プログラムリンク時にマップファイルを出力することで知ることができる。マップファイルにはプログラムに定義されている変数のアドレスとサイズが記述されており、変数の型がchar、int、longといった単純型の場合は、マップファイルから変数のアドレスとサイズを得ることができる。
一方、特許文献1には、値の四則演算手段をデバッガに持たせることにより、変数が構造を持つ場合でも、変数シンボル名称、タイプシンボル名称、タイプフィールド名称を使い、最終アクセス対象のアドレスを計算式の形で記述できるということが述べられている。
ここで、本発明に関連して、正規表現を用いた文字列のパターンマッチングについて以下に説明する。例えば非特許文献1に記述されているように、正規表現とは、文字列の集合を一つの文字列で表現する方法の一つであり、テキストエディタ、ワードプロセッサをはじめとするアプリケーションソフトでパターンマッチ文字列を表すために使用されている。ほとんどのプログラミング言語では、構文又はライブラリによって正規表現を使うことができるようになっている。構文やライブラリに正規表現を備えたプログラミング言語やユーティリティとして、grep、AWK、sed、Perl、Tcなどがある。また、プログラミング言語の開発などに用いるlexも正規表現を使う。正規表現を用いた文字列はパターンマッチングにより検索することができる。
また、本明細書中における「シンボル」という語は、情報工学やソフトウェア工学で用いられる用語であり、シンボル名という名前の付けられた、データに含まれる一塊の記号やプログラミングで用いられる内容を表わす。
特開平08−006812号公報
ウィキペディア フリー百科事典、"正規表現"、[平成26年11月25日検索]、インターネット(URL:http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE)
しかし、前述の、一般的にC言語によるプログラム開発において用いられる上記方法では、変数の型が構造体、共用体、ビットフィールド又は配列の場合、マップファイルには変数の先頭アドレスと変数全体のサイズのみが出力される。そのため、変数に含まれている各要素(構造体や共用体のメンバ、並びに配列要素)のアドレスとサイズをマップファイルから知ることはできない。そのため、このような場合は、ソースコードを読み解き、各要素のオフセットアドレス(相対的アドレス)を手計算で算出し、マップファイルに出力される変数の先頭アドレスとオフセットアドレスを加算して求めなければならなかった。
また、特許文献1に記述された方法においては、変数が構造を持つ場合において、最終アクセス対象のアドレスを演算式の形でシンボリックに指定することができるとしても、この作業は技術的にハードルが高い難しい作業である。
本発明は、変数等のシンボルについての情報を、確実に、容易に、しかも短時間に取得することができる情報処理装置、情報処理方法及び情報処理プログラムを提供することにある。
入力されたデバッグ情報を以降の処理用の信号にするデバッグ情報入力手段と、入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする検索条件入力手段を備える。そして、前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成する前処理手段を備える。さらに、前記検索条件により、前記デバッグ情報について前記検索をし、前記項目について、前記検索により検索された内容に対応する抽出情報の抽出をする検索抽出手段と、前記抽出情報の出力をする抽出情報出力手段を備える。
本実施形態の情報処理装置により、変数等のシンボルについての情報を、確実に、容易に、しかも短時間に取得することができる。
第一実施形態の情報処理装置の構成と動作を表わす概念図である。 第二実施形態の情報処理装置の構成を表わす概念図である。 正規表現を用いた検索条件の入力例である。 第二実施形態の情報処理装置における情報処理のフローを表わす概念図である。 第三実施形態の情報処理装置の構成を表わす概念図である。 第三実施形態の情報処理装置における情報処理のフローを表わす概念図である。 図6のS304のステップにおける処理の例を表わす概念図である。 処理後のデータの状況の例を示す概念図(その1)である。 処理後のデータの状況の例を示す概念図(その2)である。 処理後のデータの状況の例を示す概念図(その3)である。 処理後のデータの状況の例を示す概念図(その4)である。 処理後のデータの状況の例を示す概念図(その5)である。 処理後のデータの状況の例を示す概念図(その6)である。 処理後のデータの状況の例を示す概念図(その7)である。 第四実施形態の情報処理装置の構成を表わす概念図である。 入力されるソースコードの例を示す概念図である。 第四実施形態の情報処理装置における情報処理のフローを表わす概念図である。
第一実施形態は、本発明の最小構成の情報処理装置に関する実施形態である。
[構成と動作]
図1は、本実施形態の情報処理装置の構成と動作を表わす概念図である。
本実施形態の情報処理装置1は、抽出情報出力装置90を備える。
抽出情報出力装置90は、デバッグ情報入力部100と、検索条件入力部110と、抽出項目指定部160と、前処理部150と、検索抽出部120と、抽出情報出力部140とを備える。
デバッグ情報入力部100は、図示しないコンパイラ/リンカによるコンパイル/リンクにより出力される、図示しないデバッガによるデバッグのために用いる情報(以下、「デバッグ情報」という。)を、以降の処理用の信号にする。デバッグ情報を含む信号は、前処理部150に送られる。
検索条件入力部110は、入力された検索条件を以降の処理用の信号にする。検索条件を含む信号は、検索抽出部120に送られる。
前処理部150は、デバッグ情報入力部100中に含まれる、シンボルのオフセットアドレスを用いて、そのシンボルのアドレスを求め、そのシンボルと関連付ける。そして、そのシンボルと関連付けたアドレスを含むアドレス情報を生成する。アドレス情報を含む信号は、検索抽出部120に送られる。
検索抽出部120は、検索条件入力部110から送られた検索条件により、前処理部150から送られたアドレス情報を検索し、検索した内容について、該当する情報を抽出する。抽出された情報を含む信号は、抽出情報出力部140に送られる。
抽出情報出力部140は、検索抽出部120から送られた情報をもとに、抽出された情報を出力する。
[効果]
本実施形態の情報処理装置は、シンボルについての情報を、確実に、容易に、しかも短時間に取得することができる。
<第二実施形態>
第二実施形態は、デバッグ情報に含まれる文字列の中から検索条件として入力される正規表現により記述された文字列と一致するものを検索し、その検索された文字列に対応する情報を抽出する情報処理装置に関する実施形態である。
[構成と動作]
図2は、本実施形態の情報処理装置の構成を表わす概念図である。
本実施形態の情報処理装置1は、抽出情報出力装置90を備える。
抽出情報出力装置90は、デバッグ情報入力部100と、検索条件入力部110と、抽出項目指定部160と、前処理部150と、検索抽出部120と、処理部130と、抽出情報出力部140とを備える。
デバッグ情報入力部100は、入力されたデバッグ情報を以降の処理用の信号にする。その信号は、前処理部150に送られる。
検索条件入力部110は、入力された検索条件を以降の処理用の信号にする。その信号はは、検索抽出部120に送られる。
抽出項目指定部160は、検索抽出部120において、検索される内容について抽出する、オフセットアドレスを用いて算出したアドレスを含む抽出項目を指定する。指定された抽出項目を含む信号は検索抽出部120に送られる。
前処理部150は、デバッグ情報入力部100から送られるデバッグ中に含まれる、シンボルのオフセットアドレスを用いて、そのシンボルのアドレスを求め、そのシンボルと関連付ける。また、デバッグ情報中に含まれるオフセットアドレス以外の情報の一部について、シンボルと関連付ける。これらの、シンボルと関連付けられた情報を含む信号は、検索抽出部120に送られる。
検索抽出部120は、検索条件入力部110から送られる検索条件により、前処理部150から送られたアドレス情報について検索する。そして、抽出項目指定部160において指定された抽出項目について、検索された内容に対応する情報を抽出する。抽出された情報は処理部130に送られる。
処理部130は、検索抽出部120から送られた情報を処理する。処理後の信号は、抽出情報出力部140に送られる。
抽出情報出力部140は、処理部130から送られた情報をもとに、抽出された情報を出力する。
デバッグ情報入力部100から入力されるデバッグ情報は、図示しないデバッガや、やはり図示しないデバッガ情報を記録した記録装置等から入力される。
そのデバッグ情報は、使用するデバッガの種類により異なる。デバッグ情報は、シンボル名を利用してデバッグを行うシンボリックデバッガでデバッグを行う場合には、典型的には、シンボル情報、型情報及びソースコードと行番号情報である。シンボル情報は、シンボルの、シンボル名、アドレス、サイズ、種類及びスコープなどである。型情報は、型の、名前、種類、サイズ、リンクされている他の型、子供型、オフセット、関数の呼び出し規約等である。
デバッグ情報は、基本的にバイナリ形式で記述されているが、シンボル名はデバッグ情報に文字列として格納されている。
検索条件入力部110から入力される検索条件は、コンピュータ等のキーボードにより作業者の操作により入力されても、検索条件を記録させておいた図示しない外部記録装置からの信号により入力されても構わない。
その検索条件における検索対象は文字列により記述される。検索対象は、出力させたいシンボルの名前(変数名、メンバ名、配列要素等)をC言語表記で正規表現により記述したものを用いる。図3は正規表現を用いた検索対象の入力例である。同図には、var1から始まる変数を正規表現により指定する場合の入力例を示してある。
検索抽出部120における検索及び抽出は、デバッグ情報入力部100から送られるデバッグ情報、検索条件入力部110から送られる検索条件及び抽出項目指定部160から送られる抽出項目のすべてがそろってから行う。これらの情報は、典型的には、図示しない記録部に記録させておき、その記録させておいた情報を読み込むことにより行う。
検索抽出部120における検索は、検索対象を表わす文字列と、デバッグ情報に格納された文字列との一致を判定することにより行う。一致する場合に、その一致した文字列に対応する情報を抽出する。検索対象を表わす文字列を正規表現により記述することにより、ソフトウェア開発において共通化され広く一般的に用いられる、文字列の一致による検索プログラムを用いることができる。これにより、単なる情報の羅列に見えるデバッグ情報の中から、検索条件の文字列を容易に検索し、その文字列に対応する情報を抽出することができる。
抽出項目についての抽出情報の抽出及び出力は、例えば、以下のように行うことができる。
変数の型が単純型の場合は、検索対象として入力された変数を表わす文字列のシンボル名と文字列が一致したシンボル名についてのアドレス等を抽出し、出力する。
変数の型が構造体、共用体、ビットフィールドの場合には、これらについて抽出した情報よりこれらが持つメンバのオフセットアドレス(相対的アドレス)を取得し、メンバのアドレスを自動算出し出力する。構造体が構造体で構成され入れ子となっている場合には、さらにその子となる構造体のメンバとオフセットを取得しアドレスを自動算出し出力する。
また、変数やそのメンバが配列の場合には、配列要素毎にアドレスを出力する。
メンバ名や配列の要素名(シンボル名)はC言語表記で出力し、各要素に対して詳細アドレス情報(アドレスとサイズ、ビットフィールドの場合にはビット位置とビット幅)を出力し、開発者にとって直観的に理解できる形式とする。また抽出情報は膨大な量となることもある。このような場合は、シンボル名による検索、絞りこみ機能を持たせる方がより好ましい。この際の検索条件は正規表現で記述することがでる。絞りこみ機能により、必要な変数情報のみを絞り込んで出力することができる。構造体情報が幾重にも入れ子となっている場合でも、末端のメンバ名を検索条件として与えることで、そのメンバを含む変数の情報を取得することができる。
抽出情報はバイナリ形式で記述されているので、文字列に変換されて出力される。この際の変換には、一般に広く用いられている変換ソフトウェアを用いる。
抽出項目指定部160において指定される抽出項目は、入力により指定しても、予め設定された値を用いてもよい。この際の入力は、コンピュータ等のキーボードにより作業者により行われても、予め抽出項目を記録させておいた、図示しない記録装置からの信号により行われても構わない。
[処理フロー]
図4は本実施形態の情報処理装置における情報処理のフローを表わす概念図である。
まず、デバッグ情報入力部100は、入力されたデバッグ情報を以降の処理用の信号Vaにする(S201)。信号Vaは、前処理部150に送られる。
次に、検索条件入力部110は、入力された検索条件を以降の処理用の信号Vbにする(S202)。信号Vbは検索抽出部120に送られる。
そして、抽出項目指定部160において、検索抽出部120における検索対象について抽出される抽出項目が指定される(S203)。指定された抽出項目を含む信号Vcは、検索抽出部120に送られる。
前処理部150は、デバッグ情報入力部100から送られるデバッグ中に含まれる、シンボルのオフセットアドレスを用いて、そのシンボルのアドレスを求め(S204)、そのシンボルと関連付ける。また、デバッグ情報中に含まれる、オフセットアドレス以外の情報の一部について、シンボルと関連付ける。そして、シンボルと関連付けたアドレスを含むアドレス情報を生成する。アドレス情報を含む信号Vdは、検索抽出部120に送られる。
検索抽出部120は、検索条件入力部110から送られた検索条件をもとに、前処理部150から送られたアドレス情報について検索し、検索条件に合致する内容を求める。合致する内容がある場合には、抽出項目指定部160より送られた抽出項目について、その合致した内容に対応する情報を抽出する。(S205)。抽出した情報を含む信号Veは、処理部130に送られる。
処理部130は、検索抽出部120から送られた情報を出力させるための信号Vfに処理する(S206)。信号Vfは抽出情報出力部140に送られる。
抽出情報出力部140は、処理部130から送られた上記信号をもとに、抽出された情報を出力する(S207)。
同図において、S201乃至S203のステップは順番を入れ替えることもできる。
[効果]
本実施形態の情報処理装置は、まず、第一実施形態の情報処理装置と同様に、変数等のシンボルについての情報を、確実に、容易に、しかも短時間に取得することができる。
本実施形態の情報処理装置は、手作業を必要とせず、また特許文献1に記載された方法のような作業の困難性もないので、これらの効果のうち、シンボルについての情報を容易に、短時間に取得することができる点については特に補足しない。以下には、これらの効果のうち、シンボルについての情報を確実に取得できる点について補足説明する。
まず、本実施形態の情報処理装置は、シンボルである変数及びその要素が構造体である場合にも、そのアドレスを、確実に知ることができる。たとえば、構造体メンバのオフセットアドレスはコンパイル時のオプションに依存したアドレス境界へアライメントされることがある。この結果、メンバ間に予期せぬパディングが発生することがあるが、ソースコードを読むだけではパディングの発生を予見することは難しい。本実施形態の情報処理装置で用いるデバッグ情報における構造体情報には、アライメント後のオフセットアドレスが記録されているため、確実なメンバアドレスを取得することができる。そのため、本実施形態の情報処理装置により取得されたアドレスは、従来の手作業より取得されたアドレスよりも、格段に高い信頼性を有する。
それに加えて、本実施形態の情報処理装置は、文字列の一致により検索するので、構造体の情報がさらに構造体の情報を含み、幾重にも入れ子となっている場合でも、末端のメンバ名を検索条件とすることで、そのメンバを含む変数のアドレスを取得できる。
この効果を、特許文献1に記述された方法及び一般的なシンボリックデバッガを用いた場合と比較して具体的に説明すると下記のようになる。
一般的なシンボリックデバッガば、例えば、シンボルを表わす情報としてvar1.m_union.m_bitf.m_bitf1を入力すれば、そのシンボルのアドレス等情報を取得できる。また、var1が分かっていればそこから“var1”から“var1.m_union”を導き出し、それから“var1.m_union.m_bitf”を導き出し、さらにそれから“var1.m_union.m_bitf.m_bitf1”を導き出すことも可能である。しかし、“m_bitf1”のみが分かっている状況で、“var1.m_union.m_bitf.m_bitf1”を導き出すことはできない。そのため、該当するシンボルのアドレス等情報を求めることはできない。
また、特許文献1に記述された方法では、例えばシンボルを表わす情報として“var1.m_union.m_bitf.m_bitf1”を指定すれば望みのアドレス0x0800010が取得できるとされている。しかしながら、この“var1.m_union.m_bitf.m_bitf1”を導き出すにはソースコードを読み解く必要があり、構造が複雑であればあるほどその作業が困難となる。
本実施形態の情報処理装置は、文字列の一致によりシンボルを検索し、そのシンボルに対応する情報を抽出する。そのため、シンボルを表わす情報として“m_bitf1”を指定するだけで容易に“var1.m_union.m_bitf.m_bitf1”を導き出し、それに対応する目的の情報の取得を確実に行うことができる。この効果は、上記の、一般的なシンボリックデバッガによる方法や特許文献1に記載された方法では得られない。
<第三実施形態>
第三実施形態は、シンボルのアドレス及びサイズを含む情報の詳細マップを生成する情報処理装置に関する実施形態である。
[構成と動作]
図5は、本実施形態の情報処理装置の構成を表わす概念図である。
本実施形態の情報処理装置1は、抽出情報出力装置90を備える。
抽出情報出力装置90は、デバッグ情報入力部100と、前処理部150と、検索条件入力部110と、抽出項目指定部160と、検索抽出部120と、処理部130と、抽出情報出力部140とを備える。
デバッグ情報入力部100は、入力されたデバッグ情報を以降の処理用の信号にする。その信号は、前処理部150に送られる。
前処理部150は、デバッグ情報入力部100から送られたデバッグ情報を、検索抽出部120における検索に適した情報に変換する。前処理部150は、例えば、プログラムに含まれる全変数のアドレスとサイズの情報を作成する。変数の型が構造体、共用体、ビットフィールド、配列の場合には、要素毎に詳細アドレス情報(アドレスとサイズ、ビットフィールドの場合はビット位置とビット幅)を作成する。作成された情報を含む信号は、検索抽出部120に送られる。
検索条件入力部110からは、後に例示する詳細マップファイルに出力させたいシンボルのシンボル名(変数名、メンバ名、配列要素)がC言語表記で記述され、入力される。このとき検索対象は正規表現により記述される。検索条件入力部110は、入力された検索条件を、以降の処理用の信号にする。その信号は、検索抽出部120に送られる。
抽出項目指定部160は、検索抽出部120において抽出する抽出項目を指定する。指定された抽出項目は検索抽出部120に送られる。
抽出項目指定部160は、検索抽出部120において抽出する抽出項目を指定する。指定された抽出項目は検索抽出部120に送られる。
検索抽出部120は、検索条件入力部110から送られた検索条件により、前処理部150から送られた情報を検索する。検索条件として設定されたシンボル名が検索された場合に、そのシンボル名について、抽出項目に該当する情報を抽出する。抽出項目を含む信号は処理部130に送られる。
処理部130は、検索抽出部120から送られた情報を処理し、後に例を示す詳細マップを出力するための信号にする。その信号は、抽出情報出力部140に送られる。
抽出情報出力部140は、処理部130から送られた情報をもとに、詳細マップを出力する。
デバッグ情報、検索及び抽出、抽出情報の出力、検索条件及び抽出項目についての本実施形態における説明以外の説明は、第二実施形態の情報処理装置の説明と同様である。従い、その説明を省略する。
[処理フロー]
図6は、本実施形態の情報処理装置における情報処理のフローを表わす概念図である。
まず、デバッグ情報入力部100は入力されたデバッグ情報を以降の処理用の信号Vaにする(S301)。信号Vaは、検索抽出部120に送られる。
次に、検索条件入力部110は、入力された検索条件を以降の処理用の信号Vbにする(S302)。信号Vbは検索抽出部120に送られる。
そして、抽出項目指定部160において、検索抽出部120における検索対象について抽出される抽出項目が指定される(S303)。指定された抽出項目を含む信号Vcは、検索抽出部120に送られる。
次に、前処理部150は、デバッグ情報入力部100から送られたデバッグ情報を、検索抽出部120における検索に適した情報に変換する(S304)。本処理については後述する。変換された情報を含む信号Vdは、検索抽出部120に送られる。
検索抽出部120は、検索条件入力部110から送られた検索条件をもとに、前処理部120から送られた情報について検索し、検索条件に合致する内容を求める。合致する内容がある場合には、抽出項目指定部160より送られた抽出項目について、その合致した内容に対応する情報を抽出する。(S305)。抽出した情報を含む信号Veは、処理部130に送られる。
処理部130は、検索抽出部120から送られた情報を出力させるための信号Veに処理する(S306)。信号Vfは抽出情報出力部140に送られる。
抽出情報出力部140は、処理部130から送られた上記信号をもとに、抽出された情報を出力する(S307)。
同図において、S301乃至S304のステップは、S302がS301の後になるという条件のもとに、それらの順番を入れ替えることもできる。
図7は、図6のS304のステップにおける処理の例を表わす概念図である。ここでは、シンボルのすべてのメンバについて、アドレス、サイズ、ビット位置及びビット幅について表示する詳細情報一覧データを求める場合を示す。この場合の詳細情報一覧が、上述の、前処理部150が変換する、検索抽出部120における検索に適した情報である。
まず、シンボルの基本アドレス(シンボルのメンバではなく最上位のシンボルのアドレスをいう。)を、デバッグ情報を検索し、抽出する(S321)。
次に、シンボルについて、1階層下のメンバがあるかを判定する(S322)。
1階層下のメンバがある場合には、そのうちの一を特定する(S323)。1階層下のメンバがない場合には終了する。
そして、特定したメンバについて、オフセットアドレスとメンバの型を、デバッグ情報を検索し抽出する(S324)。
次に、そのメンバについて、基本アドレスにオフセットアドレスを足し合わせて、アドレスを求める(S325)。アドレスは、そのメンバのシンボル名と関連付けて記録される。
さらに、S322において求めたメンバの型が、ビットフィールドかを判定する(S326)。
メンバの型がビットフィールドであると判定した場合は、アドレス、サイズ、ビット位置及びビット幅を、そのメンバのシンボル名と関連づけて記録する(S327)。その後、S330に進む。
メンバの型がビットフィールドではないと判定した場合には、そのメンバの型が構造型かを判定する(S328)。
そのメンバの型が構造型でない場合には、アドレス及びサイズを、そのメンバのシンボル名と関連付けて記録する(S329)。その後330に進む。
そのメンバの型が構造型の場合には、S323に進む。。
次に、同じ階層のメンバについて、アドレスが未記録のメンバがあるか判定する(S330)。
同じ階層のメンバについて、アドレスが未記録のメンバがあると判定された場合には、その未記録のメンバのうちの一を特定し、その特定したメンバについて以降の処理を行うことを決める(S331)。そして、S324に進む。
同じ階層のメンバについて、アドレスが未記録のメンバがないと判定された場合には、一つ上の階層のメンバについて、アドレスが未記録のメンバがあるかを判定する(332)。
一つ上の階層のメンバについて、アドレスが未記録のメンバがある場合には、そのメンバのうちの一を特定し、その特定されたメンバについて以降の処理を行うことを決める(S333)。そして、S323に進む。
一つ上の階層のメンバについて、アドレスが未記録のメンバがない場合には、さらに上の階層のメンバについて、アドレスが未記録のメンバがあるかを判定する(S334)。
さらに上の階層のメンバについて、アドレスが未記録のメンバがあると判定された場合には、その未記録のメンバのうちの一を特定し、その特定したメンバについて以降の処理を行うことを決める(S335)。そして、S323に進む。
さらに上の階層のメンバについて、アドレスが未記録のメンバがないと判定された場合には、終了する。
こうして、シンボルについてのすべてのメンバについて、アドレス及びサイズ、並びに型がビットフィールドの場合におけるビット位置及びビット幅が、シンボル名と関連づけて記録される。
図8a乃至図8gは、図7に記載したいくつかの処理について、処理後のデータの状況の例を示す概念図である。このデータは出力されず前処理部150の図示しない記録部に記録されるだけのものでもよいが、ここでは理解容易のため、そのデータが出力された場合を示してある。
また、同図では、シンボルが以下の内容の場合について例示してある。
・シンボル名var1のすべてのメンバについて、アドレス、サイズ、ビット位置及びビット幅について表示する詳細情報一覧を表示する。この詳細情報一覧が上述の「検索抽出部120における検索に適した情報」である。
・var1は、m_structとm_unionの2つのメンバをもつ。
・m_structはm_struct[0]とm_struct[1]の2つの配列を持つ。
・m_struct[0]は、m_str1、m_str2及びm_str3の3つのサブメンバをもつ。
・m_struct[1]は、m_str1、m_str2及びm_str3の3つのサブメンバをもつ。
・m_unionは、m_bitfとm_arrayの2つのサブメンバをもつ。
・m_bitfは、m_bitf1、m_bitf2及びm_bitf3の3個のビットフィールドで表されたサブメンバをもつ。
・m_arrayは、m_array[0]、m_array[1]、m_array[2]及びm_array[3]の4つの配列をもつ。
・var1.m_union.m_bitf.m_bitf3とvar1.m_union.m_array.m_array[0]は共用体を構成する。
図8aは、S321の処理後のデータの状況を表わす概念図である。シンボル名var1について基本アドレスが抽出されている。
図8bは、1回目のS324の処理後のデータの状況を表わす概念図である。シンボル名がvar1.m_struct[0]のメンバについて、オフセットアドレスと型が表示されている。
図8cは、1回目のS325の処理後のデータの状況を表わす概念図である。シンボル名がvar1.m_struct[0]のメンバについて、アドレスと型が表示されている。
図8dは、同図に示した時点でのデータの状況を表わす概念図である。var1.m_struct[0].m_str1、var1.m_struct[0].m_str2及びvar1.m_struct[0].m_str3のシンボル名をもつ3つのメンバについて、アドレスとサイズが表示されている。
図8eは、同図に示した時点でのデータの状況を表わす概念図である。さらに、var1.m_struct[1].m_str1、var1.m_struct[1].m_str2及びvar1.m_struct[1].m_str3のシンボル名をもつ3つのメンバについて、アドレスとサイズが表示されている。
図8fは、同図に示した時点でのデータの状況を表わす概念図である。3つのビットフィールドで表されたメンバについて、アドレス、サイズ、ビット位置及びビット幅が表示されている。
こうして、図7に概念図を表わした処理を順次行うことにより、最終的には、図8gに概念図を表わした内容のデータが記録され、処理が終了する。
なお、図8gに表わしたデータにおいて、var1.m_union.m_bitf.m_bitf3とvar1.m_union.m_array.m_array[0]とのアドレスが同じなのは、この2つのシンボルが同じ共用型のためである。
抽出情報出力部140において出力される詳細マップの内容は、次の場合には、同図(d)に記載した内容と同じになる。
・検索条件入力部110において、シンボル名var1のすべてのメンバについて検索を行うという条件を入力する。
・さらに、抽出項目指定部160において、シンボル名、アドレス、サイズ、ビット位置及びビット幅について抽出することを指定する。
もちろん、検索条件入力部110において入力される検索条件や、抽出項目指定部160において指定される抽出項目を絞って、限られた範囲の情報を出力することもできる。
[効果]
本実施形態の情報処理装置は、まず、第二実施形態の情報処理装置と同様の効果を奏する。
加えて、本実施形態の情報処理装置は、シンボルである変数に含まれる全要素のアドレスとサイズの抽出を、従来の手作業で行った場合と比較して、格段に容易かつ短時間に実施することができる。そのため、例えば、組み込みソフトウェア開発時の検査/デバッグ作業や、そのために必要なRAMモニタへの設定作業を大幅に短縮できる。
さらに、本実施形態の情報処理装置は、構造体が幾重にも入れ子となっているような変数であっても、候補となる全変数の一覧を確実に取得することができる。構造体が幾重にも入れ子となっているような変数の場合、末端のメンバ名から、その親となる変数名をソースコードから調査するのは大変な労力となり、作業ミスも生じやすい。しかし、本実施形態の情報処理装置において、メンバ名を検索条件として与えることにより、候補となる全変数の一覧を取得することができる。そのため、ソースコード内容を熟知することなく、検査対象となる変数のアドレス情報を取得することができ、作業員の技術的なハードルを飛躍的に下げることができる。
<第四実施形態>
本実施形態は、コンパイラ/リンカをさらに備える情報処理装置に関する実施形態である。
[構成と動作]
図9は、本実施形態の情報処理装置の構成を表わす概念図である。
本実施形態の情報処理装置1は、コンパイラ/リンカ10と、抽出情報出力装置90を備える。
コンパイラ/リンカ10は、ソースコード入力部20と、コンパイル/リンク処理部30と、オブジェクトコード出力部40と、デバッグ情報出力部80とを備える。
抽出情報出力装置90は、デバッグ情報入力部100と、前処理部150と、検索条件入力部110と、抽出項目指定部160と、検索抽出部120と、処理部130と、抽出情報出力部140とを備える。
コンパイラ/リンカ10のソースコード入力部20は、入力された処理対象となるソースコードを以降の処理用の信号にする。その信号はコンパイル/リンク処理部30に送られる。
コンパイル/リンク処理部30は、ソースコード入力部20から送られたソースコードに対し、コンパイル/リンク処理を行い、オブジェクトコード及びデバッグ情報を生成する。生成されたオブジェクトコードは、オブジェクトコード出力部40に送られる。また、生成されたデバッグ情報はデバッグ情報出力部80に送られる。
オブジェクトコード出力部40は、コンパイル/リンク処理部30から送られたオブジェクトコードを出力する。
デバッグ情報出力部80は、コンパイル/リンク処理部30から送られたデバッグ情報を、抽出情報出力装置90のデバッグ情報入力部100に出力する。
図10は、ソースコード入力部20から入力されるソースコードの例を示す概念図である。ソースコードは、シンボルである変数の定義に関する部分を示してある。
抽出情報出力装置90についての説明は、第三実施形態における説明と同様であるので、ここではその説明を省略する。
[処理フロー]
図11は、本実施形態の情報処理装置の情報処理のフローを表わす概念図である。
まず、コンパイラ/リンカ10のソースコード入力部20に、処理対象となるソースコードが入力される(S401)。ソースコードを含む信号Vgはコンパイル/リンク処理部30に送られる。
コンパイル/リンク処理部30は、ソースコード入力部20から送られたソースコードに対し、コンパイル/リンク処理を行い、オブジェクトコード及びデバッグ情報を生成する(S402)。生成されたオブジェクトコードを含む信号Vhは、オブジェクトコード出力部40に送られる。また、生成されたデバッグ情報はデバッグ情報出力部80に送られる。
オブジェクトコード出力部40は、コンパイル/リンク処理部30から送られたオブジェクトコードを出力する(S403)。
デバッグ情報出力部80は、コンパイル/リンク処理部30から送られたデバッグ情報を含む信号Viを、抽出情報出力装置90のデバッグ情報入力部100に出力する(S404)。
S405以降のステップについての説明は第三実施形態における図6についての説明と同様なので、ここではその説明を省略する。
[効果]
本実施形態の情報処理装置は、まず第三実施形態の情報処理装置と同じ効果を奏する。
加えて、本実施形態の情報処理装置は、対象となるソースコードのコンパイル/リンク処理を行う作業とともに、詳細マップを作成することができる。
以上好ましい実施形態をあげて本発明を説明したが、本発明は必ずしも上記実施形態に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することが出来る。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記述され得るが、以下には限られない。
(付記1)
入力されたデバッグ情報を以降の処理用の信号にするデバッグ情報入力手段と、
入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする検索条件入力手段と、
前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成する前処理手段と、
前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をする検索抽出手段と、
前記抽出情報の出力をする抽出情報出力手段と、
を備える情報処理装置。
(付記2)
前記検索条件における検索対象が正規表現で記述されている付記1に記載された情報処理装置。
(付記3)
前記検索の検索対象がシンボル名である付記1又は2に記載された情報処理装置。
(付記4)
前記デバッグ情報が、文字列により記述された文字列シンボル名を格納し、
前記検索条件における検索対象が文字列により入力された文字列検索対象であり、
前記検索が、前記文字列検索対象と、前記文字列シンボル名との一致についての検索であり、
前記一致をした前記文字列シンボル名に対応する情報について前記抽出をする
付記3に記載された情報処理装置。
(付記5)
前記シンボル名が変数又はその変数のメンバについてのシンボル名である付記3又は4に記載された情報処理装置。
(付記6)
前記変数の型が構造体または共用体である前記変数の前記メンバのオフセットアドレスの前記抽出をし、そのオフセットアドレスにより前記メンバのアドレスを算出する
付記5に記載された情報処理装置。
(付記7)
前記変数のすべての前記メンバのオフセットアドレスの前記抽出をし、そのオフセットアドレスによりすべての前記メンバのアドレスを算出する
付記6に記載された情報処理装置。
(付記8)
前記メンバの型がビットフィールドである前記メンバのオフセットアドレスの前記抽出をし、そのオフセットアドレスにより前記メンバのアドレスを算出する
付記5に記載された情報処理装置。
(付記9)
すべての前記メンバの前記オフセットアドレスの前記抽出をし、そのオフセットアドレスによりすべての前記メンバのアドレスを算出する
付記8に記載された情報処理装置。
(付記10)
前記変数やその変数のメンバが配列の場合において、その配列又はその配列のメンバについて前記抽出をする付記5乃至9に記載された情報処理装置。
(付記11)
前記抽出情報が、前記検索対象の、アドレス及びサイズを含む、付記1乃至10のうちのいずれか一に記載された情報処理装置。
(付記12)
前記抽出情報が、前記検索対象の、ビット位置及びビット幅をさらに含む付記11に記載された情報処理装置。
(付記13)
前記デバッグ情報を出力するコンパイラをさらに備える、付記1乃至12に記載された情報処理装置。
(付記14)
入力されたデバッグ情報を以降の処理用の信号にするステップと、
入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にをするステップと、
前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成するステップと、
前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をするステップと、
前記抽出情報の出力をするステップと、
を含む情報処理方法。
(付記15)
入力されたデバッグ情報を以降の処理用の信号にする処理と、
入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする処理と、
前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成するステップと、
前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をする処理と、
前記抽出情報の出力をする処理と、
を含む処理をコンピュータに実行させる情報処理プログラム。
1 情報処理装置
10 コンパイラ/リンカ
20 ソースコード入力部
30 コンパイル/リンク処理部
40 オブジェクトコード出力部
80 デバッグ情報出力部
90 抽出情報出力装置
100 デバッグ情報入力部
110 検索条件入力部
120 検索抽出部
130 処理部
140 抽出情報出力部
150 前処理部
160 抽出項目指定部

Claims (10)

  1. 入力されたデバッグ情報を以降の処理用の信号にするデバッグ情報入力手段と、
    入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする検索条件入力手段と、
    前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成する前処理手段と、
    前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をする検索抽出手段と、
    前記抽出情報の出力をする抽出情報出力手段と、
    を備える情報処理装置。
  2. 前記検索条件における検索対象が正規表現で記述されている請求項1に記載された情報処理装置。
  3. 前記検索の検索対象がシンボル名である請求項1又は2に記載された情報処理装置。
  4. 前記デバッグ情報が、文字列により記述された文字列シンボル名を格納し、
    前記検索条件における検索対象が文字列により入力された文字列検索対象であり、
    前記検索が、前記文字列検索対象と、前記文字列シンボル名との一致についての検索であり、
    前記一致をした前記文字列シンボル名に対応する情報について前記抽出をする
    請求項3に記載された情報処理装置。
  5. 前記シンボル名が変数又はその変数のメンバについてのシンボル名である請求項3又は4に記載された情報処理装置。
  6. 前記変数の型が構造体または共用体である前記変数の前記メンバのオフセットアドレスの前記抽出をし、そのオフセットアドレスにより前記メンバのアドレスを算出する
    請求項5に記載された情報処理装置。
  7. 前記メンバの型がビットフィールドである前記メンバのオフセットアドレスの前記抽出をし、そのオフセットアドレスにより前記メンバのアドレスを算出する
    付記5に記載された情報処理装置。
  8. 前記変数や前記メンバが配列の場合において、その配列又はその配列のメンバについて前記抽出をする請求項5に記載された情報処理装置。
  9. 入力されたデバッグ情報を以降の処理用の信号にするステップと、
    入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にするステップと、
    前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成するステップと、
    前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をするステップと、
    前記抽出情報の出力をするステップと、
    を含む情報処理方法。
  10. 入力されたデバッグ情報を以降の処理用の信号にする処理と、
    入力された、検索をする際に用いられる検索条件を、以降の処理用の信号にする処理と、
    前記デバッグ情報に含まれる、シンボルについてのオフセットアドレスから、そのシンボルについてのアドレスを求め、そのアドレスをそのシンボルと関連付けた情報を含むアドレス情報を生成する処理と、
    前記検索条件により、前記アドレス情報について前記検索をし、前記検索により検索された内容に対応する抽出情報の抽出をする処理と、
    前記抽出情報の出力をする処理と、
    を含む処理をコンピュータに実行させる情報処理プログラム。
JP2015003081A 2015-01-09 2015-01-09 情報処理装置、情報処理方法及び情報処理プログラム Active JP6534814B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015003081A JP6534814B2 (ja) 2015-01-09 2015-01-09 情報処理装置、情報処理方法及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015003081A JP6534814B2 (ja) 2015-01-09 2015-01-09 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2016128961A true JP2016128961A (ja) 2016-07-14
JP6534814B2 JP6534814B2 (ja) 2019-06-26

Family

ID=56384346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015003081A Active JP6534814B2 (ja) 2015-01-09 2015-01-09 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP6534814B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06231001A (ja) * 1993-02-01 1994-08-19 Nec Corp シンボル名入力装置
JPH07230393A (ja) * 1994-02-17 1995-08-29 Canon Inc 情報処理システムおよび情報処理システムのプログラムデバッグ方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06231001A (ja) * 1993-02-01 1994-08-19 Nec Corp シンボル名入力装置
JPH07230393A (ja) * 1994-02-17 1995-08-29 Canon Inc 情報処理システムおよび情報処理システムのプログラムデバッグ方法

Also Published As

Publication number Publication date
JP6534814B2 (ja) 2019-06-26

Similar Documents

Publication Publication Date Title
JP6859449B2 (ja) テストケースを利用してテストを遂行する方法および装置
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US9141350B2 (en) Embedded system performance
US8627290B2 (en) Test case pattern matching
US5862382A (en) Program analysis system and program analysis method
US20120110560A1 (en) Data type provider for a web semantic store
Sargsyan et al. Grammar-based fuzzing
Dong et al. Orplocator: Identifying read points of configuration options via static analysis
CN102141959B (zh) 一种受上下文无关文法约束的测试用例生成方法
US8776010B2 (en) Data type provider for a data store
CN112965695A (zh) 前端代码接入检测方法、装置、设备及存储介质
Fauzi et al. Reverse engineering of source code to sequence diagram using abstract syntax tree
Yu et al. From sub-patterns to patterns: an approach to the detection of structural design pattern instances by subgraph mining and merging
JP2018073054A (ja) オブジェクト分析装置、オブジェクト分析方法、及びプログラム
JP6534814B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5067317B2 (ja) 検証支援プログラム、検証支援装置、および検証支援方法
Mendonça et al. Test2feature: Feature-based test traceability tool for highly configurable software
Anderson et al. Supporting analysis of SQL queries in PHP AiR
Szalay et al. Towards better symbol resolution for C/C++ programs: A cluster-based solution
JP2016122321A (ja) 解析装置、解析方法、および解析プログラム
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
JP6502044B2 (ja) データ解析装置、データ解析方法、および、プログラム。
Newman et al. srcType: A tool for efficient static type resolution
JP6644188B2 (ja) 影響抽出装置、影響抽出プログラム及び影響抽出方法
Farah et al. Analysis of intercrossed open-source software repositories data in GitHub

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181102

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190530

R150 Certificate of patent or registration of utility model

Ref document number: 6534814

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150