답변:
Majenko의 답변에서 언급했듯이 Arduino IDE는 중단 점 메커니즘을 제공하지 않지만 Atmel Studio는 중단 점을 지원합니다 . [*]
그러나 스위치와 LED가 있으면 중단 점의 이점을 제공하는 방식으로 프로그램의 진행 상황을 추적 할 수 있습니다. BPReport()
직렬 출력 또는 LCD를 통해 임계 변수 값을보고 한 다음 LED를 켜고 디 바운스로 스위치를 눌렀다 놓을 때까지 기다리는 서브 루틴을 추가합니다 . BPReport()
무조건 중단 점을 원할 때 마다 루틴을 호출하십시오 . 조건부 중단 점의 경우 true 인 경우 BPReportIf(cond)
호출 하는 루틴 을 가질 수 있습니다 . 직렬을 통해 출력하지 않으려면 여러 개의 LED 또는 LCD를 사용하고 외부 차단 제어를 원할 경우 여러 스위치를 사용할 수 있습니다 (예 : 추가 스위치 중 하나를 테스트 할 수 있음).BPReport()
cond
cond
[*] 일부 하드웨어 디버거는 중단 점이 추가, 변경 또는 제거 될 때마다 다운로드 된 코드를 수정합니다. 이 사용법은 플래시 메모리를 가끔 다운로드하는 것보다 더 빨리 소모됩니다. 이러한 디버깅에 칩이 많이 사용 된 경우 프로덕션 시스템에서 해당 칩을 사용하지 마십시오.
Majenko의 대답은 정확하지만 다른 옵션이 있습니다.
majenko가 말한 실제 하드웨어 디버깅에 관해서는 다음과 같이 말합니다.
완전히 다른 범주의 다른 디버깅 옵션은 의사 결정 논리 (하드웨어 독립)와 작업 (하드웨어 종속)이 완전히 분리되도록 코드를 구성하는 것입니다.
그런 다음 스케치를 로컬 프로그램으로 컴파일하고 로컬 컴퓨터에서 "결정 논리"를 디버그하십시오. 이 방법은 "하드웨어 디버깅"을 허용하지 않습니다. 이 방법은 또한 단위 테스트를 가능하게합니다.
로컬 컴퓨터는 아마도 32 또는 64 비트이고 대부분의 Arduino는 8 비터 이므로이 방법을 사용할 때 추가주의 사항 인 데이터 유형에 차이가 생길 수 있습니다.
아두 이노 - 디버그 라이브러리는 아두 이노 스케치에 대한 간단한에서 대상 디버거를 제공합니다. 디버그 명령이 스케치에 직접 추가됩니다. 디버거 명령 셸은 중단 점 및 어설 션에서 시작됩니다.
위의 스크린 샷은 응용 프로그램에서 사용하는 직렬 출력 모니터와 디버거 쉘에 사용 된 Serial1이있는 Arduino Mega에서 실행되는 스케치 예를 보여줍니다 .
스케치 디버그 명령
디버그 쉘 명령
모든 디버그 쉘 명령은 단일 문자 명령으로 축약 될 수 있습니다. 자세한 내용은 README를 참조하십시오. 설치 세부 사항, 예제 스케치 및 벤치마킹.