Giới Thiệu
Chào các bạn, thông thường khi các bạn debug chương trình các bạn thường sử dùng hàm Serial.print() tuy nhiên, hôm nay mình sẽ hướng dẫn một cách debug chương trình mới bằng thư viện ArduinoTrace.
Thư viện này sử dụng trên Arduino IDE, vì vậy Arduino Uno hay ESP8266/ESP32 đều dùng được hết. Chúng ta bắt đầu nào !
Hướng dẫn
Library
Các bạn có thể tải thư viện tại Arduino IDE library manager:
Ngoài ra các bạn có thể tham khảo github của thư viện tại đây
Thư viện “ArduinoTrace” sẽ hỗ trợ cho chúng ta hai marco là “TRACE” và “DUMP“.
+ “TRACE” sẽ hiển thị:
-
- Tên tiệp của chương trình
- Số dòng Debug hiển thị
- Tên hàm
- Tham số của hàm
+ “DUMP” sẽ hiển thị:
-
- Tên tiệp
- Số dòng Debug hiển thị
- Tên biến
- Giá trị của biến
“TRACE” và “DUMP” hoạt động ở phạm vi toàn cục , thường sử dụng bộ nhớ Flash. Theo mình thấy đây là một thư viện cực kì đơn giản và dễ sử dụng, cái mình thích ở thư viện này là hiển thị luôn tên biến + giá trị và đang chạy ở trong hàm nào, rất tiện lợi cho việc gỡ lỗi chương trình.
Code
Đầu tiên các bạn sẽ khai báo thư viện ArduinoTrace
Các bạn vẫn phải setup mở một Serial để xuất kết quả theo dõi lên Serial Monitor:
Mình sẽ tạo một biến counter với giá trị bằng 0
Trong hàm loop() mình sẽ tăng giá trị counter++ sau đó hiển thị lên Serial Monitor với marco “DUMP” và “TRACE”
DUMP(counter);
delay(1000);
TRACE();
Bây giờ mình sẽ nạp thử chương trình vào và kiểm tra kết quả:
Marco DUMP(counter) sẽ hiển thị: Dòng 8 – biến counter – giá trị 2
Marco TRACE() hiển thị : đang chạy trong hàm void loop() trong chương trình/
#define ARDUINOTRACE_ENABLE 0 #define ARDUINOTRACE_ENABLE_PROGMEM 1 #include "ArduinoTrace.h" int counter = 0; void setup() { Serial.begin(115200); } void loop() { counter++; DUMP(counter); delay(1000); TRACE(); }
Lưu ý cái hay của thư viện này chưa dừng lại ở đây. Nếu để ý kỹ trong phần source code mình đăng lên bạn sẽ bắt gặp các định nghĩa “ARDUINOTRACE_ENABLE ” và “ARDUINOTRACE_ENABLE_PROGMEM “. Lưu ý các bạn cần định nghĩa dòng hai dòng này trước khi khai báo thư viện thì mới hoạt động:
#define ARDUINOTRACE_ENABLE_PROGMEM 1
Đây mới là phần hay mà mình nhắc đến nè. Giả sử các bạn rải debug ở một chương trình lớn, đâu thể nào mà khi code xong phải đi xóa từng dòng một của phần debug. Thư viện này có sẵn định nghĩa để bật và tắt công việc gỡ lỗi , bạn chỉ cần thay đổi từ 1 -> 0 thì debug sẽ không còn hiển thị lên Monitor nữa:
#define ARDUINOTRACE_ENABLE 1 */ Mở Debug */
ArduinoTrace sẽ đặt chuỗi ở trong Flash để giảm mức tiêu thụ bộ nhớ. Mặc định giá trị này bằng 1, nếu trong trường hợp biên dịch bị lỗi các bạn hãy chuyển nó về 0
Kết luận
Hi vọng với bài viết này các bạn sẽ tiết kiệm thời gian hơn cho việc Debug chương trình, và code trở lên nhanh hơn!
Các bạn có thể tham khảo chi tiết thư viện qua Github của tác giả
Chúc các bạn thành công với các dự án của mình!

có tác dụng