MPLAB IDE上で動作するデバッガです。シミュレータでI/Oを操作することにより疑似的に入出力を与え、それによる挙動を調べることもできます。
使用するには、メニューの【Debugger → MPLAB SIM】を選択します。
※リストに[MPLAB SIM]が表示されないときには、MPLAB IDEにコンポーネントを追加します。インサーキットデバッガ。実際にマイコンを動かしながらデバッグできます。使い方は簡単で、DebuggerとしてMPLAB ICD2を選択した後はMPLAB SIMと同様に扱えます。≫MPLAB ICD2の使用方法
デバッガとしてインサーキットデバッガを選択すると、DDRTが表示されます。
デバッグを行うためには、デバッグ情報が作成されている必要があります。これが作成されていないと、ブレークポイントを設定したときに
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]にチェックを入れます。
ブレークポイントを設定したい行の行番号部分をダブルクリックすることで、ブレークポイントを設定できます。
デバッガにインサーキットデバッガを指定しているとき、ブレークポイント設定時に「No More Breakpoints」と表示されることがあります。
これは利用できるブレークポイント数の制限を超えることを意味し、このとき設定したブレークポイントは機能しません。なおエラーメッセージに表示されるように、Step OverとRun To Cursorにはブレークポイントが必要なため、利用可能なブレークポイントは実際より1つ少なくなります。
メニューの【View】から、以下で解説する各種のウィンドウを表示できます。
特定のSFRや変数を表示し、その値の確認および変更をできます。
Watch
ウォッチする変数を登録するには、
のいずれかの方法で行えます。
リストの表示は、上部のヘッダをクリックすることで、アルファベット順または数値順に並べ替えられます。また表示されている項目をドラッグ&ドロップすることで、任意の順に並べられます。
SFRを一覧し、その値の確認および変更をできます。
Special Function Registers
データメモリの内容を一覧し、その値の確認および変更をできます。
File Registers
プログラムメモリの内容を一覧し、その値の確認および変更をできます。
Program Memory
Stopwatchによって実行時間を測定できます。これはメニューの【Debugger → StopWatch】から表示できます。表示項目が2つありますが、
の意味になります。
なお実行時間は実行周波数によって決まりますので、事前にそれを設定しておく必要があります。これはメニューの【Debugger → Settings】にあります。
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 のように通知されます。
次の項目を確認します。
デバッグに失敗する主な理由
PICkit 3 プログラマ/デバッガ ユーザガイド (DS51795B_JP) - 7.3 デバッグに失敗する主な理由
- オシレータが動作していない。
≫オシレータに関するコンフィグレーション ビットの設定を確認してください。- ターゲットボードに電源が供給されていない。
≫電源ケーブルの接続を確認してください。- デバッガとPCまたはターゲットボードが物理的に接続されていない。
≫通信ケーブルの接続を確認してください。- デバイスのコード保護が有効になっている。
≫コード保護に関するコンフィグレーションビットの設定を確認してください。- Releaseモードでプロジェクトの再ビルドを行おうとしている。
≫プロジェクト マネージャツールバーの[Build Configuration]ドロップダウン リストで[Debug]を選択してからプロジェクトを再ビルドしてください。- MPLAB IDEでPICkit 3が、デバッガではなくプログラマとして選択されている。
- デバッガとPCの通信が中断された。MPLAB IDEでデバッガに再接続します。
- ターゲット アプリケーションに破損またはエラーがある。
≫ターゲット アプリケーションを再ビルドしてプログラミングし直してください。その後で、ターゲットでパワーオンリセットを実行します。- 他のコンフィグレーション設定が干渉してデバッグが行えない。
≫ターゲットがコードを実行できないようなコンフィグレーション設定が行われていると、デバッガはコードをデバッグモードにする事ができません。- デバッガは、要求された動作を常に実行できるわけではありません。たとえばターゲットアプリケーションが実行中の場合、デバッガはブレークポイントを設定できません。
これらの項目に当てはまらない場合でも、MPLAB IDEを再起動するだけで問題が解決されることもあります。