回答:
Majenkoの回答で述べたように、Arduino IDEはブレークポイントメカニズムを提供していませんが、Atmel Studioはブレークポイントをサポートしています。[*]
ただし、スイッチとLEDがある場合は、ブレークポイントのいくつかの利点を提供する方法でプログラムの進行状況を追跡できます。たとえばBPReport()
、シリアル出力またはLCDを介して重要な変数の値を報告し、LEDを点灯させ、スイッチが押されて解放されるまで、デバウンスで待機するサブルーチンを追加します。BPReport()
無条件のブレークポイントが必要な場所ならどこでもルーチンを呼び出します。条件付きブレークポイントの場合、trueの場合BPReportIf(cond)
に呼び出すルーチンを作成 できます。シリアル経由で出力したくない場合は、複数のLEDまたはLCDを使用できます。外部ブレークコントロールが必要な場合は、複数のスイッチを使用できます(たとえば、追加のスイッチの1つをテストできます)。BPReport()
cond
cond
[*]一部のハードウェアデバッガーは、ブレークポイントが追加、変更、または削除されるたびに、ダウンロードされたコードを変更します。その使用法は、たまにダウンロードするよりも速くフラッシュメモリを消耗します。チップがそのようなデバッグに頻繁に使用されている場合は、そのチップを本番システムで使用しないでください。
マジェンコの答えは正しいですが、他にもいくつかの選択肢があります。
majenkoが述べた実際のハードウェアデバッグに関しては、次のように言います。
まったく異なるカテゴリの別のデバッグオプションは、コードを編成して、決定ロジック(ハードウェアに依存しない)とアクション(ハードウェアに依存する)を完全に分離することです。
次に、スケッチをローカルプログラムとしてコンパイルし、ローカルマシンで「決定ロジック」をデバッグします。この方法では、「ハードウェアデバッグ」はできません。この方法では、単体テストも可能です。
ローカルマシンはおそらく32ビットまたは64ビッターであり、ほとんどのArduinoは8ビッターであるため、この方法を使用する場合は特に注意が必要なデータ型の違いが生じることに注意してください。
Arduinoの-デバッグライブラリはArduinoのスケッチのためのシンプルなオンターゲットデバッガを提供します。デバッグコマンドがスケッチに直接追加されます。デバッガーコマンドシェルは、ブレークポイントとアサーションで開始されます。
上のスクリーンショットは、アプリケーションで使用されるシリアル出力モニターとデバッガーシェルで使用されるSerial1を備えたArduino Megaで実行されたスケッチの例を示しています。
スケッチデバッグコマンド
シェルコマンドのデバッグ
すべてのデバッグシェルコマンドは、1文字のコマンドに短縮できます。詳細については、READMEを参照してください。インストールの詳細、サンプルスケッチ、ベンチマーク。