Thứ Tư, Tháng Mười 27, 2021
Trang chủ DIY Gỡ lỗi ESP8266/ESP32 với thư viện ArduinoTrace

Gỡ lỗi ESP8266/ESP32 với thư viện ArduinoTrace

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

#include “ArduinoTrace.h”

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:

Serial.begin(115200);

Mình sẽ tạo một biến counter  với giá trị bằng 0

int counter = 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”

counter++;
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/

Full Source Test

#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 0
#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 0   */ Tắt Debug  */
#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

#define ARDUINOTRACE_ENABLE_PROGMEM 1 

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

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Most Popular

Tìm hiểu CRC

🤔 Có bạn nào thắc mắc là các thiết bị điện tử ngoài việc chúng có thể giao tiếp trao đổi thông tin với...

Tìm hiểu Giao thức I2C

Có bạn nào thắc mắc làm sao giữa các thiết bị điện tử chúng có thể giao tiếp trao đổi data qua lại lẫn...

Tìm hiểu cách sử dụng các cảm biến Nhiệt độ & Độ ẩm DHT

Chắc nhiều bạn sinh viên cũng quá quen mấy con này rồi nhỉ. Nói không sai, DHT có thể xem như cảm biến quốc...

Tìm hiểu về Nhiệt độ biểu kiến cũng như Cách ta cảm nhận nhiệt độ

Có bạn nào từng thắc mắc rằng, tại sao đôi khi nhiệt độ ngoài trời không cao lắm, nhưng ta lại thấy nóng nực...

Recent Comments

0
Would love your thoughts, please comment.x
()
x