Thứ Hai, Tháng Mười Một 30, 2020
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

Hướng dẫn lắp ráp Khung Xe Robot Chasiss Black Cat Mecanum (P2)

Giới thiệu Chào các bạn, trong bài này mình sẽ hướng dẫn cách hàn dây motor, và cách đấu dây motor với driver cho đúng. Sỡ...

Hướng dẫn lắp ráp Khung Xe Robot Chasiss Black Cat Mecanum (P1)

Giới thiệu Chào các bạn, trong bài viết này mình sẽ giải thích sơ qua về bánh xe Mecanum, cũng như nguyên lý hoạt động...

Hướng dẫn sử dụng Mạch đóng ngắt tải không tiếp xúc chế tạo Thiết bị vệ sinh tự động

Từ ngày 03/08/2020 mạch chuyển sang phiên bản mới tuy nhiên kích thước, vị trí linh kiện và chức năng của mạch giống và...

Lưu trữ nhật ký dữ liệu Online với ESP32 và Google Spreadsheets

Giới Thiệu Chào các bạn, trong các dự án IoT nhỏ gọn thì việc lưu trữ  và kiểm soát dữ liệu trên đám mây cũng...

Recent Comments

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