Điểm dừng là một cách tuyệt vời để xem trình biên dịch chạy đến mã của bạn. Bây giờ câu hỏi của tôi là, có khả năng sử dụng các điểm dừng khi bạn gỡ lỗi mã của mình không?
Điểm dừng là một cách tuyệt vời để xem trình biên dịch chạy đến mã của bạn. Bây giờ câu hỏi của tôi là, có khả năng sử dụng các điểm dừng khi bạn gỡ lỗi mã của mình không?
Câu trả lời:
Như đã lưu ý trong câu trả lời của Majenko, Arduino IDE không cung cấp cơ chế điểm dừng nhưng Atmel Studio không hỗ trợ các điểm dừng . [*]
Tuy nhiên, nếu bạn có công tắc và đèn LED, bạn có thể theo dõi tiến trình của chương trình theo cách cung cấp một số lợi ích của điểm dừng. Bạn sẽ thêm một chương trình con, BPReport()
thông qua đầu ra nối tiếp hoặc màn hình LCD báo cáo các giá trị của các biến quan trọng, sau đó bật đèn LED và đợi cho đến khi công tắc được nhấn và nhả ra, cùng với việc gỡ lỗi. Gọi cho BPReport()
thói quen của bạn bất cứ nơi nào bạn muốn một điểm dừng vô điều kiện. Đối với các điểm dừng có điều kiện, bạn có thể có một thói quen BPReportIf(cond)
gọi BPReport()
nếu cond
là đúng. Nếu bạn không muốn xuất qua nối tiếp, bạn có thể sử dụng một số đèn LED hoặc LCD và bạn có thể sử dụng một số công tắc nếu bạn muốn điều khiển ngắt ngoài (ví dụ: cond
có thể là một thử nghiệm của một trong các công tắc phụ).
[*] Một số trình gỡ lỗi phần cứng sửa đổi mã đã tải xuống mỗi lần điểm dừng được thêm, thay đổi hoặc xóa. Việc sử dụng đó sẽ làm hao mòn bộ nhớ flash nhanh hơn so với việc thỉnh thoảng tải xuống nó. Nếu một con chip đã được sử dụng nhiều cho việc gỡ lỗi như vậy, đừng sử dụng con chip đó trong một hệ thống sản xuất.
Mặc dù Majenko câu trả lời của ông là đúng, có một số lựa chọn khác.
Đối với việc gỡ lỗi phần cứng thực sự như đã nêu của majenko tôi sẽ nói:
Một tùy chọn gỡ lỗi khác từ một danh mục hoàn toàn khác là tổ chức mã của bạn sao cho logic quyết định (độc lập với phần cứng) và hành động (phụ thuộc vào phần cứng) được tách biệt hoàn toàn.
Sau đó biên dịch bản phác thảo của bạn dưới dạng một chương trình cục bộ và gỡ lỗi "logic quyết định" trên máy cục bộ của bạn. Phương pháp này không cho phép "gỡ lỗi phần cứng". Phương pháp này cũng cho phép thử nghiệm đơn vị.
Lưu ý rằng máy cục bộ của bạn có thể là 32 hoặc 64 đắng và hầu hết Arduino là 8 lỗi, điều này sẽ dẫn đến sự khác biệt về kiểu dữ liệu là một điểm chú ý thêm khi sử dụng phương pháp này.
Các Arduino-Debug thư viện cung cấp một đơn giản trên mục tiêu debugger cho bản phác thảo Arduino. Lệnh gỡ lỗi được thêm trực tiếp vào bản phác thảo. Một shell lệnh gỡ lỗi được bắt đầu trên các điểm dừng và xác nhận.
Ảnh chụp màn hình ở trên cho thấy bản phác thảo ví dụ chạy trên Arduino Mega với màn hình đầu ra Nối tiếp được sử dụng bởi ứng dụng và Serial1 được sử dụng cho trình gỡ lỗi.
Các lệnh gỡ lỗi phác thảo
Lệnh gỡ lỗi Shell
Tất cả các lệnh shell gỡ lỗi có thể được viết tắt thành các lệnh ký tự đơn. Vui lòng xem README để biết thêm chi tiết; chi tiết cài đặt, ví dụ phác thảo và điểm chuẩn.