Lý do lớn hơn để không gỡ lỗi với printf () là nó thường không hiệu quả, không đầy đủ và không cần thiết.
Không hiệu quả: printf () và kin sử dụng rất nhiều flash và RAM so với những gì có sẵn trên một vi điều khiển nhỏ, nhưng sự kém hiệu quả hơn nằm ở việc gỡ lỗi thực tế. Thay đổi những gì đang được ghi lại đòi hỏi phải biên dịch lại và lập trình lại mục tiêu, làm chậm quá trình. Nó cũng sử dụng hết UART mà bạn có thể sử dụng để thực hiện công việc hữu ích.
Không đầy đủ: Chỉ có rất nhiều chi tiết bạn có thể xuất qua một liên kết nối tiếp. Nếu chương trình bị treo, bạn không biết chính xác ở đâu, chỉ là đầu ra cuối cùng đã hoàn thành.
Không cần thiết: Nhiều bộ vi điều khiển có thể được gỡ lỗi từ xa. JTAG hoặc các giao thức độc quyền có thể được sử dụng để tạm dừng bộ xử lý, xem lén các thanh ghi và RAM và thậm chí thay đổi trạng thái của bộ xử lý đang chạy mà không cần phải biên dịch lại. Đây là lý do tại sao trình gỡ lỗi nói chung là một cách gỡ lỗi tốt hơn so với các câu lệnh in, ngay cả trên PC có hàng tấn không gian và sức mạnh.
Thật không may là nền tảng vi điều khiển phổ biến nhất cho người mới, Arduino, không có trình gỡ lỗi. AVR hỗ trợ gỡ lỗi từ xa, nhưng giao thức debugWIRE của Atmel là độc quyền và không có giấy tờ. Bạn có thể sử dụng bảng dev chính thức để gỡ lỗi với GDB, nhưng nếu bạn có điều đó thì có lẽ bạn không còn quá lo lắng về Arduino nữa.