JPH0465729A - Symbolic debugger - Google Patents
Symbolic debuggerInfo
- Publication number
- JPH0465729A JPH0465729A JP2178297A JP17829790A JPH0465729A JP H0465729 A JPH0465729 A JP H0465729A JP 2178297 A JP2178297 A JP 2178297A JP 17829790 A JP17829790 A JP 17829790A JP H0465729 A JPH0465729 A JP H0465729A
- Authority
- JP
- Japan
- Prior art keywords
- trace
- program
- value
- trigger point
- ring buffer
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims abstract description 20
- 239000000872 buffer Substances 0.000 claims description 40
- 238000004891 communication Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
〈産業上の利用分野〉
本発明は、シンボリック・デバッガに関し、詳しくはカ
ーネル・シンボリック・Cソースデバッガにおける、タ
ーゲットプログラムの実行過程をトレースする機能に関
するものである。
〈従来の技術〉
UNIX(米国AT&Tベル研究所が開発しライセンス
しているオペレーティングシステムである。UNIXは
登録商標)等におけるC言語で記述されたカーネルのデ
バッグを行うデバッグ・システムとして、例えば、本願
出願人が出願した特願平1−2884524 rデバッ
グ・システム」のようなC言語レベルでカーネルをデバ
ッグすることのできるシンボリックデバッグa能を有し
たデバッガ(カーネル・シンボリック・Cソースデバッ
ガ二以下KDBという)がある。
このようなKDBを用いてC言語で記述されているUN
IX等のカーネルをデバッグする場合、ターゲットプロ
グラムのある特定のアドレスにブレークポイントを設定
してそのポイントごとに一時的にプログラムの実行を停
止させ、マイクロプロセッサの内部状態や、メモリさら
にはプログラム内の変数などを参照しながらデバッグを
行なう方法が一般的にとられていた。
一方デバッグ時に、プログラムの実行過程をトレースし
て、ターゲットプログラムがどのような過程で動作して
きたのかを確認したい場合には、KDB自体にそのよう
な機能がないため、ICE(インサーキット・エミュレ
ータ)やロジ・ツク・アナライザ等を用いてデバッグせ
ざるを得なかった。
〈発明が解決しようとする課題〉
しかしながら、ICEやロジック・アナライザ自体は、
システムが非常に高価であるばかりでなく、C言語レベ
ルでのプログラムトレース行うことができないという問
題があった。
また、ICEにおいては、マイクロプロセッサの種類に
よってサポートしていない場合があったり、またターゲ
ットとなるハードウェアの動作周波数が高い場合にはI
CEの動作遅延のために正常に使用できないことがある
といった問題もあった。
本発明の目的は、このような点に鑑みてなされたもので
、KDBを用いてUNIX等のカーネルのデバッグを行
なう際に、使用者がターゲットプログラム中のトレース
を得たい箇所(以下トリガポイントという)を、あるい
はトレース結果を得たい場所(以下トレースエリアとい
う)を、それぞれトリガポイントの前後あるいはトリガ
ポイントの直前または直後などと指定することによって
、ターゲットプログラムの実行過程をC言語レベルでト
レースすることが可能となるようにした機能を有するシ
ンボリック・デバッガを提供することにある。
く課題を解決するための手段〉
このような目的を達成するための本発明は、トレース割
り込み機能を有するマイクロプロセッサと、ハードウェ
アデバッガを搭載したROMと、プログラムの実行過程
を保存しておくためのリングバッファと、モニタの制御
や外部マシンとの間で通信を行うために必要な制御を行
うコントローラなどより構成されたCPUボードと、こ
のCPUボードとは通信回線を介して接続され、使用者
がC言語レベルでターゲットプログラム中のトリガポイ
ントとトレースエリアを指定することができるホスト・
デバッグマシンを備え、
■ターゲットプログラムを実行させる際に、前記ハード
ウェアデバッガによりかマイクロプロセ・yすのトレー
ス機能を用いて1命令ずつプログラムを実行し、その際
のプログラムカウンタの値を前記リングバッファ内に保
存し、
■プログラムがトリガポイントを通過するのを確認した
とき、前記トレースエリアによってリングバッファ内に
プログラムカウンタの値を保存し、■トレース結果を参
照する場合は、前記リングバッファ内に保存されたプロ
グラムカウンタの値を取り出し、RS−232C回線経
由でホスト・デバッグマシンにデータを送信し、
■ホスト・デバッグマシンでは、送信されたプログラム
カウンタの値の情報をもとに、C言語でのプログラムソ
ースコードに変換して、モニタにトレース結果を表示さ
せる
ようにしたことを特徴とする。
く作用〉
本発明では、ターゲットプログラム中のトリガポイント
とトレースエリアを指定する。また、ハードウェアデバ
ッガによるトレース機能を用いて1命令ずつプログラム
を実行させ、その際のプログラムカウンタの値をリング
バッファ内に保存する。
プログラムがトリガポイントを通過するのが確認された
ときには、その後リングバッファ内のトレースエリアに
プログラムカウンタの値を保存する。
このようにして保存されたプログラムカウンタの値は通
信回線を介してホスト・デバッグマシンに送信される。
ホスト・デバッグマシンでは、C言語でプログラムソー
スコードに変換して、デイスプレィにトレース結果を表
示させる。
〈実施例〉
以下図面を参照して本発明の詳細な説明する。
以下、トレース割り込み機能を有したマイクロプロセッ
サとして、モトローラ社のMC680X O(Xは存在
する形名の任意の数値)を使用した場合を例にとる。
第1図は本発明のシンボリック・デバッガの基本的なシ
ステムを示す構成図である0図において、10はCPU
ボード、20はRS−232C回線経由でCPUボード
と接続されKDBが動作するホスト・デバッグマシン、
30はモニタである。
CPUボード10において、11はトレース割り込み機
能を有するマイクロプロセッサ(MC680XO)、1
2はプロセッサ1に与える基準のクロックを発生するク
ロック発生器、13はハードウェアデバッガが搭載され
ているROM、14はトレース結果を保存しておくため
のデバッガ用ワークRAM、15はデバッガのモニタリ
ングの制御やKDBとの通信を行なうコントローラ(例
えば、MC6850)、16は他のハードウェアである
。
ワークRAM14内のトレースデータ保存用バッファ(
図示せず)は、第2図に示すように、バッファアドレス
ポインタ(プログラムカウンタを格納するためのバッフ
ァ内のアドレスを示すポインタ)をソフトウェアで制御
して、リングバッファ構造をとるような構成となってい
る。すなわち実際のバッファの最終点が、バッファアド
レスポインタによって、先頭に連鎖的に接続されている
かのように見なすことができる。これによって、実際に
はサイズが決まっているデータ保存用バッファも、論理
的には最終点が存在しないような構成をとることが可能
となる。
さらにリングバッファには、ターゲットプログラムを実
行させたときの、プログラムカウンタの値が保存納でき
、このため1つのアセンブラ命令の実行につき32ビツ
ト(MC68000は24ビツト)の値、すなわち4バ
イトのアドレスデータをバッファに保存することができ
るようになっている。
第3図は、MC68030のステータスレジスタの構成
を示す、ステータスレジスタは、16ビツト構成であり
、ビット15.14はトレース・イネーブル・ビットと
呼ばれ、この2つのビットのステータスによって、ター
ゲットプログラムを実行させたときにトレースの例外処
理が行なわれ、割り込みが発生するようになっている。
すなわちトレース機能を実現するためには、ターゲット
プログラムを実行させる前にあらかじめCPUボード1
0内のハードウェアデバッガ13でこれらのビットをセ
ットしておき、割り込みが発生した際にスタックフレー
ムからプログラムカウンタの値を取り出してリングバッ
ファ内に格納する操作を1命令ずつ行なえば良い、また
トレース結果を参照する場合は、リングバッファ内のプ
ログラムカウンタの値を読み出してRS−232C回線
経由でホスト・デバッグ・マシン20に送信し、KDB
によってそのプログラムカウンタの情報をもとにC言語
のソースコードに変換することによって、ターゲットプ
ログラムの実行過程をトレースすることが可能となる。
次に、ハードウェアデバッガの割り込み処理の中でプロ
グラムカウンタの値をリングバッファ内に格納する方法
について説明する。
まず使用者が、ホスト・デバッグ・マシン20によって
KDBを起動し、ターゲットプログラム中のトレース情
報を得たい部分をトリガポイントとしてC言語のソース
コードでの行番号で指定する。また、トリガポイントを
含むトレース情報を得たい領域をトレースエリアとして
指定する。
トレースエリアは、トリガポイントの前後(about
)、直前(before)、直後(after)の中か
ら適当なものを選んで指定する。
ハードウェアデバッガは、これらのパラメータを受は取
って、ステータスレジスタのトレース・イネーブル・ビ
ットをセットし、ターゲットプログラムを1命令実行さ
せたときに、トレースの例外処理が発生するようにする
。
その後ターゲットプログラムを実行させると、1命令実
行する度にトレースの例外割り込みが発生し、割り込み
処理の中でトレース例外用のスタックフレームよりプロ
グラムカウンタの値を取り出してリングバッファに保存
する。このときバッファアドレスポインタは、プログラ
ムカウンタがリングバッファに保存される度に更新され
、もしポインタがバッファの最終点になった場合は次の
ポインタの値をバッファの先頭とする。また、このとき
取り出したプログラムカウンタの値と、設定したトリガ
ポイントの値を比較する。
もし割り込み処理中に取り出したプログラムカウンタの
値と設定したトリガポイントの値が等しければ、設定さ
れたトレースエリアの情報に従ってプログラムカウンタ
の値をリングバッファに格納するか否かを判断する。す
なわち、about指定ならばその後リングバッファの
物理サイズの半分だけプログラムカウンタの値を保存し
、before指定ならばプログラムカウンタの保存を
ただちに終了し、after指定ならばその後リングバ
ッファの物理サイズだけプログラムカウンタの値を保存
する。
その後、ステータスレジスタのトレース・イネーブル・
ビットをクリアし、トレースの例外割り込みが発生しな
い状態でターゲットプログラムを再実行させる。
トレース結果を参照する場合は、保存しておいたプログ
ラムカウンタの値をリングバッファより取り出し、RS
−232C回線経由でKDBの動作しているホスト・デ
バッグ・マシン20へ送信し、KDBによってそのプロ
グラムカウンタの情報をもとにC言語のソースコードに
変換する。トレース結果はモニタ30のデイスプレィ上
に表示される。
以上のようにして、ターゲットプログラムの実行過程を
トレースすることができる。
本発明によりターゲットプログラムの実行過程をトレー
スする方法を第4図ないし第6図のフローチャートを用
いて次に説明する。第4図は本機能を設定する際の処理
を示すものであり、第5図は得られたトレース結果を表
示するものである。
また第6図はトレース割り込みが発生した際のハードウ
ェアデバッガの動作を示すフローチャートである。<Industrial Application Field> The present invention relates to a symbolic debugger, and more particularly to a function of tracing the execution process of a target program in a kernel symbolic C source debugger. <Prior Art> For example, the present invention is used as a debugging system for debugging a kernel written in C language in UNIX (an operating system developed and licensed by AT&T Bell Laboratories in the United States.UNIX is a registered trademark). A debugger (kernel symbolic C source debugger 2 hereinafter referred to as KDB) that has a symbolic debugging function capable of debugging the kernel at the C language level, such as Japanese Patent Application No. 1-2884524 R Debug System filed by the applicant, is ). UN written in C language using such KDB
When debugging a kernel such as IX, you can set breakpoints at specific addresses in the target program and temporarily stop program execution at each point to check the internal state of the microprocessor, memory, and even the contents of the program. A commonly used method was to perform debugging while referring to variables. On the other hand, when debugging, if you want to trace the program execution process and check the process in which the target program has operated, KDB itself does not have such a function, so you can use an ICE (in-circuit emulator). I had no choice but to debug using software such as a computer or a logic analyzer. <Problems to be solved by the invention> However, ICE and logic analyzers themselves
Not only is the system very expensive, but it also has the problem of not being able to perform program tracing at the C language level. Additionally, depending on the type of microprocessor, ICE may not support it, or if the target hardware has a high operating frequency.
There was also the problem that the CE could not be used normally due to operational delays. The purpose of the present invention has been made in view of the above points. When debugging a UNIX kernel using KDB, the user wants to obtain a trace in a target program (hereinafter referred to as a trigger point). ), or the location where you want to obtain trace results (hereinafter referred to as the trace area), by specifying the location before and after the trigger point, or just before or after the trigger point, respectively, to trace the execution process of the target program at the C language level. The object of the present invention is to provide a symbolic debugger with functions that enable the following. Means for Solving the Problems> To achieve such objects, the present invention comprises a microprocessor having a trace interrupt function, a ROM equipped with a hardware debugger, and a ROM for storing program execution processes. The CPU board is connected via a communication line, and is composed of a ring buffer and a controller that performs the necessary controls for controlling the monitor and communicating with external machines. is a host program that allows you to specify trigger points and trace areas in a target program at the C language level.
Equipped with a debug machine, ■When executing the target program, the program is executed one instruction at a time using the hardware debugger or the trace function of the microprocessor, and the value of the program counter at that time is stored in the ring buffer. ■When it is confirmed that the program passes the trigger point, the value of the program counter is saved in the ring buffer by the trace area, and ■When the trace result is to be referenced, it is saved in the ring buffer. The host debug machine extracts the value of the program counter that has been sent and sends the data to the host debug machine via the RS-232C line. ■The host debug machine reads the data in C language based on the transmitted program counter value information. It is characterized by converting it into program source code and displaying the trace results on a monitor. Effect> In the present invention, a trigger point and a trace area in a target program are specified. Further, the program is executed one instruction at a time using the trace function of the hardware debugger, and the value of the program counter at that time is saved in the ring buffer. When it is confirmed that the program passes the trigger point, the value of the program counter is then stored in the trace area in the ring buffer. The program counter value thus saved is transmitted to the host debug machine via the communication line. The host debug machine converts the program source code in C language and displays the trace results on the display. <Example> The present invention will be described in detail below with reference to the drawings. Hereinafter, we will take as an example a case where Motorola's MC680XO (X is any numerical value of an existing model name) is used as a microprocessor having a trace interrupt function. FIG. 1 is a block diagram showing the basic system of the symbolic debugger of the present invention. In FIG.
The board 20 is a host debug machine that is connected to the CPU board via an RS-232C line and runs KDB.
30 is a monitor. In the CPU board 10, 11 is a microprocessor (MC680XO) having a trace interrupt function;
2 is a clock generator that generates a reference clock to be given to the processor 1; 13 is a ROM in which a hardware debugger is installed; 14 is a debugger work RAM for storing trace results; and 15 is a debugger monitoring device. A controller (for example, MC6850) that performs control and communication with the KDB, and 16 are other hardware. Trace data storage buffer in work RAM 14 (
(not shown) has a ring buffer structure in which the buffer address pointer (pointer indicating the address within the buffer for storing the program counter) is controlled by software, as shown in Figure 2. ing. In other words, the end point of the actual buffer can be viewed as if it were chained to the beginning point by the buffer address pointer. This allows a data storage buffer, which actually has a fixed size, to be configured so that there is no logical final point. Furthermore, the ring buffer can store the value of the program counter when the target program is executed, so each execution of one assembler instruction stores a 32-bit value (24 bits for the MC68000), or 4 bytes of address data. can be saved in a buffer. Figure 3 shows the configuration of the status register of MC68030. The status register has a 16-bit configuration, and bits 15 and 14 are called trace enable bits, and the target program is executed depending on the status of these two bits. When this happens, trace exception handling is performed and an interrupt is generated. In other words, in order to realize the trace function, the CPU board 1 must be installed in advance before executing the target program.
All you have to do is set these bits in the hardware debugger 13 in 0, and when an interrupt occurs, take out the program counter value from the stack frame and store it in the ring buffer, one instruction at a time. To refer to the results, read the program counter value in the ring buffer, send it to the host debug machine 20 via the RS-232C line, and send it to the KDB.
By converting the program counter information into a C language source code, it becomes possible to trace the execution process of the target program. Next, a method of storing the value of the program counter in the ring buffer during interrupt processing of the hardware debugger will be described. First, the user starts KDB using the host debugging machine 20 and specifies the part of the target program from which trace information is to be obtained as a trigger point using a line number in the C language source code. In addition, the area in which you want to obtain trace information including the trigger point is designated as a trace area. The trace area is the area before and after the trigger point.
), immediately before, and immediately after. The hardware debugger receives these parameters, sets a trace enable bit in the status register, and causes trace exception processing to occur when the target program executes one instruction. When the target program is then executed, a trace exception interrupt occurs every time one instruction is executed, and during interrupt processing, the program counter value is extracted from the trace exception stack frame and stored in the ring buffer. At this time, the buffer address pointer is updated every time the program counter is stored in the ring buffer, and if the pointer reaches the end of the buffer, the value of the next pointer is set as the beginning of the buffer. Also, the value of the program counter taken out at this time is compared with the value of the set trigger point. If the value of the program counter taken out during interrupt processing is equal to the value of the set trigger point, it is determined whether the value of the program counter is to be stored in the ring buffer according to the information of the set trace area. In other words, if the about specification is specified, then the value of the program counter is saved by half the physical size of the ring buffer, if the before specification is specified, saving of the program counter is immediately finished, and if the after specification is specified, the value of the program counter is then saved by the physical size of the ring buffer. Save the value. Then trace enable status register
Clear the bit and re-execute the target program without any trace exception interrupts. To refer to the trace results, retrieve the saved program counter value from the ring buffer and send it to the RS
The data is sent via the -232C line to the host debug machine 20 on which KDB is operating, and converted into C language source code by KDB based on the program counter information. The trace results are displayed on the display of monitor 30. In the above manner, the execution process of the target program can be traced. Next, a method for tracing the execution process of a target program according to the present invention will be explained using the flowcharts shown in FIGS. 4 to 6. FIG. 4 shows the processing when setting this function, and FIG. 5 shows the obtained trace results. FIG. 6 is a flowchart showing the operation of the hardware debugger when a trace interrupt occurs.
【トレース機能設定(第4図)】
■および■の処理
ホスト・デバッグマシン20のKDBより、使用者にト
リガポイントとトレースエリアの指定を要求する。トリ
ガポイントは、C言語でのソースコードの行番号であり
、トレースエリアは、about、before、af
terの指定で行なう。
■および■の処理
ハードウェアデバッガで、KDBで指定したトリガポイ
ントとトレースエリアの情報を、ワークエリアに保存す
る。この際トレースエリアの情報は、ターゲットプログ
ラムがトリガポイントを通過してから、何ステップのト
レース結果を保存するかを示すバッファポインタに変換
する。
■の処理
ターゲットプログラムがトリガポイントを通過したこと
示すフラグ(トリガポイント通過フラグ)をクリアする
。
■の処理
マイクロプロセッサ内のステータスレジスタのトレース
・イネーブル・ビットをセットする。これによって、タ
ーゲットのプログラムが1命令ずつ実行されると、トレ
ースの例外割り込みが発生する。[Trace function setting (FIG. 4)] Processing of (1) and (2) The KDB of the host/debug machine 20 requests the user to specify the trigger point and trace area. The trigger point is the line number of the source code in C language, and the trace area is about, before, af
This is done by specifying ter. ① and ② Processing Using the hardware debugger, save the trigger point and trace area information specified in KDB to the work area. At this time, the trace area information is converted into a buffer pointer indicating how many steps of trace results are to be saved after the target program passes the trigger point. Process (2) Clear the flag indicating that the target program has passed the trigger point (trigger point passing flag). ② Set the trace enable bit in the status register in the processing microprocessor. As a result, when the target program is executed one instruction at a time, a trace exception interrupt occurs.
【トレース結果表示(第5図)】
■の処理
KDBよりハードウェアデバッガに対して、トレース結
果の送信要求をする。
■の処理
リングバッファ内のトレース結果であるプログラムカウ
ンタの情報を、RS−232C回線経由で、KDBの動
作しているホスト・デバッグ・マシン20へ送信する。
■および■の処理
得られたトレース結果より、C言語でのソースコード上
で対応する箇所を探索し、その結果をモニタ30に表示
する。[Displaying trace results (FIG. 5)] Processing in (2) The KDB requests the hardware debugger to send the trace results. The program counter information, which is the trace result in the processing ring buffer of (2), is transmitted via the RS-232C line to the host debug machine 20 on which the KDB is operating. Based on the trace results obtained from the processing of (1) and (2), a corresponding location is searched on the source code in C language, and the result is displayed on the monitor 30.
【トレース割り込み(第6図)】
■および■の処理
トレース例外用スタックフレームに積まれているプログ
ラムカウンタの値を取り出して、バッファポインタが指
し示すリングバッファの領域に保存する。
■の処理
バッファアドレスポインタの値を更新する。このとき、
ポインタの値が実際のバッファの最終点であるなら、次
のポインタの値は実際のバッファの先頭とする。
■の処理
トレース例外用スタックフレームから取り出したプログ
ラムカウンタの値と、設定したトリガポイントとの値を
比較する。もし等しい場合は次の■の処理に移行し、等
しくないならば■の処理へ移行する。
■の処理
ターゲットプログラムがトリガポイントを通過したので
、トリガポイント通過フラグをセットする。これにより
次の処理■の判断処理以降は、■の処理を実行する。
■の処理
トリガポイント通過フラグを参照して、ターゲットプロ
グラムが設定したトリガポイントを通過したか否かを調
べる。もし通過している場合は■の処理へ移行し、通過
していない場合は■の処理へ移行する。
■の処理
ステータスレジスタのトレース・イネーブル・ビットを
セットして、例外処理からリターンする。
これにより、ターゲットプログラムが次の1命令を実行
すると再びトレース例外割り込みが発生するようにする
。
■の処理
バッファポインタの値が0であるか否かを判断する。も
しOならば、リングバッファにプログラムカウンタの値
を保存することを終了させるために処理 へ移行する。
もし0でないならば、処理■へ移行する。
■の処理
ステータスレジスタのトレース・イネーブル・ビットを
セットして、ターゲットプログラムをさらに1命令実行
させた際に次のトレース例外割り込みが発生するように
する。
■の処理
バッファポインタの値から1を引く。
の処理
ステータスレジスタのトレース・イネーブル・ビットを
クリアして、トレースの例外割り込みが発生しないよう
にする。
上記実施例によれば、ターゲットプログラムのトレース
結果は、指定されたトレースエリアの情報によって、ト
リガポイントの前後、トリガポイントの直前、トリガポ
イントの直後の3種の指定が可能である。
さらにこれを発展すれば、次に示すような機能も可能と
することができる。
■KDBよりトレースエリアを指定する際に、ターゲッ
トプログラムがトリガポイントを通過してから、何ステ
ップのトレース結果を保存するかを示す値を指定できる
ようにすれば、トリガポイントを含む領域を自由に指定
してトレース結果を得ることができる。したがって、使
用者は期待する確実なトレース結果を得ることができる
。
■KDBよりトリガポイントを指定する際に、トリガポ
イントを何回通過してからトレース結果を保存するかを
指定できるようにすれば、ターゲットプログラムがトリ
ガポイントを何回か通過する場合でも、確実にトレース
結果を得ることができる。
なお、このIl能は、ハードウェアデバッガ内でカウン
タを用いて簡単にソフトウェア的に実現することができ
る。
〈発明の効果〉
以上詳細に説明したように、本発明によるプログラムト
レース機能を用いれば、パブファリングされたプログラ
ムの実行過程をC言語のソースコードレベルでトレース
し、ターゲットプログラムがどのような過程で動作して
きたのかを確認しながらデバッグすることが可能となる
。
したがって、従来のブレークポイントIl能だけを持つ
KDBとハードウェアデバッガから構成されたデバッグ
システムと比較して、本発明のデバッグ・システムによ
ればデバッグ効率が飛躍的に向上することが分かる。
また本発明のデバッグ機能は、CPUボード内のファー
ムウェアの一部であるハードウェアデバッガと、ホスト
・デバッグマシン上で動作するソフトウェアのKDBと
で実現されているため、トレース結果のバッファリング
用メモリさえあれば簡単に実現可能となる。そのため、
ICEやロジックアナライザを使用してデバッグする従
来の方法と比較すると、安価な方法でターゲットプログ
ラムをトレースしながら容易にデバッグすることができ
る。[Trace interrupt (FIG. 6)] The value of the program counter loaded in the stack frame for process trace exceptions of (1) and (2) is taken out and saved in the area of the ring buffer pointed to by the buffer pointer. (2) Update the value of the processing buffer address pointer. At this time,
If the pointer value is the end of the actual buffer, the next pointer value is the beginning of the actual buffer. Compare the program counter value retrieved from the processing trace exception stack frame in (2) with the value of the set trigger point. If they are equal, proceed to the next process (2), and if they are not equal, proceed to process (2). Processing in (2) Since the target program has passed the trigger point, set the trigger point passing flag. As a result, after the next determination process (2), the process (2) is executed. Check whether the target program has passed the set trigger point by referring to the processing trigger point passing flag in (2). If it has passed, the process moves to ■, and if it has not passed, it moves to process ■. ② Set the trace enable bit in the processing status register and return from exception processing. This causes the trace exception interrupt to occur again when the target program executes the next instruction. (2) Determine whether the value of the processing buffer pointer is 0 or not. If it is O, the process moves on to finish saving the program counter value in the ring buffer. If it is not 0, the process moves to process (2). Set the trace enable bit in the processing status register (2) so that the next trace exception interrupt will occur when the target program is executed for one more instruction. Subtract 1 from the value of the processing buffer pointer in (2). Clear the trace enable bit in the processing status register to prevent trace exception interrupts from occurring. According to the above embodiment, the trace result of the target program can be specified in three types according to the information of the specified trace area: before and after the trigger point, immediately before the trigger point, and immediately after the trigger point. If this is further developed, the following functions can also be made possible. ■When specifying the trace area from KDB, if you can specify a value indicating how many steps of trace results to save after the target program passes the trigger point, you can freely select the area that includes the trigger point. You can specify and get trace results. Therefore, the user can obtain the desired reliable trace results. ■When specifying a trigger point from KDB, if you can specify how many times the trigger point must be passed before saving the trace result, you can ensure that even if the target program passes the trigger point several times. Trace results can be obtained. Note that this Il function can be easily realized in software using a counter within a hardware debugger. <Effects of the Invention> As explained in detail above, by using the program tracing function according to the present invention, the execution process of a published program can be traced at the C language source code level, and the process of the target program can be traced. This allows you to debug while checking whether it is working properly. Therefore, it can be seen that the debugging system of the present invention dramatically improves the debugging efficiency compared to the conventional debugging system composed of a KDB and a hardware debugger having only the breakpoint Il function. Furthermore, since the debug function of the present invention is realized by a hardware debugger that is part of the firmware in the CPU board and a KDB that is software running on the host debug machine, even the memory for buffering the trace results is If so, it can be easily achieved. Therefore,
Compared to conventional methods of debugging using ICE or logic analyzers, this method allows easy debugging while tracing the target program in an inexpensive manner.
【図面の簡単な説明】
第1図は本発明に係るシンボリック・デバッガの一実施
例を示す構成図、第2図はリングバッファの構成説明図
、第3図はステータスレジスタの構成を示す図、第4図
ないし第6図は動作を説明するためのフローチャートで
ある。
10・・・CPUボード、11・・・プロセッサ、12
・・・クロック発生器、13・・・ROM、14・・・
RAM、15・・・コントローラ、20・・・ホスト・
デバッグマシン、30・・・モニタ。
第4図
第、S図[BRIEF DESCRIPTION OF THE DRAWINGS] FIG. 1 is a configuration diagram showing an embodiment of a symbolic debugger according to the present invention, FIG. 2 is an explanatory diagram of the configuration of a ring buffer, and FIG. 3 is a diagram illustrating the configuration of a status register. 4 to 6 are flowcharts for explaining the operation. 10...CPU board, 11...Processor, 12
...Clock generator, 13...ROM, 14...
RAM, 15... Controller, 20... Host
Debug machine, 30...monitor. Figure 4, Figure S
Claims (1)
ハードウェアデバッガを搭載したROMと、プログラム
の実行過程を保存しておくためのリングバッファと、モ
ニタの制御や外部マシンとの間で通信を行うために必要
な制御を行うコントローラなどより構成されたCPUボ
ードと、このCPUボードとは通信回線を介して接続さ
れ、使用者がC言語レベルでターゲットプログラム中の
トリガポイントとトレースエリアを指定することができ
るホスト・デバッグマシン を備え、 (1)ターゲットプログラムを実行させる際に、前記ハ
ードウェアデバッガによりがマイクロプロセッサのトレ
ース機能を用いて1命令ずつプログラムを実行し、その
際のプログラムカウンタの値を前記リングバッファ内に
保存し、 (2)プログラムがトリガポイントを通過するのを確認
したとき、前記トレースエリアによってリングバッファ
内にプログラムカウンタの値を保存し、 (3)トレース結果を参照する場合は、前記リングバッ
ファ内に保存されたプログラムカウンタの値を取り出し
、RS−232C回線経由でホスト・デバッグマシンに
データを送信し、 (4)ホスト・デバッグマシンでは、送信されたプログ
ラムカウンタの値の情報をもとに、C言語でのプログラ
ムソースコードに変換して、モニタにトレース結果を表
示させる ようにしたことを特徴とするシンボリック・デバッガ。[Claims] A microprocessor having a trace interrupt function;
It consists of a ROM equipped with a hardware debugger, a ring buffer for storing the program execution process, and a controller that performs the necessary controls for controlling the monitor and communicating with external machines. A CPU board is connected to the CPU board via a communication line, and is equipped with a host debug machine that allows the user to specify trigger points and trace areas in the target program at the C language level. When executing a program, the hardware debugger executes the program one instruction at a time using the trace function of the microprocessor, and stores the value of the program counter at that time in the ring buffer; When it is confirmed that the trigger point has been passed, the value of the program counter is saved in the ring buffer by the trace area, and (3) when referring to the trace result, the value of the program counter saved in the ring buffer is saved. (4) The host debug machine converts the data into C language program source code based on the transmitted program counter value information. A symbolic debugger that converts and displays trace results on a monitor.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2178297A JPH0465729A (en) | 1990-07-05 | 1990-07-05 | Symbolic debugger |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2178297A JPH0465729A (en) | 1990-07-05 | 1990-07-05 | Symbolic debugger |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0465729A true JPH0465729A (en) | 1992-03-02 |
Family
ID=16046011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2178297A Pending JPH0465729A (en) | 1990-07-05 | 1990-07-05 | Symbolic debugger |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0465729A (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260743B2 (en) | 2004-01-13 | 2007-08-21 | International Business Machines Corporation | System and method for achieving autonomic computing self-healing, utilizing meta level reflection and reasoning |
US7840856B2 (en) | 2002-11-07 | 2010-11-23 | International Business Machines Corporation | Object introspection for first failure data capture |
US8301580B2 (en) | 2002-04-10 | 2012-10-30 | Ipventure, Inc. | Method and system for managing computer systems |
-
1990
- 1990-07-05 JP JP2178297A patent/JPH0465729A/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301580B2 (en) | 2002-04-10 | 2012-10-30 | Ipventure, Inc. | Method and system for managing computer systems |
US7840856B2 (en) | 2002-11-07 | 2010-11-23 | International Business Machines Corporation | Object introspection for first failure data capture |
US7260743B2 (en) | 2004-01-13 | 2007-08-21 | International Business Machines Corporation | System and method for achieving autonomic computing self-healing, utilizing meta level reflection and reasoning |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5630049A (en) | Method and apparatus for testing software on a computer network | |
US9244815B2 (en) | Integrated debugger and code coverage tool | |
WO2021057057A1 (en) | Target-code coverage testing method, system, and medium of operating system-level program | |
JP2005317023A (en) | Breakpoint logic unit, debug logic, and breakpoint method for data processing apparatus | |
JPH0689200A (en) | Debug system and method | |
US9361205B2 (en) | Code coverage framework | |
JP2003508864A (en) | Thread-oriented debugging | |
JPH0465729A (en) | Symbolic debugger | |
JPH0581070A (en) | Programmable controller and user program execution method in programmable controller | |
JP2659366B2 (en) | Debugging method and device | |
JPS61180342A (en) | Step execution system for high level language | |
JPH0283749A (en) | Internal interruption control system for microprocessor | |
JP2800577B2 (en) | Debug device | |
JP2590154B2 (en) | Program debug support device for parallel processor | |
JPH03175539A (en) | Debugging microprocessor | |
JPS63271542A (en) | Rom debugger | |
JPS61180344A (en) | Step execution system for high level language | |
JPH10207737A (en) | Emulator and emulation system | |
JPH0318939A (en) | In-circuit emulator | |
JPH04132542U (en) | Debatsuga | |
JPH0659931A (en) | Debugging device | |
JPS6325742A (en) | Microprocessor with tracing function | |
JPH0259829A (en) | Microcomputer | |
JPH02284236A (en) | Program debugging processor | |
JPS5844543A (en) | Trigger tracing circuit |