目次→PIC入門


基本的なデバッグ作業



デバッグというのは作成したソフトウェアが期待通りの動作をするかどうかを確認することです。
バグ(Bug)とは虫の意味で、害虫のことを指しています。害虫を取り除く作業がデバッグです。

デバッグを行うのにはいくつかの方法があります。ここでは1ステップずつ実行する方法とブレークポイント(処理を一時停止するポイント)による方法を説明します。
説明に使用するプログラムは先の例で示したものを使います。

ステップによるデバッグ

ステップデバッグは規模が小さなソフトウェアの動作確認、または、特定の処理部分の動作を確認するのに便利な方法です。
アイコンボタンで がステップ実行ボタン"です。もし、ステップボタンがツールバーに表示されていない場合には一番左側の Swap Toolbar ボタン を押して表示させます。
ステップデバッグは Debug → Run → Step でも実行できます。

準備
    ウインドウにはアッセンブルリストとファイルレジスタを表示しておきます。
    Window → Absolute Listing : アッセンブルリスト表示

    Window → File Registers  : ファイルレジスタ表示


デバッグの実施

(1) リセット操作
    アイコンボタンで がリセットボタンです。左下のステータスに"Reset Processor"と表示されます。もし、ステップボタンがツールバーに表示されていない場合には を押して表示させます。
    PICの状態を電源投入直後の状態にします。
    リセットは Debug → Run → Reset でも実行できます。
    アッセンブルリストのプログラム番地が0の部分に黒いバー(以後PCバーと称します)が表示されます。このバーはプログラムカウンター(PC)の位置を示しています。

    次にファイルレジスタの内容を確認してみます。03hが 18 になっています。この場所はSTATUSレジスタでTOおよびPDが "1" になっています。これは電源投入直後の状態を示しています。


(2) 1ステップ実行
    ステップボタン を押します。
    PCバーが一つ進んで1番地に移動します。
    ファイルレジスタは以下のように変わります。

    02h(PC)00→01プログラムカウンタが1番地になりました。
    03h (STATUS)
    18→1C
    CLEF を実行した結果、Zフラッグに"1"が立ったためです。


(3) 1ステップ実行
    ステップボタン を押します。
    PCバーがさらに一つ進んで2番地に移動します。
    ファイルレジスタは以下のように変わります。

    02h(PC)01→02プログラムカウンタが2番地になりました。
    03h(STATUS)
    1C→18
    INCF を実行した結果が0でないので、Zフラッグが"0"になったためです。
    0Ch

    00→01
    目的のカウンターがカウントアップされました。


(4) 1ステップ実行
    ステップボタン を押します。
    PCバーが1番地に移動します。
    ファイルレジスタは以下のように変わります。

    02h(PC)02→01GOTO を実行した結果、PCが01hになりました。


(5) 1ステップ実行
    ステップボタン を押します。
    PCバーが2番地に移動します。
    ファイルレジスタは以下のように変わります。

    02h(PC)01→02プログラムカウンタが2番地になりました。
    0Ch

    01→02
    目的のカウンターがカウントアップされました。


以降、ステップボタンを押す毎にPCバーは1番地と2番地の交互に変わります。
1番地を実行する都度、ファイルレジスタの 0Ch がカウントアップされます。

以上のように1ステップ毎の動作を確認することができます。



ブレークポイントによるデバッグ

この方法はブレークポイントで停止したときの各種データを確認することにより、ソフトウェアの動作を確認する方法です。
ブレークポイントまでの処理を一挙に行うことができるので、デバッグを効率よく行うことができます。
ブレークポイントが設定された命令を実行する前に処理は一時停止します。

ブレークポイントの設定方法
    (設定方法1)
    アッセンブルリストで処理を停止させたいステップをクリックしてカーソルを移動します。一行中のどの場所でもかまいません。
マウスの右クリックボタンを押します。メニューに中の Break Point(s) をクリックします。カーソルのある行が赤色に変わり、ブレークポイントが設定されます。ブレークポイントは複数の行に設定することができます。


    (設定方法2)
    他の設定方法としてラベルを使用する方法があります。
    を押すとブレークポイント設定画面が表示されます。
    この操作は Debug → Break Settings... でも行えます。
    設定画面の Start 項目をプルダウンすると処理に付けたラベルが表示されるので、その中から、ブレークポイントを設定するラベルを選択します。次に Add ボタンを押すと、ブレークポイントが登録されます。チェックマークが付いていればブレークポイントは有効です。


準備
    ウインドウにはアッセンブルリストとファイルレジスタを表示しておきます。
    Window → Absolute Listing : アッセンブルリスト表示
    Window → File Registers  : ファイルレジスタ表示

デバッグの実施

(1) リセット操作
    リセットボタン を押してPICの状態を電源投入直後の状態にします。
    PCバーは0番地のところにあります。
    ファイルレジスタの内容は以下のようになります。

      02h (PC)00
      03h(STATUS)
      18


(2) ブレークポイントの設定
    プログラムの2番地(GOTO文)にブレークポイントを設定します。
    先の設定方法1で設定します。設定されるとその行が赤色に変わります。

(3) 処理実行
    ランボタン を押します。 ラン操作は Debug → Run → Run でもできます。
    PCバーが2番地に変わります。
    ファイルレジスタは以下のように変わります。

      02h(PC)00→02プログラムカウンタが2番地になりました。
      0Ch

      00→01
      目的のカウンターがカウントアップされました。


(4) 処理実行
    ランボタン を押します。
    PCバーは2番地のままです。
    ファイルレジスタは以下のように変わります。

      0Ch

      01→02
      目的のカウンターがカウントアップされました。

以降、ランボタンを押す毎にファイルレジスタ 0Ch の内容がカウントアップされます。

(5) デバッグ終了
    アイコンボタンの がストップボタン(Halt the processor)です。
    終了の操作は Debug → Run → Halt でも行うことができます。
    ブレークポイントで停止している状態ではデバッグ動作は継続しています。デバッグを終了する場合にはストップボタンで停止させる必要があります。