JP2009251762A - デバッガ装置、デバッグ方法およびプログラム - Google Patents

デバッガ装置、デバッグ方法およびプログラム Download PDF

Info

Publication number
JP2009251762A
JP2009251762A JP2008096592A JP2008096592A JP2009251762A JP 2009251762 A JP2009251762 A JP 2009251762A JP 2008096592 A JP2008096592 A JP 2008096592A JP 2008096592 A JP2008096592 A JP 2008096592A JP 2009251762 A JP2009251762 A JP 2009251762A
Authority
JP
Japan
Prior art keywords
program
execution
unit
debug target
execution sequence
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
JP2008096592A
Other languages
English (en)
Inventor
Hideto Noguchi
秀人 野口
Masayasu Kato
正恭 加藤
Atsusuke Niihara
敦介 新原
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 JP2008096592A priority Critical patent/JP2009251762A/ja
Publication of JP2009251762A publication Critical patent/JP2009251762A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】デバッグ対象プログラム24における動作不具合を発生する条件を効率よくみつけることを目的とする。
【解決手段】デバッグ対象プログラム24と、このデバッグ対象プログラム24を制御する制御プログラム25とを合成させた合成後プログラム26をコンパイルしたプロセスを実行する際に、前記制御プログラム25に係る時点に到達したら、前記プロセスの実行を一次的に停止し、実行系列解釈部114が、モデル検査部(モデル検査プログラム)などによって出力された実行系列23の1行を読込み、読み込んだ1行に記述されている命令に関する実行を前記プロセスに許可し、この許可を受けたプロセスが実行を再開することを特徴とする。
【選択図】図2

Description

本発明は、デバッガ装置、デバッグ方法およびプログラムの技術に関する。
プログラムの動作に不具合(プログラム作成者の意図と異なる動作)が発生した場合、動作不具合が再度発生しないようにプログラムの修正を行う。プログラムが動作不具合を生じる原因となるプログラム上の間違いをバグ、バグを修正し動作不具合が発生しないようにすることをデバッグと呼ぶ。デバッグでは、動作不具合の発生する条件を明らかにしたのち、同条件の下で動作不具合が発生しないようにプログラムソースを修正する。そして、動作不具合の発生する条件を明らかにするため、動作不具合が発生する状況に至るプログラムの実行過程を再現することが行われる。
デバッグには、デバッガと呼ばれるプログラム実行環境を用いることが一般的である。デバッガは、プログラムソースの行単位や、コンピュータの解釈する命令単位などのプログラム実行要素単位でプログラム実行を制御し、デバッグ対象プログラムを実行したり一時停止したりすることができるツールである。また、一般的なデバッガでは、プログラムソース上の特定の位置を予めブレークポイントとして設定し、プログラム実行がブレークポイントに至った時にプログラム実行を一時停止することができる。
さらに、ソフトウェアの動作は、ソフトウェアの実行開始時または実行中にソフトウェアに与える外部入力によって変化するが、同じ外部入力であっても同じ動作をするとは限らない。プログラムへ入力が与えられるタイミングでのプログラムの状態により動作が異なる。特に、複数のプロセスやタスクやスレッドと呼ばれる複数の実行単位からなり,それらの実行単位が並行して動作するソフトウェアにおいては、実行単位間の実行順序や実行タイミングなどのソフトウェアの実行過程の違いにより、同じ外部入力であっても動作結果が異なる場合がある。そのため、動作不具合が発生したプログラムに動作不具合発生時と同じ入力を与えて再度プログラムを実行しても、動作不具合が発生しないことがある。動作不具合が発生する条件を明らかにするには、プログラムへの入力内容と共に、時系列におけるプログラムの実行過程と実行過程のどのタイミングで入力がなされたかを知る必要がある。
また、従来のデバッガを用いたデバッグでは、並行して動作する複数のプログラム群の実行を同期して制御することは難しく、複数プログラム間の実行順序に起因して発生する動作不具合の発生条件を見つけることが難しい。
プログラムの実行過程を網羅的かつ自動的に分析する技術として、モデル検査技術がある。モデル検査技術は、あらかじめプログラムの動作仕様情報を専用言語で記述し、これとは別に数学的な記法を用いてプログラムが満たすべき性質情報を記述し、該プログラム動作仕様情報が、該性質情報を満たすかどうかを数学的に検査する技術である。モデル検査を実行するプログラムを、モデル検査プログラムと呼ぶことにする。代表的なモデル検査技術を実装した検査装置して、SPIN(例えば、非特許文献1参照)やSMV(Symbolic Medel Checker)やUPPAALなどが存在する。
モデル検査プログラムは、プログラム動作仕様情報が性質情報を満たさない状態に至ることがある場合、その性質情報を満たさない状態に至るプログラムの動作過程を出力する。プログラム動作仕様情報に問題があり動作不具合が発生する場合には、動作不具合の論理的否定である望ましい動作を性質情報に記述し、モデル検査プログラムを用いて検査することで、動作不具合が発生する内部実行系列を得ることができる。
G.J. Halzmann著 「The SPIN model checker: Primer and reference manual」 Addison Wesley, 2004年
一般的なデバッガにおいてデバッグを行う者は、プログラムが動作不具合を発生する条件を想像しながらプログラムへの入力を行ったり、プログラムを一時停止時させて、プログラムの内部状態を参照したりすることにより、試行錯誤をしてプログラムが動作不具合を発生する条件を探索する。このような試行錯誤によるデバッグでは、動作不具合の発生条件を見つける効率が悪く、条件が見つからない場合もある。
また、モデル検査プログラムでは、デバッグ対象プログラムの記述に用いられるプログラミング言語とは異なる専用言語で記述した動作仕様情報を用いる。そのため、モデル検査プログラムを用いて、動作仕様情報について動作不具合が発生する実行過程を見つけたのち、デバッグ対象プログラムが同実行過程により不具合を生じることを用いて確認する必要がある。しかし、実行過程は動作仕様情報の実行に関するものであり、デバッグ対象プログラムの実行との対応はデバッグ実行者によって判断される必要がある。また、前記したように、従来のデバッガを用いて実行過程を正確に実行することは困難である。
このような背景に鑑みて本発明がなされたのであり、本発明は、デバッグ対象プログラムにおける動作不具合が発生する条件を効率よくみつけることを目的とする。
前記課題を解決するため、本発明は、デバッグ対象のプログラムを実行するプロセス実行部を備え、記憶部に格納されているプログラムの実行系列に従って、前記プロセス実行部において、実行されているデバッグ対象のプログラムの実行を制御することを特徴とする。
本発明によれば、デバッグ対象プログラムにおける動作不具合が発生する条件を効率よくみつけることができる。
次に、本発明を実施するための最良の形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。なお、本実施形態では、コンパイル前のプログラムを、「プログラム」と記載し、コンパイルした後、実際に実行するプログラムを「プロセス」と記載することとする。
図1は、本実施形態に係るプログラム実行制御装置の構成例を示す図である。
プログラム実行制御装置1(デバッガ装置)は、デバッガ実行部11と、入力部13と、モデル検査部12と、記憶部14とを有してなる。
モデル検査部12は、動作仕様情報21および性質情報22を入力とし、動作仕様情報21が性質情報22を満たすか否かを検査する。動作仕様情報21が、性質情報22を満たさないことがある場合には、動作仕様情報21が性質情報22を満たさない状況にいたる実行系列23を出力して、記憶部14に格納する。この結果、実行系列23には、プロセスの実行手順の系列が記述されることになる。
モデル検査部12として、モデル検査プログラムを用いることができる。代表的なモデル検査プログラムとして、SPINがある。本実施形態では、モデル検査部12としてSPINを用いる例を示すが、モデル検査プログラムとしてSPINに限定するものではなく、SMVやUPPAALもしくは他のモデル検査プログラムを用いてもよい。また、SPINを用いたモデル検査では、アルゴリズムと手順である動作仕様情報21をPromelaと呼ぶ専用言語を用いて記述し、性質情報22をLinear Temporal Logicと呼ぶ様相論理に基づく論理式で記述する。モデル検査部12は、動作仕様情報21のすべての実行状態を網羅的に探索し、性質情報22を満たすかどうかを検査する。動作仕様情報21が性質情報22を満たさない場合には、モデル検査部12は、動作仕様情報21が性質情報22を満たさない状態に至るまでの実行系列23を出力し、記憶部14に格納する。実行系列23は、図3を参照して後記するが、動作仕様情報21の行単位の実行順序と通信順序を含む。デバッガ実行部11は、実行系列23を入力とし、入力部13から入力されたデバッグの対象となるプログラム(デバッグ対象プログラム24)の実行を制御する。
図2は、デバッガ実行部の構成例を示す図である。
デバッガ実行部11は、プログラム合成部111と、コンパイラ112と、プロセス実行部113と、実行系列解釈部114と、出力部115とを有してなる。
プログラム合成部111は、前記したデバッグ対象プログラム24と、入力部13から入力された制御プログラム25とを合成し、合成後プログラム26を出力する機能を有する。デバッグ対象プログラム24と、制御プログラム25の合成は、両者のソースプログラムを連結することによって行われる。このようなプログラム同士の合成は、AspectJなどのアスペクト指向のプログラム技術において標準的な機能である。
ここで、制御プログラム25とは、デバッグ対象プログラム24(デバッグ対象プロセス)の実行を制御することを目的とするプログラムである。制御プログラム25による制御プロセスがデバッグ対象プロセスの実行を制御するために、プログラム合成部111は、制御プログラム25とデバッグ対象プログラム24を合成し、合成後プログラム26を生成する。
プロセス実行部113は、コンパイラ112によってコンパイルされたプロセスを逐次解釈しながら実行するインタプリタ方式、合成後プログラム26をあらかじめCPU命令に変換してCPU(Central Processing Unit)が実行するコンパイラ方式、もしくは他の実行方式であってよい。
実行系列解釈部114は、実行系列23を読込み、実行系列23に定義された順にデバッグ対象プロセスを実行するよう、合成後プログラム26(プロセス)に含まれる制御プロセスへ指示を与える。
出力部115は、実行系列解釈部114による出力結果を表示したり、印刷したりする機能を有する。
なお、デバッグ対象プログラム24(デバッグ対象プロセス)は、単一プログラムである必要はなく、並行して動作する複数のプログラム群であってよい。これに対応し、動作仕様情報21(図1参照)も並行して動作する複数の仕様群であってよい。
次に、図1を参照しつつ図3に沿って実行系列について説明する。
図3は、実行系列の例を示す図である。
本実施形態において、合成後プログラム26をコンパイルしたプロセスは、並行して動作し相互に通信が可能な3つのプロセスであるプロセスA、プロセスBおよびプロセスCからなるものとする。
実行系列23の各行は、制御すべきデバッグ対象プログラム24の実行単位を意味する。実行単位は、デバッグ対象プログラム24の特定の実行行に対応する。列301は実行単位の連番を示すものであり、省略してもよい。列302は、対象となるプロセスを区別するための情報である。列303は、実行単位の実行内容を示す。例えば、行304は、該当する列302が示す「プロセスA」が、該当する列303に示す「オブジェクトobj_a生成」を実行することを示す。なお,行304の列303に記載の「(A−2)」は、「オブジェクトobj_a生成」という実行単位を示す識別子であり、実行単位を識別できれば図3のような「(A−2)」に限られるものではない。
また、行305ではプロセスBからプロセスAへのデータ送信、行306ではプロセスAのデータ受信、行307ではプロセスCからプロセスAへのデータ送信、行308はプロセスAのデータ受信が順に行われることを示す。
なお、図3に示す例は、実行系列23における情報の例を示すものであり、図3に示すデータフォーマットおよび内容を限定するものではなく、類似の意味を有する実行系列23であればよい。
また、図3に示す例では、日本語を用いた表形式により実行系列23を定義しているが、計算機が処理可能な任意のデータ形式でよい。
図4は、本実施形態におけるプロセス実行部と、実行系列解釈部との関係を示す図である。
プロセスA〜プロセスCのそれぞれには、プロセスのソースプログラムをコンパイルしたデバッグ対象プロセスA〜デバッグ対象プロセスCが含まれ、実行系列23に示される実行単位に対応した複数の制御プログラム25をコンパイルした制御プロセスを含んでいる。実行系列解釈部114は、実行系列23を入力とし、この実行系列23の各行を順に読込み、各行の実行内容に対応する各プロセス中の制御プロセスに実行を指示する。実行系列解釈部114から制御プロセスへの指示は、プロセス間通信方式、共有データ方式など、プログラム間で通信可能な任意の方法で行われてもよい。
次に、図2を参照しつつ、図5に沿って実行系列解釈部114における処理を説明する。
図5は、実行系列解釈部における処理の流れを示すフローチャートである。
まず、実行系列解釈部114は、実行系列23の1行を読み込む(S101)。
次に、実行系列解釈部114は、ステップS101で読み込んだ実行系列23の実行内容に対応する制御プロセスを特定する(S102)。
そして、実行系列解釈部114は、ステップS102で特定した対象プロセスに対し、処理の実行を許可する(S103)。
処理の実行を指示された制御プロセスは、制御対象となっているデバッグ対象プロセスの処理を実行し、実行系列解釈部114へ実行を行う旨を応答(実行の応答)する。そして、実行系列解釈部114は、制御プロセスから実行の応答を受信する(S104)。
そして、実行系列解釈部114は、実行系列23の全行を読み込んだか否かを判定する(S105)。
ステップS105の結果、実行系列23の全行を読み込んでいない場合(S105→No)、実行系列解釈部114は、ステップS101へ処理を戻し、実行系列23の次の1行を読み込む。
ステップS105の結果、実行系列23の全行を読み込んでいる場合(S105→Yes)、処理を終了する。
次に、図2を参照しつつ、図6に沿ってプロセス実行部113における処理を説明する。
図6は、プロセス実行部における処理の流れを示す図である。なお、図6における処理は、プロセス実行部113においてプロセス毎に並行して行われる処理である。
プロセス実行部113は、プロセスを実行し(S201)、プロセスに含まれる制御プロセスに到達したか否かを判定する(S202)。
ステップS202の結果、制御プロセスに到達していない場合(S202→No)、ステップS201へ処理を戻し、引き続きプロセス実行を継続する。
ステップS202の結果、制御プロセスに到達した場合(S202→Yes)、プロセス実行部113は、プロセスの実行を一時停止し、実行系列解釈部114からの実行指示を待つ(S203)。
そして、プロセス実行部113は、実行系列解釈部114からの実行指示を受ける(S204)と、実行系列解釈部114に該当するプロセスを実行した旨の応答を送り(S205)、ステップS201へ処理を戻す。
図7は、各プロセスと実行系列解釈部との情報の授受を示すシーケンス図である。
ここでは、実行系列23として、図3の行305から行307が入力された場合を示す。
デバッグ対象プロセスとしてデバッグ対象プロセスA(プロセスAにおけるデバッグ対象プログラム24部分)、デバッグ対象プロセスB(プロセスBにおけるデバッグ対象プログラム24部分)、デバッグ対象プロセスC(プロセスAにおけるデバッグ対象プログラム24部分)を考える。また、プロセスにおける制御プログラム25部分を示す制御プロセスとして、図3に対応し実行単位「A−20」に対応する制御プロセス「A−20」、実行単位「B−9」に対応する制御プロセス「B−9」、および実行単位「C−12」に対応する制御プロセス「C−12」を考える。
制御プロセス「A−20」は、デバッグ対象プロセスAが実行要素「A−20」を実行する直前に埋め込まれ、制御プロセス「B−9」は、デバッグ対象プロセスBが実行要素「B−9」を実行する直前に埋め込まれる。制御プロセス「C−12」は、デバッグ対象プロセスCが実行要素「C−12」を実行する直前に埋め込まれる。
まず、デバッグ対象プロセスCが実行単位「C−12」実行の直前に至ったとすると(S311)、制御プロセス「C−12」に実行が移る(S312)。
そして、ステップS313において、制御プロセス「C−12」は、実行系列解釈部114からの実行指示を待つ。
次に、デバッグ対象プロセスBが実行単位「B−9」実行の直前に至ったとすると(S314)、デバッグ対象プロセスBから制御プロセス「B−9」に実行が移る(S315)。そして、ステップS316において、制御プロセス「B−9」は、実行系列解釈部114からの実行指示を待つ。
ステップS317において、実行系列解釈部114が、実行系列23の行305(図3)を読み込むと(S317)、実行系列解釈部114は、行305に対応する制御プロセス「B−9」に対して実行を指示する(S318)。実行指示を受けた制御プロセス「B−9」は、実行系列解釈部114へ応答を返し(S319)、処理を終える。
処理は、デバッグ対象プロセスBに戻り(S320)、ステップS321においてデバッグ対象プロセスBにおける実行単位「B−9」を実行する(S321)。
以下、デバッグ対象プロセスAの実行単位「A−20」、デバッグ対象プロセスCの実行単位「C−12」、デバッグ対象プロセスAの実行単位「A−20」を実行する(それぞれ、図3における行306,307,308に相当)
ここで、デバッグ対象プロセスCの実行状態を見ると、ステップS311において実行単位「C−12」を実行可能であり、本実施形態による実行制御を行わなければ、即座にデバッグ対象プロセスCは、実行単位「C−12」を実行することとなるので、デバッグ対象プロセスA〜Cの実行順序は、図7と異なる実行順序となる。本実施形態によれば、処理が、デバッグ対象プロセスCから制御プロセス「C−12」に移り、実行系列解釈部114が実行単位「C−12」に対応する実行系列23の行307(図3)を読み込むまで、デバッグ対象プロセスCは、処理を一時停止し、ステップS330において実行単位「C−12」を実行する。このように、制御プログラム25(制御プロセス)と実行系列解釈部114によりデバッグ対象プログラム24(デバッグ対処プロセス)の実行を一時停止し、実行系列23の順に実行を再開することで、実行系列23に定義された順にデバッグ対象プロセスの実行を制御することができる。つまり、本実施形態によれば、モデル検査プログラム(モデル検査部12)が出力する実行系列23に従って、デバッグ対象プロセスを自動的に実行することで、デバッグ対象プログラム24(デバッグ対象プロセス)が動作不具合を発生する条件を効率よくみつけることができる。
制御プログラム25をデバッグ対象プログラム24に埋め込む方法として、アスペクト指向プログラム技術を用いることができる。アスペクト指向プログラム技術では、本実施形態でのデバッグ対象プログラム24に相当する実プログラムと、それと独立したアスペクトと呼ぶプログラム断片を定義することができる。アスペクトでは、実プログラム上の位置の位置と、その位置に埋め込むプログラム断片を定義する。アスペクト指向プログラム言語の処理系は、アスペクトを解釈し、アスペクトに定義された位置にプログラム断片を埋め込む。
このようなアスペクト指向プログラム技術の1つにAspectJがある。AspectJは、プログラム言語Java(登録商標)に対応したアスペクト指向プログラム言語および処理系である。AspectJでは、実プログラム上の位置をpointcut演算子で定義し、これをポイントカットと呼ぶ。プログラム断片をポイントカットの直前に埋め込むには、before演算子を用いてプログラム断片を定義する。
図8および図9を参照して、アスペクト指向プログラム技術による、本実施形態における制御プログラム25の例を示す。
図8は、デバッグ対象プログラムのソースコードの一部を示す例である。
例示するデバッグ対象プログラム24は、図4および図7におけるデバッグ対処プロセスBのソースプログラム(デバッグ対象プログラムB)である。
図8では、プログラムBを構成するクラスとしてprogram_Bクラス(行801)が定義されており、他のプログラムにメッセージを送るsend_messageメソッド(行803)が定義されているものとする。行803におけるsend_messageメソッドは、第1引数に送信先、第2引数に送信する値を持つものとする。行802は、プログラムAに対し値aを送ることを意味する。すなわち、行802は、図3における行305の「B−9」に対応する。
図9は、図8を前提とした「B−9」に対応する制御プログラムのソースコードの例を示す。
行901は、Control_program_B−9というアスペクトを定義することを宣言している。行902は、「.send_message(” A”, ” a)”」という文字列を持つ実行行を、「B−9」という名を持つポイントカットとして定義している。なお、「*」は任意の文字列を意味する。行903は、「before」演算子を用いて、ポイントカットB−9を実行する直前に以下のプログラムを実行することを定義している。行904は、実行系列解釈部114からの実行指示を待ち受けする「waiting_for_execution」の実行、行905は、実行系列解釈部114への実行応答を送る「respond_for_execution」の実行を定義している。これらは別途定義されているものとする。
AspectJの処理系を用いて、図9に示すプログラムを、図8に示すプログラムに埋め込むことで、図8の行802を実行する直前に、図9の行903以降で定義した行904が実行される(これは、図7におけるステップS316にあたる)。これにより、デバッグ対象プログラムB(デバッグ対象プロセスB)は、実行系列解釈部114からの実行指示を待つ。そして、図7のステップS318で、制御プロセス「B−9」が、実行系列解釈部114からの実行指示を受ける(図9の行904に相当)と、図7のステップS319で実行系列解釈部114に応答を返す(図9の行905に相当)。この後、デバッグ対象プログラムB(デバッグ対象プロセスB)は、実行単位「B−9」に相当する行802(図8)の実行を行う。
このように、アスペクト指向プログラム技術により、モデル検査部12が出力した実行系列23に従い、プロセス実行部113はデバッグ対象プログラム24(デバッグ対象プロセス)の実行を制御できる。さらに、本実施形態によれば、プログラム実行部に特別な機能を有することなしに、デバッグ対象プログラム24の実行を制御できる。なお、アスペクト指向プログラムを用いた例を示すため、AspectJを用いたプログラムを示したが、本実施形態はAspectJの利用に限定されるものではなく、他のプログラム言語や処理系を用いてもよい。
図10は、本実施形態に示すプログラム実行制御装置のハードウェア構成例を示す図である。
プログラム実行制御装置1は、CPU1001、RAM(Random Access Memory)1002、ROM(Read Only memory)1003、HD(Hard Disk)1004を有してなる。これらの各装置1001〜1004は、バス1005を介して互いに接続されている。
図1に示すモデル検査部12およびデバッガ実行部11は、ROM1003や、HD1004に格納されたプログラムが、RAM1002に展開され、CPU1001によって実行されることによって具現化する。
本実施形態に係るプログラム実行制御装置の構成例を示す図である。 デバッガ実行部の構成例を示す図である。 実行系列の例を示す図である。 本実施形態におけるプロセス実行部と、実行系列解釈部との関係を示す図である。 実行系列解釈部における処理の流れを示すフローチャートである。 プロセス実行部における処理の流れを示す図である。 各プロセスと実行系列解釈部との情報の授受を示すシーケンス図である。 デバッグ対象プログラムのソースコードの一部を示す例である。 図8を前提とした「B−9」に対応する制御プログラムのソースコードの例である。 本実施形態に示すプログラム実行制御装置のハードウェア構成例を示す図である。
符号の説明
1 プログラム実行制御装置(デバッガ装置)
11 デバッガ実行部
12 モデル検査部
13 入力部
14 記憶部
21 動作仕様情報
22 性質情報
23 実行系列
24 デバッグ対象プログラム
25 制御プログラム
26 合成後プログラム
111 プログラム合成部
112 コンパイラ
113 プロセス実行部
114 実行系列解釈部
115 出力部



Claims (6)

  1. プログラムのデバッグを行うデバッガ装置であって、
    入力部から入力されたデバッグ対象のプログラムを実行するプロセス実行部と、
    記憶部に格納されているプログラムの実行系列を読み込み、前記実行系列に従って、前記プロセス実行部において実行されているデバッグ対象のプログラムの実行を制御する実行系列解釈部とを有することを特徴とするデバッガ装置。
  2. 前記入力部から入力されたアルゴリズムと手順とが記述されている動作仕様情報と、前記動作仕様書に係る性質が記述されている性質情報とを用いて、前記実行系列を前記記憶部に記憶するモデル検査部をさらに有することを特徴とする請求項1に記載のデバッガ装置。
  3. デバッグ対象のソースプログラムに、前記ソースプログラムの実行を制御する制御プログラムを合成して、前記デバッグ対象のプログラムを生成するプログラム合成部をさらに有することを特徴とする請求項1に記載のデバッガ装置。
  4. 前記モデル検査部は、SPIN、SMVおよびUPPAALのうち、いずれか1つのモデル検査プログラムであることを特徴とする請求項2に記載のデバッガ装置。
  5. プログラムのデバッグを行うデバッガ装置におけるデバッグ方法であって、
    前記デバッガ装置は、
    デバッグ対象のプログラムを実行するプロセス実行部を備え、
    記憶部に格納されているプログラムの実行系列に従って、前記プロセス実行部において、実行されているデバッグ対象のプログラムの実行を制御することを特徴とするデバッグ方法。
  6. 請求項5に記載のデバッグ方法を、コンピュータに実行させることを特徴とするプログラム。

JP2008096592A 2008-04-02 2008-04-02 デバッガ装置、デバッグ方法およびプログラム Pending JP2009251762A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008096592A JP2009251762A (ja) 2008-04-02 2008-04-02 デバッガ装置、デバッグ方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008096592A JP2009251762A (ja) 2008-04-02 2008-04-02 デバッガ装置、デバッグ方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2009251762A true JP2009251762A (ja) 2009-10-29

Family

ID=41312440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008096592A Pending JP2009251762A (ja) 2008-04-02 2008-04-02 デバッガ装置、デバッグ方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2009251762A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567163A (zh) * 2011-12-16 2012-07-11 华东师范大学 基于uppaal的实时嵌入式系统构件间协同行为的验证方法
CN102866952A (zh) * 2012-10-11 2013-01-09 山东省科学院自动化研究所 一种基于uppaal模型的汽车软件源代码仿真测试方法
JP2013077048A (ja) * 2011-09-29 2013-04-25 Toyota Motor Corp 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置
KR101789288B1 (ko) * 2015-12-24 2017-10-24 고려대학교 산학협력단 계층적 실시간 스케줄링 시스템의 정형 검증 장치 및 방법
CN109976712A (zh) * 2019-03-12 2019-07-05 中山大学 一种基于uppaal-smc对网络物理系统需求做形式化验证方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013077048A (ja) * 2011-09-29 2013-04-25 Toyota Motor Corp 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置
CN102567163A (zh) * 2011-12-16 2012-07-11 华东师范大学 基于uppaal的实时嵌入式系统构件间协同行为的验证方法
CN102866952A (zh) * 2012-10-11 2013-01-09 山东省科学院自动化研究所 一种基于uppaal模型的汽车软件源代码仿真测试方法
KR101789288B1 (ko) * 2015-12-24 2017-10-24 고려대학교 산학협력단 계층적 실시간 스케줄링 시스템의 정형 검증 장치 및 방법
CN109976712A (zh) * 2019-03-12 2019-07-05 中山大学 一种基于uppaal-smc对网络物理系统需求做形式化验证方法

Similar Documents

Publication Publication Date Title
US8136097B2 (en) Thread debugging device, thread debugging method and information storage medium
US8370810B2 (en) Debugging device and debugging method
US20110099538A1 (en) Techniques for debugging
US9852038B2 (en) Debugging system and debugging method of multi-core processor
JP2015141539A (ja) 故障注入プログラム
JP2009251762A (ja) デバッガ装置、デバッグ方法およびプログラム
KR20120139403A (ko) 게임 서버의 작업 파일 실행 장치 및 방법
US8533683B2 (en) Stack walking enhancements using sensorpoints
US8225286B2 (en) Debugging interpreted input
KR101722856B1 (ko) 프로그래밍 언어 기반의 plc 자동 테스트 장치
JP2008033849A (ja) 障害解析システム
JP6550268B2 (ja) プログラム作成支援装置、プログラムおよび判別方法
JP4009517B2 (ja) プログラム開発支援装置およびコンパイル方法
US11748233B2 (en) Debugging a native compiled application from an integrated development environment
EP2972880B1 (en) Kernel functionality checker
WO2011125280A1 (ja) デバッグ支援装置、デバッグ支援方法及びデバッグ支援プログラム
EP3891613B1 (en) Software checkpoint-restoration between distinctly compiled executables
KR102075345B1 (ko) 퍼징 수행 시스템, 퍼징용 실행 흐름 정보 추출 장치 및 방법
JP2008052688A (ja) プログラムのパッチデータ生成装置
CN108614704B (zh) 代码编译方法及装置
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
US20190034259A1 (en) Systems and Methods for Implementing a Thread Trace Log
US20110225400A1 (en) Device for Testing a Multitasking Computation Architecture and Corresponding Test Method
JP2007034825A (ja) デバッグ装置
JP2014126900A (ja) プログラム解析装置、プログラム解析方法、及び、プログラム解析プログラム