Debug


プログラムデバッグ


 本装置で動作させるユーザプログラムをデバッグするに、特別のデバッグ用インタフェース装置(H-UDI,ICE)は提供していません。
 ソフトウェアのツールを使用してユーザプログラムの動作を確認します。

 方法として以下の2つの方法があります。

 1)作成するユーザプログラムに「ツール関数」を予め埋め込んでおき、指定位置で外部に「デバッグ情報」を出力する方法。
  RS-232CインタフェースまたはTELNETプロセスをデバッグ情報出力端として動作させます。
   RS-232C: RsInit , RsOut / RsOut2 をユーザプログラム内に埋め込みます。
   TELNET: TrInit , TrOut / TrOut2 をユーザプログラム内に埋め込みます。
  また、 LED関連 のファンクションを使用して、制御の分岐などを確認することも可能です。

  この方法ですと、以下の手順になります。
   ・ 実際に作成されたモトローラファイルを本装置にダウンロードします。
   ・ 動作パラメータの起動プログラムにユーザプログラム名を設定します。
   ・ ロータリスイッチ(0〜3)でリセットし、ユーザプログラムを走行させます。
   ・ TELNETプロセス使用の場合は、TELNETクライアントからログインしておきます。
   ・ RS-232Cの場合はターミナルソフトなどのオープンをしておきます。
   ・ ツールが埋め込まれたステートメントに起動がかかるとデバッグメッセージが出力されます。

 2)TELNETプロセスを使用する方法。
  本装置はユーザプログラムデバッグ用の「簡易デバッガ」を、TELNETプロセスの一部の機能として搭載しています。
  「簡易デバッガ」を使用する手順は以下です。
   ・ 実際に作成されたモトローラファイルを本装置にダウンロードします。
   ・ 動作パラメータの起動プログラムに「TelnetSv」を設定します。
   ・ デバッグを行なうユーザプログラム名を、動作パラメータも起動プログラムから削除します。
   ・ ロータリスイッチ(0〜3)でリセットし、TELNETサーバを走行させます。
   ・ TELNETクライアントからログインします。

  本装置の「簡易デバッガ」は以下のコマンドをサポートします。

コマンド
パラメータ
内容
B
アドレス、ブレークポイント番号 ブレークポイントの設定・参照
D
アドレス範囲、サイズ メモリダンプ
G
 - プログラムの実行
L
プログラム名 ユーザプログラムのロード
R
 - レジスタの表示
S
アドレス、サイズ メモリの編集
T
 - シングルステップ実行
U
アドレス範囲 逆アセンブル
Q
 - 簡易デバッガの終了

  ・起動と終了
  本装置を「通常動作モード」で動作させ、TELNETクライアントからログインします。
  TELNETのプロンプトに対して
    EX DEBUG
  と入力してEnterキーを押すと「簡易デバッガ」のプロンプト「-」を表示します。
  プロンプトに対して
    Q
  と入力すると「簡易デバッガ」を終了して、TELNETのプロンプトを表示します。
  このとき、デバッグ中のプログラムも終了してメモリ解放する。

  ・「ユーザプログラムのロード」
  以下のコマンドを入力するとプログラムをRAMにロードします。
    L プログラム名
  ロードするプログラムは予め本装置のユーザプログラム格納エリアにダウンロードしておいて下さい。
  既にロードされているプログラムが存在する場合、新たにロードしたプログラムの置換されます。
  このとき、ブレークポイントの設定も初期化されます。

  ・「ブレークポイントの設定・参照」
  以下のコマンドを入力すると指定されたアドレスにブレークポイントを設定します。
    B [Address [0/1]]
  「簡易デバッガ」ではブレークポイントを最大2箇所の設定できます。
  指定可能なブレークポイント番号は0または1のいずれかです。番号を省略した場合は0とみなします。
  パラメータを省略すると現在設定されているブレークポイントを表示します。
  C060100番地にブレークポイントを設定したい場合、
    B C060100
  と入力してEnterキーを押します。

  ・「プログラム実行」
  プロンプトに対して
    G
  を入力するとロードされているプログラムの実行を開始します。
  ブレークポイントが設定されている場合、そのアドレスの実行前で停止します。
  停止するとその時点のレジスタの値と、停止したアドレスのニーモニックを表示します。

  ・「シングルステップ実行」
  プロンプトに対して
    T
  を入力するとロードされているプログラムを1命令だけ実行します。
  実行後の時点のレジスタの値と、停止したアドレスのニーモニックを表示します。
  TRAPA命令でシングルステップ実行を行なった場合、無条件トラップから復帰した時点で停止します。
  RET命令でシングルステップ実行を行なわないで下さい。行なった場合の結果は予測できません。

  ・「レジスタ表示」
  プロンプトに対して
    R
  を入力すると現在のレジスタの値を表示します。値は全て16進です。
R0 = hhhhhhhh R1 = hhhhhhhh R2 = hhhhhhhh R3 = hhhhhhhh
R4 = hhhhhhhh R5 = hhhhhhhh R6 = hhhhhhhh R7 = hhhhhhhh
R8 = hhhhhhhh R9 = hhhhhhhh R10 = hhhhhhhh R11 = hhhhhhhh
R12 = hhhhhhhh R13 = hhhhhhhh R14 = hhhhhhhh R15 = hhhhhhhh
GBR = hhhhhhhh MACH = hhhhhhhh MACL = hhhhhhhh PR = hhhhhhhh
VBR = hhhhhhhh PC = 0C060000 SR = 40000000

  ・「逆アセンブル」
  以下のコマンドを入力すると指定したアドレスの範囲を逆アセンブルして表示します。
    U [StartAddress [EndAddress]]
  終了アドレスを省略すると、16命令分を表示します。
  開始、終了アドレス共に省略すると、前回表示した続きから16命令分表示します。
  アドレスは16進で入力して下さい。
    U 0
  と入力してEnterキーを押すと、0番地から16命令分逆アセンブルして表示します。
00000000 DF33 MOV.L H'000000D0,R15
00000002 D031 MOV.L H'000000C8,R0
00000004 A006 BRA H'00000014
00000006 402E LDC R0,VER
00000008 00A0 ?
0000000A C2FF MOV.L R0,@(H'03FC,GBR)
0000000C FE4C ?
00000010 6100 MOV.B @R0,R1
00000012 0000 ?
00000014 D830 MOV.L H'000000D8,R8
00000016 480B JSR @R8
00000018 0009 NOP
0000001A D02C MOV.L H'000000CC,R0
0000001C 9348 MOV.W H'000000B0,R3
0000001E 330C ADD R0,R3

  ・「メモリダンプ」
  以下のコマンドを入力すると指定したアドレス範囲のメモリ内容を表示します。
    D [StartAddress [EndAddress [B/W/L]]]
  表示サイズはB(1バイト)、W(2バイト)、L(4バイト)単位で表示します。
  終了アドレスを省略すると、256バイト分表示します。
  開始、終了アドレスを省略すると、前回の続きから256バイト分表示します。
  アドレスは16進で入力して下さい。
    D 10000 W
  と入力してEnterキーを押すと、10000番地から256バイト分のデータをワード単位で表示します。
00010000 4B65 726E 656C 2020 4D4F 5400 8001 0018
00010010 8000 0008 0104 6300 E1FF D021 2012 D221
00010020 D31D 332C 6033 6405 6501 644D 655D E000
00010030 6125 301C 600D 3320 8BFA 340C 350C 644D
00010040 655D 2448 8913 2558 8911 D114 0002 201B
00010050 400E D815 C71B 911B 6403 E000 9219 E32F
00010060 9618 E520 2100 2230 2600 482B 2150 DF0F
00010070 D10F D010 412E 400B 0009 D10F 410B 0009

  ・「メモリの編集」
  以下のコマンドを入力すると指定したアドレスからメモリ内容を変更します。
    S [Address [B/W/L]]
  編集サイズはB(1バイト)、W(2バイト)、L(4バイト)単位になります。
  アドレスおよびデータは16進で入力して下さい。
    S C0600000
  と入力してEnterキーを押すと、C060000番地からバイトデータの入力待ちになります。
    C0600000 00 ->
   データを入力してEnterキーを押すと次のアドレスに進みます。
    C0600000 00 -> 1  「1(0x01)」を入力した     C0600001 00 ->
   編集を終了する場合はデータを入力せずにEnterキーを押します。