JP5397648B2 - Source code tracer - Google Patents
Source code tracer Download PDFInfo
- Publication number
- JP5397648B2 JP5397648B2 JP2013083486A JP2013083486A JP5397648B2 JP 5397648 B2 JP5397648 B2 JP 5397648B2 JP 2013083486 A JP2013083486 A JP 2013083486A JP 2013083486 A JP2013083486 A JP 2013083486A JP 5397648 B2 JP5397648 B2 JP 5397648B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- source code
- debug
- bus
- address
- 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.)
- Active
Links
- 239000000700 radioactive tracer Substances 0.000 title claims description 32
- 238000000034 method Methods 0.000 claims description 26
- 239000004065 semiconductor Substances 0.000 claims description 10
- 230000010365 information processing Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 2
- 238000012360 testing method Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 24
- 238000012795 verification Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005476 soldering Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
この発明は、プログラム方式の電子情報処理装置に用いるプログラムのデバック作業を容易にするためのソースコードトレーサに関している。 The present invention relates to a source code tracer for facilitating debugging work of a program used in a program-type electronic information processing apparatus.
一般に、プログラム方式の電子情報処理装置用にプログラムを作成する場合、プログラムのデバッグ作業に多くの時間が費やされている。プログラム作成作業を効率化するためにデバッグ作業時間の短縮が求められており、デバック作業を容易にするデバッガ等が用いられる場合が多い。 In general, when a program is created for a program-type electronic information processing apparatus, a lot of time is spent on debugging the program. In order to make the program creation work more efficient, the debugging work time is required to be shortened, and a debugger or the like that facilitates the debugging work is often used.
一般に、デバッガでは、プログラムに複数のブレークポイントを設けて、それぞれのブレークポイントの時点でその実行を一時的に中断し、それぞれの時点で記憶情報のダンプを行い、それぞれの時点での記憶情報を追跡することでプログラムの動作を検証することが行なわれる。 In general, a debugger provides a program with multiple breakpoints, temporarily suspends execution at each breakpoint, dumps the stored information at each point, and stores the stored information at each point. The operation of the program is verified by tracing.
また、上記の電磁情報処理装置の動作を中断せずにその動作を観測してデバッグを行なうトレーサとして、例えば以下のような開示がある。 Further, as a tracer that performs debugging by observing the operation of the electromagnetic information processing apparatus without interrupting the operation, there is the following disclosure, for example.
特許文献1(実開平5−17738号公報)には、簡易トレーサが開示されている。これは、CPUの信号をCPU信号取出し回路で取り出し、比較基準入力設定器に予め設定しておいたデータと、取り出したデータ(アドレス/データ)を比較回路に入力して比較し、条件が一致したときにラッチトリガ決定回路に信号を送信し、ラッチトリガ決定回路で条件が一致した場合にラッチ回路に信号を送信し、ラッチ回路からの信号を受けた表示回路はその時点のデータ(CPU内部状態)を表示する構成とすることで、簡単な回路で、CPUの内部状態をリアルタイムに表示、又はトレースを残すことができるようにしたものである。 Patent Document 1 (Japanese Utility Model Laid-Open No. 5-17738) discloses a simple tracer. This is because the CPU signal is extracted by the CPU signal extraction circuit, the data set in advance in the comparison reference input setter and the extracted data (address / data) are input to the comparison circuit and compared, and the conditions match. When this happens, a signal is sent to the latch trigger determination circuit, and when the conditions match in the latch trigger determination circuit, the signal is sent to the latch circuit. The display circuit that receives the signal from the latch circuit receives the data at that time (CPU internal state) By using a configuration for displaying the CPU, it is possible to display the internal state of the CPU in real time or leave a trace with a simple circuit.
また、特許文献2(特開平6−348540号公報)には、C言語の様な高級言語で記述されたプログラムをデバッグする時にトレーサを使用して、デバッグの効率を向上させるトレース回路とトレース方法が開示されている。これは、局所変数のベースポインタをラッチする回路とプログラム実行アドレスをラッチする回路とを有し、データアクセス時に前記ベースポインタラッチの内容と前記プログラム実行アドレスラッチの内容をアクセスしたアドレスやデータやステータスと共にトレースメモリに書き込み、トレースメモリに記録されたアドレスとベースポインタの値から局所変数の変数オフセットを計算し、この変数オフセットとトレースメモリ中のプログラム実行アドレスを使って、デバッグ対象プログラムのデバッグ情報テーブルを検索し、トレースメモリに記録されたデータアクセス内容を局所変数と対応づけるものである。 Japanese Patent Laid-Open No. 6-348540 discloses a trace circuit and a trace method that improve the debugging efficiency by using a tracer when debugging a program written in a high-level language such as C language. Is disclosed. This has a circuit for latching a base pointer of a local variable and a circuit for latching a program execution address. At the time of data access, the contents of the base pointer latch and the contents of the program execution address latch are accessed. And write to the trace memory, calculate the variable offset of the local variable from the address recorded in the trace memory and the value of the base pointer, and use this variable offset and the program execution address in the trace memory to debug the debug information table of the program to be debugged And the data access content recorded in the trace memory is associated with the local variable.
また、特許文献3(特開平8−335177号公報)には、命令キャッシュを動作させたままプログラムトレースを行うプロセッサ動作観察方法及び装置が開示されている。ここで用いるCPUは、命令キャッシュに命令アドレスで指定した命令が存在するか否かにかかわらず、その命令アドレスを、メモリアドレスレジスタを介してCPUの外部バスに出力するものである。この外部バスは、アドレスバス、データバス、制御バスから成るもので、プログラムのデバッグ時はこの外部バスにプロセッサ動作観察装置を接続し、命令キャッシュがヒットする場合でも、CPUがアクセスした命令のあった外部のメモリのアドレスやバスステータスをプロセッサ動作観察装置のトレースメモリに格納する。このトレースメモリを読み出して、アドレスとバスステータスの内容を解析することにより、CPUが実行した命令の実行過程を追跡するものである。 Further, Patent Document 3 (Japanese Patent Laid-Open No. 8-335177) discloses a processor operation observation method and apparatus for performing a program trace while operating an instruction cache. The CPU used here outputs the instruction address to the external bus of the CPU via the memory address register regardless of whether the instruction specified by the instruction address exists in the instruction cache. This external bus consists of an address bus, a data bus, and a control bus. When debugging a program, a processor operation observation device is connected to this external bus, and even if the instruction cache hits, the instruction accessed by the CPU The external memory address and bus status are stored in the trace memory of the processor operation observation apparatus. By reading the trace memory and analyzing the contents of the address and bus status, the execution process of the instruction executed by the CPU is traced.
また、特許文献4(特開平10−21118号公報)には、デバッグシステムが開示されている。これは、コンピュータ(PC)のアドレス設定部により指定アドレスを設定し、リード要求部から、インタフェースケーブルを介してデバッグ対象装置に、メモリリード要求を送出する。デバッグ対象装置では、メモリリード部がメモリリード要求に応答してメモリの指定されたアドレスの内容をダンプして、インタフェースケーブルを介してPC1に返送する。PCのアドレス設定部により指定アドレスを設定し、データ設定部によりライトデータを設定して、ライト要求部から、インタフェースケーブルを介してデバッグ対象装置に、メモリライト要求を送出する。デバッグ対象装置は、メモリライト部23がメモリライト要求に応答してメモリの指定されたアドレスに、ライトデータを書き込むものである。
Japanese Patent Laid-Open No. 10-21118 discloses a debugging system. In this case, a designated address is set by an address setting unit of a computer (PC), and a memory read request is sent from the read request unit to the debug target device via an interface cable. In the device to be debugged, the memory read unit dumps the contents of the designated address of the memory in response to the memory read request, and returns it to the
また、特許文献5(特開2001−175510号公報)には、繰返して発生する同一のデータを記録しないようにし、デバッグや障害解析に必要なデータのみを確実に収集するようにして効率よくトレースバッファを使用するトレースデータ圧縮方法およびトレースデータ圧縮方式が開示されている。これは、LSI内部の複数の状態値を周期的の記録するトレーサにおいて、トレースデータを状態値の変化する頻度の高い第一のフィールドと状態値の変化する頻度の低い第二のフィールドとに分割し、最新の登録トレースデータの第二のフィールドのデータと受信したトレースデータの第二のフィールドのデータとを比較して一致する場合には、前記受信したトレースデータの第二のフィールドのデータを登録しない。受信したトレースデータを登録するときには、前記第一のフィールドおよび前記第二のフィールドの各データにそれぞれ識別子を付して登録するものである。 In Patent Document 5 (Japanese Patent Laid-Open No. 2001-175510), the same data that is repeatedly generated is not recorded, and only the data necessary for debugging and failure analysis is reliably collected, thereby efficiently tracing. A trace data compression method and a trace data compression method using a buffer are disclosed. This is because, in a tracer that periodically records a plurality of state values inside an LSI, the trace data is divided into a first field where the state value changes frequently and a second field where the state value changes less frequently. If the data of the second field of the latest registered trace data matches the data of the second field of the received trace data, the data of the second field of the received trace data is Do not register. When registering the received trace data, each of the data in the first field and the second field is registered with an identifier.
また、特許文献6(特開2001−331344号公報)には、システムプログラムの履歴情報により障害発生の経緯を知らせ、障害原因の解析がスムーズに行える組み込みシステムの障害情報トレーサ装置が開示されている。この障害情報トレーサ装置は、実行形式のプログラム、履歴情報を編成する実行履歴収集部、履歴情報を記憶させるトレースメモリ、その記憶内容を被試験装置にダンプさせるデバッグモニタから構成されるものである。また、被試験装置は、履歴情報を導入するデバッガソフト、履歴情報がファイルされたトレースメモリダンプ結果ファイル、プログラムのソースファイル群、障害解析のための該当箇所を出力するトレース情報解析プログラムから構成されるものである。 Patent Document 6 (Japanese Patent Laid-Open No. 2001-331344) discloses a failure information tracer device for an embedded system that can notify the background of the failure occurrence based on the history information of the system program and can smoothly analyze the cause of the failure. . This failure information tracer device is composed of an execution format program, an execution history collection unit for organizing history information, a trace memory for storing history information, and a debug monitor for dumping the stored contents to the device under test. The device under test consists of debugger software that introduces history information, a trace memory dump result file in which history information is filed, a program source file group, and a trace information analysis program that outputs the relevant location for failure analysis. Is.
また、特許文献7(米国特許第6161216号明細書)には、ソースコードのデバッガを用いてソースコードをデバッグする方法と装置が記載されている。この場合、スクリプトジェネレータがソースコードの命令を受け取るようにする。スクリプトジェネレータは、ソースコード命令を読み取り、実行ブロックまたは制御境界を規定する命令の型に基づいて、トレースポイントの仕様を満たすデバッグスクリプトを自動的に生成する。このデバッグスクリプトをソースコードデバッガに引き渡す。 Patent Document 7 (US Pat. No. 6,161,216) describes a method and apparatus for debugging source code using a source code debugger. In this case, the script generator receives instructions of the source code. The script generator reads source code instructions and automatically generates a debug script that satisfies the tracepoint specifications based on the type of instruction that defines the execution block or control boundary. Pass this debug script to the source code debugger.
特許文献1から6に記載の発明は、積極的にデバッグ用の情報を出力させるようにプログラムを改変するものではない点において本発明とは異なっている。また、特許文献7に記載の発明では、デバッグスクリプトを生成するスクリプトジェネレータを用いている点において、本発明とは異なっている。
The inventions described in
プログラムのデバッグをより効率的に行なうことができるようにし、また、発生頻度の少ない実行時エラーについてもデバッグし易いようにする。 The program can be debugged more efficiently, and it is also easy to debug runtime errors that occur less frequently.
本発明のソースコードトレーサは、プログラム方式の電子情報処理装置であるターゲットデバイスと、前記ターゲットデバイスのプログラムであるソースコードをコンパイルし、そのコンパイル時にデバッグ行を挿入するコンピュータ(以下、第1コンピュータ)と、前記ターゲットデバイスのアドレスバス、データバス、またはコントロールバスからデータを選択的に収集し記憶するデータ収集器と、上記データ収集器から収集データを外部のコンピュータ(以下、第2コンピュータ)に伝送する通信路と、を備え、上記デバッグ行は、デバッグに用いデバッグ行のソースコード上の位置情報を含むデバッグ情報を、前記ターゲットデバイスのアドレスバス上の予め決められたアドレス向けの上記データバス上のデバッグデータとして出力する内容のものであり、上記ターゲットデバイスは、予め決められた書込み手続きの必要な半導体メモリを備え、上記半導体メモリに割り当てられたアドレス宛てに、上記の書き込み手続きを含まない書込みコードを出力するデバッグ行を用いることを特徴とするものである。 A source code tracer according to the present invention includes a target device that is a program-type electronic information processing apparatus, and a computer that compiles a source code that is a program of the target device and inserts a debug line during the compilation (hereinafter referred to as a first computer). A data collector that selectively collects and stores data from the address bus, data bus, or control bus of the target device, and transmits the collected data from the data collector to an external computer (hereinafter referred to as a second computer). The debug line is used for debugging and includes debug information including position information on the source code of the debug line on the data bus for a predetermined address on the address bus of the target device. Output as debug data The target device includes a semiconductor memory that requires a predetermined write procedure, and outputs a write code that does not include the write procedure to an address assigned to the semiconductor memory. It is characterized by using lines.
また、上記デバッグ行は、上記デバッグ行を通過した時刻情報を更に含むデバッグ情報を、上記デバッグデータとして出力する内容を備えるものである。 Further, the debug line has contents for outputting debug information further including time information passing through the debug line as the debug data.
また、上記データ収集器は、前記ターゲットデバイスのアドレスバスの信号が予め決められた少なくとも1つのアドレスに一致する場合に、データバス、またはコントロールバスからデータを選択的に収集し記憶するものである。 The data collector selectively collects and stores data from the data bus or the control bus when a signal on the address bus of the target device matches at least one predetermined address. .
また、上記データ収集器は、上記収集データを圧縮して記憶するものである。 The data collector compresses and stores the collected data.
上記の第2コンピュータは、予定されたトレース情報と上記デバッグデータとを比較して、上記ソースコードのデバッグに関する情報を出力するものである。 The second computer compares the scheduled trace information with the debug data, and outputs information related to the debugging of the source code.
上記ターゲットデバイスが、予め決められた書込み手続きの必要な半導体メモリ、例えば、EEPROMやフラッシュメモリを備える場合には、上記半導体メモリに割り当てられたアドレス宛てに、上記の書き込み手続きを含まない書込みコードを用いて擬似書込みを行なうデバッグ行を用いることで、デバッグデータを出力するアドレス数を増大させることができる。 When the target device includes a semiconductor memory that requires a predetermined write procedure, for example, an EEPROM or a flash memory, a write code that does not include the write procedure is sent to an address assigned to the semiconductor memory. By using a debug line that performs pseudo writing, the number of addresses to which debug data is output can be increased.
プログラム処理を中断することなくデバッグ作業を進めることができるようになるため、処理を中断する従来例に比べて、より実際の動作に近い状態でデバッグ作業を行うことができるようになる。 Since the debugging operation can proceed without interrupting the program processing, the debugging operation can be performed in a state closer to the actual operation as compared with the conventional example in which the processing is interrupted.
また、デバッグ行を残したままでも、実際のプログラム処理を何らの支障も伴うことなく行なうことができるので、検証したプログラムを実際の処理に適用することができるようになる。 In addition, since the actual program processing can be performed without any trouble even if the debug line is left, the verified program can be applied to the actual processing.
さらに、上記の様に、プログラム処理速度を低下させることなくデバッグ作業を進めることができるため、従来に比べて多数のデバッグ行をソースコードに挿入することができるようになり、デバッグ作業をより容易にすることができる。 In addition, as described above, debugging can be performed without reducing the program processing speed, so that more debugging lines can be inserted into the source code than before, making debugging easier. Can be.
以下に、この発明の実施の形態を図面に基づいて詳細に説明する。以下の説明においては、同じ機能あるいは類似の機能をもった装置に、特別な理由がない場合には、同じ符号を用いるものとする。 Embodiments of the present invention will be described below in detail with reference to the drawings. In the following description, devices having the same function or similar functions are denoted by the same reference numerals unless there is a special reason.
図1は、本発明のソースコードトレーサを適用するターゲットデバイス30であり、プログラム方式の電子情報処理装置である。このターゲットデバイス30は、演算装置(CPU)31とメモリ32と入出力回路33とは、コントロールバス34、アドレスバス35およびデータバス36で接続されている。また入出力回路33からは、各種インターフェイスに向かう拡張バス37が設けられている。
FIG. 1 is a
また、図2は、本発明のソースコードトレーサ100をターゲットデバイス30に適用する場合の構成例を示している。本発明のソースコードトレーサ100は、データ収集器10と、これに接続したコンピュータ(PC)7を備えている。データ収集器10は、中継器20を通じてターゲットデバイス30のコントロールバス34、アドレスバス35およびデータバス36に接続している。また、拡張バス37の1つとPC7が接続している。ここで、拡張バス37に接続するコンピュータは、他のコンピュータでもよい。
FIG. 2 shows a configuration example when the
図3は、データ収集器10の構成例を示す図である。中継器20からのデータは、選択器1に送られ、アドレスバスを監視して、予め指定したアドレス宛てに送られたデータバス上のデータを取り込む。ここで、予め複数のアドレスを指定して、それぞれのアドレスをそれぞれの目的毎に使い分けてもよい。
データ処理器2では、取得したデータを解析し、整理し、必要に応じて圧縮してメモリ4に記憶する。この圧縮には、2次元デジタルデータを圧縮するため既によく知られた圧縮方法を用いることができる。最も簡単な方法として、同じデータが続く場合に繰り返しの頻度を添える圧縮方法があるが、この方法を用いてもよい。
この部分では、データ処理量が大きくなるため、例えばマルチコア等の高速デジタル信号処理器を用いることが望ましい。メモリ4に記憶されたデータは、入出力(I/O)器3、例えばUSB(ユニバーサルシリアルバス)トランシーバを用いてUSB6を通じて図2のPC7送る。ROM(読み出し専用メモリ)5は、電気的に書き換え可能なメモリであってもよく、また、入出力(I/O)器3のためのプログラムを記憶するデバイスであるが、USBトランシーバに内蔵されている場合は、外部に設ける必要は無い。
FIG. 3 is a diagram illustrating a configuration example of the
In the
In this part, the amount of data processing increases, so it is desirable to use a high-speed digital signal processor such as a multi-core, for example. The data stored in the memory 4 is sent to the
次に、本発明のソースコードトレーサ100を用いたデバッグ作業について、図4、図5を参照して説明する。
図4は、本発明のソースコードトレーサを用いたテスト支援システム内での処理の流れを示す図である。図4(A)では、ソースコードを解析し、関数の出入りや分岐処理の箇所にプログラムの実行に影響がないログコードを自動挿入する。図4(B)では、ログコードの実行を検知して記録する。図4(C)で、記録したデータを解析し、ソースコードやテストパターンと照合し、プログラム実行状況や検証結果をグラフィカルに表現する。また、図4(D)で、ログコードの組み込み箇所を変更して再実行する。このように処理することにより、評価結果をオンラインで保存し、バージョン毎に管理することが可能になる。また、検証結果を帳票出力することで、製品の検査証明のドキュメントとして利用できるようにもなる。
また、図5は、本発明のソースコードトレーサを用いた解析の流れを示す図である。図5(A)では、実デバイス上でプログラムを実行する。図5(B)では、メモリトレーサが、予めプログラムに組み込んでおいたログコードが実行されたことを検知し出力された情報を収集してPCへ送付する。図5(C)では、潜在する問題を素早く検出し分析することができるようにするために、プログラムの実行状況を視覚的に捕らえるように表示する。図5(D)では、プログラムに問題が見つかれば、修正し再度実行する。図5(E)では、問題が無くなれば完了するが、その際、使用したデータはそのままプログラムの品質を保証するドキュメントとなる。
Next, a debugging operation using the
FIG. 4 is a diagram showing the flow of processing in the test support system using the source code tracer of the present invention. In FIG. 4A, the source code is analyzed, and the log code that does not affect the execution of the program is automatically inserted at the entry / exit of the function or branch processing. In FIG. 4B, the execution of the log code is detected and recorded. In FIG. 4C, the recorded data is analyzed, collated with the source code and the test pattern, and the program execution status and the verification result are graphically expressed. Also, in FIG. 4D, the log code incorporation location is changed and re-executed. By processing in this way, the evaluation result can be stored online and managed for each version. Also, by outputting the verification result in a form, it can be used as a document for product inspection certification.
FIG. 5 is a diagram showing the flow of analysis using the source code tracer of the present invention. In FIG. 5A, the program is executed on the real device. In FIG. 5B, the memory tracer detects that the log code previously incorporated in the program has been executed, collects the output information, and sends it to the PC. In FIG. 5C, in order to be able to quickly detect and analyze a potential problem, the execution state of the program is displayed so as to be captured visually. In FIG. 5D, if a problem is found in the program, it is corrected and executed again. In FIG. 5E, the process is completed when there is no problem. At this time, the used data becomes a document that guarantees the quality of the program.
(1)ソースコード埋め込み
(図4(A))各種ターゲットのソースコードに対して、デバッグ作業以外では通常ターゲットデバイスが使用しない外部バスに出力するためのアドレスにデータを書き込むコード(以下、トレースコード)を埋め込む。
トレースコードの埋め込みに当たって、トレースコードは、アドレスとデータの組み合わせにより、ソースコードのどの箇所に埋め込まれたかを認識できるように埋め込む。例えばC言語の場合、ポイントとなる情報は、一関数の先頭と最後、分岐命令の直後、変数の情報などである。
この埋め込み作業は、PC7上で、専用アプリケーションを用いて実行する。他の独立したコンピュータ上で行ってもよいことは明らかである。
(1) Source code embedding (FIG. 4 (A)) A code for writing data to an address for outputting to an external bus that is not normally used by the target device except for debugging work (hereinafter referred to as a trace code). ) Is embedded.
In embedding the trace code, the trace code is embedded so that it can be recognized in which part of the source code is embedded by a combination of an address and data. For example, in the case of the C language, the information that becomes points is the beginning and end of one function, immediately after a branch instruction, information on variables, and the like.
This embedding work is executed on the
この方法の特長として、使用しない外部バスのアドレスに対しての書き込みであることから、CPUへの負荷を少なくしてトレースコードを実行できる点を挙げることができる。又、トレースコードの出力では、アドレスとデータの組み合わせでデバッグ行の位置を判別できるようにすることで、デバッグ行を埋め込める場所が従来の場合に比べて格段に増加する。 As a feature of this method, it is possible to execute a trace code by reducing the load on the CPU because it is writing to an address of an external bus that is not used. Further, in the output of the trace code, by enabling the position of the debug line to be determined by the combination of the address and the data, the place where the debug line can be embedded is significantly increased compared to the conventional case.
また、上記ターゲットデバイスが、フラッシュメモリやEEPROMなどの、書き込みの際に予め決められた書込み手続きの必要な半導体メモリを備える場合には、その半導体メモリに実際には書き込みを行なわないが書き込みを行なうように振る舞う疑似書き込みを行なうようにすることで、上記半導体メモリに割り当てたアドレスを、上記トレースコードを出力するためにも用いることができる。この疑似書き込みを行なうには、上記予め決められた書込み手続きから外れた書込み手続きを次の様に行なう。 Further, when the target device includes a semiconductor memory such as a flash memory or an EEPROM that requires a predetermined writing procedure at the time of writing, the semiconductor memory is not actually written but is written. By performing pseudo-writing that behaves like this, the address assigned to the semiconductor memory can also be used to output the trace code. In order to perform this pseudo-write, a write procedure that deviates from the predetermined write procedure is performed as follows.
書込み手続きは、例えば、JEDEC(半導体技術協会)標準型コマンド互換方式のフラッシュメモリの場合は、予め決められたアドレスに、コマンドを発行することで行なわれる。このコマンドは、データバス上の2進データである。例えば16ビットのデータバスの場合、?を16進表示で0からFまでの任意の値として、
??29、??30、??80、??90、??A0、??B0、??F0を、
アドレス=(??????A4、??????54)、のデータとして、
書き込むことで書込み手続きが完了する。
For example, in the case of a JEDEC (Semiconductor Technology Association) standard command compatible flash memory, the write procedure is performed by issuing a command to a predetermined address. This command is binary data on the data bus. For example, in the case of a 16-bit data bus? As an arbitrary value from 0 to F in hexadecimal notation,
? ? 29? ? 30 ,? ? 80? ? 90? ? A0? ? B0? ? F0,
As address = (????????? A4, ?????? 54),
The writing procedure is completed by writing.
このメモリのいかなるアドレス値に対しても、この書き込みが行なわれないようにするためには、上記のデータが発生しないようにすればよい事は明らかである。例えば、16ビットデータから上記の値を除いた集合を用いて、上記トレースコードの出力を行なえばよい。必要に応じてデータ変換を行なう。特に簡単な例としては、例えば、??00、を用いてアスキーデータとして出力することで、実際には書き込みを行なわない疑似書き込みとすることができる。 Obviously, in order to prevent this writing from being performed for any address value in this memory, it is sufficient to prevent the generation of the above data. For example, the trace code may be output using a set obtained by removing the above value from 16-bit data. Data conversion is performed as necessary. A particularly simple example is, for example,? ? 00 is output as ASCII data, so that pseudo writing can be performed without actually writing.
本発明の埋め込みは、従来のUART(Universal Asynchronous Receiver Transmitter)等の通信バスヘ情報を出力する方法に比べて、CPUへの負荷を軽減でき、また、GPIO(汎用ポート)へ出力する方法に比べて、埋め込める情報を増やすことができる、また、内部メモリヘ保存する方法では、エミュレーター等の接続が必須で、使用場面が限られるが、本発明では、実機を用いてデバッグすることができる。 The embedding of the present invention can reduce the load on the CPU compared to the conventional method of outputting information to a communication bus such as UART (Universal Asynchronous Receiver Transmitter), and also compared with the method of outputting to GPIO (general-purpose port). In the method of storing information in the internal memory, it is necessary to connect an emulator or the like, and the usage scene is limited. However, in the present invention, debugging can be performed using an actual machine.
(2)コンパイル・動作確認
トレースコードを埋め込んだソースコードをコンパイルし、各種ターゲットに転送し、上記のコンパイルされたトレースコードをターゲットデバイスで走らせ、そのシーケンスの確認を実際の動作に即して行う(図5(A))。
(2) Compile and check operation Compile source code with embedded trace code, transfer it to various targets, run the above compiled trace code on the target device, and check the sequence according to the actual operation. (FIG. 5A).
(3)出力されるコードの抽出とPCへの転送(図4(B)、図5(B))
データ収集器10は、トレースコードでターゲットから吐き出されるデータを取り込み、PC7への転送を行う。又、取り込み開始や取り込み停止などの操作はPC7上で専用アプリケーションを用いて行う。また、ターゲットから吐き出されるデータをすべて取り込む必要がない場合は、PC7からデータ収集器10に取り込むべきアドレスを設定して選択する。このデータ収集器10は、高速でデータ処理を行なう必要があることから、マルチコアの汎用マイクロプロセッサやゲートアレイを用いて構成した専用のデジタル信号処理器(DSP)などを使うことが望ましい。
また、データ収集器10は、CPUの外部バスに出力される波形を取り込む際に、情報が出力されるアドレスのデータを、ターゲットデバイスの、あるいはソースコードトレーサのタイムスタンプを付加してメモリ4に蓄える。ッ定量メモリにデータが蓄積された時に順次、解析装置(PC7)へとデータを転送する。あるいは、PC7からの要求に従って転送する。
収集する情報としては、例えば、(1)プログラムの、どの箇所が、いつ実行されたか、また、(2)プログラムの、どの部分で指定された変数に設定された値か、等が分かる情報である。
(3) Extraction of output code and transfer to PC (FIGS. 4B and 5B)
The
Further, when the
Information to be collected includes, for example, (1) which part of the program was executed when and (2) which part of the program is set to the variable specified in the information. is there.
(4)出力データの解析(図4(C))
次に、データ収集器10がPC7へ転送したデータ(以下、ログデータ)を、PC7上で専用アプリケーシヨンで解析する。この解析は、他のコンピュータでも行なうことができることは明らかであるが、この実施例では、なるべく少ない装置で処理する構成としている。
この解析については、図5(C)に示す様に、プログラムの実行状況を視覚的に捕らえ、潜在する問題を素早く検出・分析できるように表示することが望ましい。
ここでの解析により、例えば次の事項について明らかにすることができる。
(1)プログラムの実行順番を確認する事により、設計フロッとの相違を確認でき、異常個所の発見と正常に動作していることの証明が可能となる。
(2)プログラムの実行時のタイムスタンプ情報から、それぞれのデバッグ行間で処理に掛かった時間や、その処理が実行される間隔などのプログラムのリアルタイム性が、異常動作または正常動作の結果であるかどうかの判別が可能となる。
(4) Analysis of output data (FIG. 4C)
Next, the data transferred to the
As for this analysis, as shown in FIG. 5C, it is desirable to visually capture the execution status of the program and display it so that a potential problem can be detected and analyzed quickly.
For example, the following matters can be clarified by the analysis here.
(1) By confirming the execution order of the program, it is possible to confirm the difference from the design block, and it is possible to find an abnormal part and prove that it is operating normally.
(2) Whether the real-time performance of the program, such as the time taken for processing between each debug line and the interval at which the processing is executed, is the result of abnormal operation or normal operation from the time stamp information at the time of program execution It is possible to determine whether or not.
(図4(D))上記の解析結果からソースコードヘのフードバックを繰り返し行なうことで、プログラム作成が完了する。つまり、ユーザーは、解析結果を自分の設計思想と照らし合わせて分析し、異常個所の修正などを行いソースコードを変更し、上記(1)〜(4)を実行して設計思想との整合性を高めていく。また、図5(E)に示す様に、問題が無くなれば、使用したデータをそのままプログラムの品質を保証するドキュメントとすることもできる。 (FIG. 4D) The program creation is completed by repeatedly performing the food back to the source code from the above analysis result. In other words, the user analyzes the analysis result against his / her design philosophy, corrects the abnormal part and changes the source code, and executes the above (1) to (4) to ensure consistency with the design philosophy. To increase. Further, as shown in FIG. 5E, if there is no problem, the used data can be used as a document for guaranteeing the quality of the program as it is.
プログラムを開発するに当たっては、デバッグ作業が必要になるが、そのフローチャートを、従来の場合については図6に、本発明のソースコードトレーサを用いて行なう場合については図7に示す。 In developing the program, debugging work is required. The flowchart is shown in FIG. 6 for the conventional case and in FIG. 7 for the case of using the source code tracer of the present invention.
図6においては、デバッグしようとするプログラムC1を、C2で機能ごとに分解し、C3でそれぞれの機能の分類の中で各モジュールに分割する。C20でこの機能ごとの分解に沿って機能テスト仕様書が、また、C21でこの各モジュールへの分割を反映したモジュールテスト仕様書が作られる。例えばモジュールAについては、C4で関数毎に分割する。例えば関数Aでは、C5で関数を設計する。この関数の設計では、データ構造や制御構造の決定も行なう。C6でこの設計をもとにソースコードを作成する。C7でこのソースコードの検証を行ない、C8で要求仕様を満たすまでソースコードをデバッグする。この結果については、C22で単体テスト結果レポートにまとめられる。各モジュールが要求仕様を満たす場合は、次に、C9で各モジュールを結合した状態での結合テストが行なわれ、C23の結合テスト結果レポートにまとめられる。C10で結合テスト基準に合格した場合は、C11で各機能を合わせた総合テストが行なわれ、その結果は、C24の総合テスト結果レポートにまとめられる。また、合わせて、C25で、ソフト変更検証レポートが発行される。これは、プログラムを変更した後の検証結果についての報告である。C22で総合テスト基準に合格した場合は、C13でプログラムの開発が完了する。 In FIG. 6, a program C1 to be debugged is decomposed for each function at C2, and divided into modules in each function classification at C3. In C20, a function test specification is created along the disassembly for each function, and in C21, a module test specification reflecting the division into each module is created. For example, module A is divided for each function at C4. For example, in the function A, the function is designed with C5. In designing this function, the data structure and control structure are also determined. Source code is created based on this design in C6. The source code is verified in C7, and the source code is debugged until the required specification is satisfied in C8. These results are compiled into a unit test result report in C22. If each module satisfies the required specifications, then a coupling test is performed in a state where the modules are coupled in C9, and the combined test result report in C23 is collected. If the combined test standard is passed in C10, a comprehensive test combining the functions is performed in C11, and the result is compiled in a C24 comprehensive test result report. In addition, a software change verification report is issued at C25. This is a report on the verification results after changing the program. If the overall test standard is passed in C22, program development is completed in C13.
また、図7においては、デバッグしようとするプログラムP1を、P2で機能ごとに分解し、P3でそれぞれの機能の分類の中で各モジュールに分割する。P20でこの機能ごとの分解に沿って機能テスト仕様書が作られる。例えばモジュールAについては、P4で関数毎に分割する。例えば関数Aでは、P5で関数を設計する。この関数の設計では、データ構造や制御構造の決定も行なう。P6でこの設計をもとにソースコードを作成する。次に、P7で本発明の特徴の一つであるトレースコードの埋め込みを行なう。この埋め込みに沿って、P21でモジュールテスト仕様書が作られる。トレースコードの埋め込まれたソースコードは、P8で統合される。動作検証においては、必ずしも全てのモジュールや全ての機能部分を揃える必要はなく、動作可能となったものから検証作業を行なうこともできる。P9で上記の統合されたソースコードが実行されると、各トレースコードが予定のアドレスに出力されるので、これらを本発明のソースコードトレーサで収集し、分類することで、上記の単体テスト、結合テスト、あるいは総合テストを同時に行なった場合と等価な結果を得ることができる。また、P22で単体テスト結果レポート、P23で結合テスト結果レポート、P24で総合テスト結果レポートを得ることができる。また、プログラムを変更した場合は、その検証結果についてソフト変更検証レポートが発行される。 In FIG. 7, the program P1 to be debugged is decomposed for each function at P2, and is divided into modules in each function classification at P3. In P20, a function test specification is created along the disassembly for each function. For example, module A is divided for each function at P4. For example, in function A, a function is designed in P5. In designing this function, the data structure and control structure are also determined. At P6, source code is created based on this design. Next, in P7, the trace code which is one of the features of the present invention is embedded. Along with this embedding, a module test specification is created at P21. The source code in which the trace code is embedded is integrated at P8. In the operation verification, it is not always necessary to prepare all the modules and all the functional parts, and the verification work can be performed from the one that can be operated. When the above integrated source code is executed at P9, each trace code is output to a predetermined address. By collecting and classifying these trace codes with the source code tracer of the present invention, the unit test and combination described above are performed. A result equivalent to the case where the test or the comprehensive test is simultaneously performed can be obtained. Further, the unit test result report can be obtained at P22, the combined test result report at P23, and the comprehensive test result report at P24. When a program is changed, a software change verification report is issued for the verification result.
このように、本発明のソースコードトレーサを用いることによって、検証作業を一括で行なうことができ、しかも実際に用いる状態で検証作業を行なうことができるので、デバッグ作業が効率的になり、より容易に検証を行なうことができるようになる。 As described above, by using the source code tracer of the present invention, the verification work can be performed in a lump, and the verification work can be performed in a state where it is actually used, so that the debugging work becomes efficient and easier. Verification can be performed.
中継器20とCPUの外部メモリバスとの接続には、専用のフレキシブルプリント基板(FPC:Flexible Printed Circuits)で半田付けして接続することで、あるいはテスト用のソケットを設けてそれを通じて接続することでインピーダンスの低下を抑制して電気的に接続することができる。高速の外部メモリバスで無い場合は、CPUと基板の接続にソケットを用い、そのソケットに配線引き出し用下駄履き状ソケットを用いることもできる。また、電気光学結晶を用いて光学的にデジタル信号を抽出することも可能である。
The connection between the
ソースコードに挿入するデバッグ行のコメント部分に、所定の書式で、別のデバッグ行からの所要時間などの設計目標値を追記しておくと、この目標値と実際に収集したデータとを比較してレポートする機能を設けることで、デバッグ作業をより効率化できる。この機能を発展させて、ソースコードにおいて、実行コードにならないコメント部分に、設計段階で、各種の設計目標値を設計者が追記しておくことで、この目標値と実際のデータとを比較することができる。この機能を活用することで自動テスト判定システムが実現できる。 If a design target value such as the time required from another debug line is added to the comment part of the debug line to be inserted into the source code in a predetermined format, this target value is compared with the actually collected data. Debugging functions can be made more efficient. By developing this function, the designer adds various design target values to the comment part that does not become executable code in the source code at the design stage, so that this target value is compared with actual data. be able to. By utilizing this function, an automatic test determination system can be realized.
また、シリアルデータをパラレルデータに変換することは容易であることはよく知られている。これによって、テストコードの出力先として、パラレル構成の外部バスの場合だけでなく、シリアル構成の外部バスの場合にも本発明を容易に適用できることが分かる。 It is well known that it is easy to convert serial data to parallel data. As a result, it can be seen that the present invention can be easily applied not only to a parallel external bus as a test code output destination but also to a serial external bus.
1 選択器
2 データ処理器
3 入出力(I/O)器
4 メモリ
5 ROM(読み出し専用メモリ)
6 USB(ユニバーサルシリアルバス)
7 コンピュータ(PC)
8 拡張バス
10 データ収集器
20 中継器
30 ターゲットデバイス
31 演算装置(CPU)
32 メモリ
33 入出力回路
34 コントロールバス
35 アドレスバス
36 データバス
37 拡張バス
100 ソースコードトレーサ
1
6 USB (Universal Serial Bus)
7 Computer (PC)
8
32
Claims (5)
前記ターゲットデバイスのプログラムであるソースコードをコンパイルし、そのコンパイル時にデバッグ行を挿入するコンピュータ(以下、第1コンピュータ)と、
前記ターゲットデバイスのアドレスバス、データバス、またはコントロールバスからデータを選択的に収集し記憶するデータ収集器と、
上記データ収集器から収集データを外部のコンピュータ(以下、第2コンピュータ)に伝送する通信路と、を備え、
上記デバッグ行は、デバッグに用いデバッグ行のソースコード上の位置情報を含むデバッグ情報を、前記ターゲットデバイスのアドレスバス上の予め決められたアドレス向けの上記データバス上のデバッグデータとして出力する内容のものであり、
上記ターゲットデバイスは、予め決められた書込み手続きの必要な半導体メモリを備え、上記半導体メモリに割り当てられたアドレス宛てに、上記の書き込み手続きを含まない書込みコードを出力するデバッグ行を用いることを特徴とするソースコードトレーサ。 A target device which is a program-type electronic information processing apparatus;
A computer (hereinafter referred to as a first computer) that compiles a source code that is a program of the target device and inserts a debug line at the time of compilation;
A data collector that selectively collects and stores data from an address bus, data bus, or control bus of the target device;
A communication path for transmitting collected data from the data collector to an external computer (hereinafter, second computer),
The debug line is used to debug and includes debug information including position information on the source code of the debug line as debug data on the data bus for a predetermined address on the address bus of the target device. Is,
The target device includes a semiconductor memory that requires a predetermined write procedure, and uses a debug line that outputs a write code that does not include the write procedure to an address assigned to the semiconductor memory. Source code tracer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013083486A JP5397648B2 (en) | 2013-04-12 | 2013-04-12 | Source code tracer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013083486A JP5397648B2 (en) | 2013-04-12 | 2013-04-12 | Source code tracer |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009049415A Division JP5316780B2 (en) | 2009-03-03 | 2009-03-03 | Source code tracer |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013157018A JP2013157018A (en) | 2013-08-15 |
JP5397648B2 true JP5397648B2 (en) | 2014-01-22 |
Family
ID=49052063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013083486A Active JP5397648B2 (en) | 2013-04-12 | 2013-04-12 | Source code tracer |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5397648B2 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748878A (en) * | 1995-09-11 | 1998-05-05 | Applied Microsystems, Inc. | Method and apparatus for analyzing software executed in embedded systems |
JP2000235510A (en) * | 1999-02-15 | 2000-08-29 | Hitachi Ltd | Processor and compile program recording medium for the processor |
US6615370B1 (en) * | 1999-10-01 | 2003-09-02 | Hitachi, Ltd. | Circuit for storing trace information |
-
2013
- 2013-04-12 JP JP2013083486A patent/JP5397648B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013157018A (en) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800159B (en) | Program debugging method, program debugging device, terminal device, and storage medium | |
US9507688B2 (en) | Execution history tracing method | |
US6243836B1 (en) | Apparatus and method for circular buffering on an on-chip discontinuity trace | |
US10176078B1 (en) | Debugging process | |
KR20010109282A (en) | On-chip debug system | |
US20050289399A1 (en) | Tracer, tracer embedded processor, and method for operating the tracer | |
CN101667154A (en) | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems | |
CN111124789B (en) | Chip simulation debugging system and debugging method | |
US7818620B2 (en) | Program failure analysis system, failure analysis method, and emulator device | |
CN102567164A (en) | Instruction set batch testing device and method for processor | |
CN105550118A (en) | Debugging system and debugging method | |
CN107220175B (en) | Application program endless loop positioning method and device, computer equipment and storage medium | |
JP5316780B2 (en) | Source code tracer | |
KR102165747B1 (en) | Lightweight crash report based debugging method considering security | |
CN102722438B (en) | Kernel debugging method and equipment | |
CN111367742A (en) | Method, device, terminal and computer readable storage medium for debugging MVP processor | |
CN114660437A (en) | Waveform file generation method and device | |
JP4330573B2 (en) | Power consumption evaluation method, power consumption evaluation system | |
Bojan et al. | Functional coverage measurements and results in post-Silicon validation of Core™ 2 duo family | |
JP5397648B2 (en) | Source code tracer | |
CN112685316A (en) | Code execution path acquisition method and device, computer equipment and storage medium | |
US20070265822A1 (en) | Data processing system and method | |
JP5316810B2 (en) | Electronic measuring instrument | |
JP2008135008A (en) | Program module verification method | |
CN100403275C (en) | Micro processor and method using in firmware program debug |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20130910 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131008 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5397648 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |