MPLAB IDEによるデバッグ

デバッガの選択

MPLAB SIM

MPLAB IDE上で動作するデバッガです。シミュレータでI/Oを操作することにより疑似的に入出力を与え、それによる挙動を調べることもできます。

使用するには、メニューの【Debugger → MPLAB SIM】を選択します。

※リストに[MPLAB SIM]が表示されないときには、MPLAB IDEにコンポーネントを追加します。

MPLAB ICD2 (In-Circuit Debugger)

インサーキットデバッガ。実際にマイコンを動かしながらデバッグできます。使い方は簡単で、DebuggerとしてMPLAB ICD2を選択した後はMPLAB SIMと同様に扱えます。≫MPLAB ICD2の使用方法

Device Debug Resource Toolbar (DDRT)

デバッガとしてインサーキットデバッガを選択すると、DDRTが表示されます。

  • HW BP (HardWare BreakPoints) … ハードウェア ブレークポイントのサポート数
  • Used (hardware breakpoints USED) … ハードウェア ブレークポイントの使用数
  • SW BP (SoftWare BreakPoints) … ソフトウェア ブレークポイントの状態
DS51519C 12.3.4 Device Debug Resource Toolbar

デバッグ情報の作成

デバッグを行うためには、デバッグ情報が作成されている必要があります。これが作成されていないと、ブレークポイントを設定したときに

One or more breakpoints could not be resolved.
Select Breakpoints from the Debugger menu for details.

のようなエラーが表示されます。

デバッグ情報を作成するには、プロジェクト ウィンドウでデバッグを行うプロジェクトを右クリックします。そしてコンテキストメニューから[Build Options]を選択し、[Generate debugging information]の項目にチェックを入れます。

これはコンパイラオプションで「-g」を指定するのと同義です。


ファイルのビルドオプション

デバッグの実行

コマンド ホットキー
Run F9
Halt F5
Animate  
Step Into F7
Step Over F8
Step Out  
Reset F6
Manage breakpoints F2

このように実行中の行をハイライトするには、エディタ上で右クリックし[Properties...]を選択します。そしてEditor Propertiesで[Other]タブを選択し、[Debugger PC Location - Highlight Full Line]にチェックを入れます。

ブレークポイント (Breakpoint)

ブレークポイントの設定

ブレークポイントを設定したい行の行番号部分をダブルクリックすることで、ブレークポイントを設定できます。

インサーキットデバッガ

デバッガにインサーキットデバッガを指定しているとき、ブレークポイント設定時に「No More Breakpoints」と表示されることがあります。

これは利用できるブレークポイント数の制限を超えることを意味し、このとき設定したブレークポイントは機能しません。なおエラーメッセージに表示されるように、Step OverとRun To Cursorにはブレークポイントが必要なため、利用可能なブレークポイントは実際より1つ少なくなります。

参考

  • 8.4 BREAKPOINTS (DS51519C)

実行状態のモニタ

メニューの【View】から、以下で解説する各種のウィンドウを表示できます。

Watch

特定のSFRや変数を表示し、その値の確認および変更をできます。


Watch

ウォッチする変数を登録するには、

  • 上部のコンボボックスから選択し、[Add SFR]または[Add Symbol]をクリックする
  • 変数をエディタからウォッチ ウィンドウ上へドラッグ&ドロップする
  • [Address]または[Symbol Name]の一覧の下部の空欄で、ダブルクリックしてアドレスまたは変数名を直接入力する

のいずれかの方法で行えます。

リストの表示は、上部のヘッダをクリックすることで、アルファベット順または数値順に並べ替えられます。また表示されている項目をドラッグ&ドロップすることで、任意の順に並べられます。

Special Function Registers (SFR)

SFRを一覧し、その値の確認および変更をできます。


Special Function Registers

File Registers

データメモリの内容を一覧し、その値の確認および変更をできます。


File Registers

Program Memory

プログラムメモリの内容を一覧し、その値の確認および変更をできます。


Program Memory

実行時間の測定

Stopwatchによって実行時間を測定できます。これはメニューの【Debugger → StopWatch】から表示できます。表示項目が2つありますが、

  • Instruction Cycles … 命令サイクル
  • Time … 実行時間

の意味になります。

なお実行時間は実行周波数によって決まりますので、事前にそれを設定しておく必要があります。これはメニューの【Debugger → Settings】にあります。

UARTのシミュレート

UARTをシミュレートするには、メニューの【Debugger → Settings】からUart1 IOタブを選択し、[Enable Uart1 IO]にチェックを入れます。

出力先の指定

デバッガでMPLAB SIMを選択したときにUARTの出力先が指定されていないと、Outputウィンドウに UART-W0005: Uart is enabled but no output destination has been assigned. (File or Output Window) のようなメッセージが表示されます。

このような場合は[Simulator Settings]の[Uart1 IO]の設定画面において、Outputの項目で[Window]か[File]を指定します。

出力先にWindowが指定されるとOutputウィンドウにSIM Uart1タブが追加され、UARTからの出力がここに表示されます。

バッファオーバーランの通知

バッファがフルの状態で送信を試みると、Outputウィンドウで UART-W0001: Write attempted to a Full FIFO buffer, data lost のように通知されます。

Stimulus

参考

  • Chapter 19. Using Stimulus (DS51519C)

インサーキットデバッグ (In-Circuit Debug)

デバッグに失敗する場合

次の項目を確認します。

デバッグに失敗する主な理由

  1. オシレータが動作していない。
    ≫オシレータに関するコンフィグレーション ビットの設定を確認してください。
  2. ターゲットボードに電源が供給されていない。
    ≫電源ケーブルの接続を確認してください。
  3. デバッガとPCまたはターゲットボードが物理的に接続されていない。
    ≫通信ケーブルの接続を確認してください。
  4. デバイスのコード保護が有効になっている。
    ≫コード保護に関するコンフィグレーションビットの設定を確認してください。
  5. Releaseモードでプロジェクトの再ビルドを行おうとしている。
    ≫プロジェクト マネージャツールバーの[Build Configuration]ドロップダウン リストで[Debug]を選択してからプロジェクトを再ビルドしてください。
  6. MPLAB IDEでPICkit 3が、デバッガではなくプログラマとして選択されている。
  7. デバッガとPCの通信が中断された。MPLAB IDEでデバッガに再接続します。
  8. ターゲット アプリケーションに破損またはエラーがある。
    ≫ターゲット アプリケーションを再ビルドしてプログラミングし直してください。その後で、ターゲットでパワーオンリセットを実行します。
  9. 他のコンフィグレーション設定が干渉してデバッグが行えない。
    ≫ターゲットがコードを実行できないようなコンフィグレーション設定が行われていると、デバッガはコードをデバッグモードにする事ができません。
  10. デバッガは、要求された動作を常に実行できるわけではありません。たとえばターゲットアプリケーションが実行中の場合、デバッガはブレークポイントを設定できません。
PICkit 3 プログラマ/デバッガ ユーザガイド (DS51795B_JP) - 7.3 デバッグに失敗する主な理由

これらの項目に当てはまらない場合でも、MPLAB IDEを再起動するだけで問題が解決されることもあります。

参考

  • MPLAB IDE User’s Guide with MPLAB Editor and MPLAB SIM Simulator (DS51519C)
    (Part 6 – MPLAB SIM Simulator)