You are on page 1of 33

Công cụ gỡ lỗi

Debugger

www.lumi.vn
Nội dung
01
Tổng quan về Debugger

02
Hướng dẫn thực hiện quá trình debug
MỤC TIÊU BÀI HỌC

● Hiểu được các thành phần trong công cụ gỡ lỗi Debugger trong phần

mềm STM32CubeIDE.

● Vận dụng kỹ thuật gỡ lỗi như Single Stepping, Breakpoint,

Expression and Variable windows, Memory browser windows, SFR

windows vào chương trình lập trình vi điều khiển.


TỔNG QUAN VỀ DEBUGGER
❖ BUG

BUG
● Bug được hiểu là thuật ngữ dùng để chỉ các lỗi kỹ thuật có thể xảy ra trong quá trình thiết kế và
vận hành các chương trình lập trình.
● Bug khiến cho phần mềm, ứng dụng không thực thi được hoặc thực thi sai.
TỔNG QUAN VỀ CÔNG CỤ GỠ LỖI DEBUGGER
❖ BUG

Làm thế nào để giải quyết Bug ?

Debug
TỔNG QUAN VỀ CÔNG CỤ GỠ LỖI DEBUGGER
❖ DEBUG

DEBUG
Debug là quá trình tìm kiếm và phát hiện nguyên nhân gây ra lỗi.

Mục đích

Sửa lỗi (fixbug),


Hiểu rõ chương trình

DEBUG LÀ MỘT KỸ NĂNG THIẾT YẾU CẦN TRANG BỊ


TỔNG QUAN VỀ CÔNG CỤ GỠ LỖI DEBUGGER
❖ CÁC TÍNH NĂNG DEBUG

Board STM32F401RE đã được tích hợp STLink


STM32CubeIDE
=> Sử dụng tính năng debug thông qua STLink

Debugger STLINK

STM32 MCU
TỔNG QUAN VỀ CÔNG CỤ GỠ LỖI DEBUGGER
❖ CÁC TÍNH NĂNG DEBUG

Đối với các board ST không có STLink:


STM32CubeIDE • Sử dụng STLink độc lập kết nối với ST MCU

Debugger STLINK

STM32 MCU
TỔNG QUAN VỀ CÔNG CỤ GỠ LỖI DEBUGGER
❖ CÁC TÙY CHỌN VỚI CHẾ ĐỘ DEBUG

● Điều khiển thực thi chương trình

● Xem các giá trị, các biến

● Xem giá trị thanh ghi và ngoại vi

● In log dữ liệu
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ MỞ GIAO DIỆN CÔNG CỤ GỠ LỖI TRONG STM32CubeIDE

Lưu ý: Trước khi debug


● Cắm kết nối kit với máy tính
● Biên dịch chương trình và đảm bảo chương trình không có lỗi.

Cách 3: Nhấn nút F11


HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ MỞ GIAO DIỆN CÔNG CỤ GỠ LỖI TRONG STM32CubeIDE

Lựa chọn Switch: Chuyển đổi sang giao diện Debug


HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Mũi tên chỉ vị trí chương trình dừng lại


Lưu ý:
• Khi mới khởi động giao diện debug thì
chương trình dừng lại tại hàm đầu tiên tiên
trong hàm main.
• Chương trình đang dừng ở câu lệnh nào thì
câu lệnh đó chưa được thực hiện.
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:


Step Into
(vào trong một hàm)
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:


Step Into
(vào trong một hàm)

Step Over
(thực thi một hàm hoặc một lệnh).
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:


Step Into
(vào trong một hàm)

Step Over
Step Return (thực thi một hàm hoặc một lệnh).
Thoát ra khỏi hàm mainInit

Step Return
(thoát khỏi một hàm)
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:


Step Into
(vào trong một hàm)

Step Over
Thực hiện lại từ đầu (thực thi một hàm hoặc một lệnh).

Step Return
(thoát khỏi một hàm)

Reset & restart


Thực hiện lại debug
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:


Step Into
(vào trong một hàm)

Step Over
● Chương trình đang chạy như
(thực thi một hàm hoặc một lệnh).
khi nạp code

● Không còn mũi tên Step Return


(thoát khỏi một hàm)

Reset & restart


Thực hiện lại debug

Resume (Chạy chương trình)


HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

Các biểu tượng điều khiển:

Relunch: chạy lại quá trình debug

Kết thúc debug


HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

BREAKPOINT
• Chương trình sẽ dừng lại khi gặp Breakpoint
• Click đúp chuột để đặt Breakpoint
• Có thể đặt nhiều Breakpoint
• Click đúp chuột vào vị trí Breakpoint để
xóa.
• Sử dụng Breakpoint chọn một điểm dừng
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ ĐIỀU KHIỂN THỰC THI CHƯƠNG TRÌNH

BREAKPOINT

● Phối hợp sử dụng Breakpoint với các biểu


tượng điều khiển khác

● Kiểm tra chương trình có thực hiện tới một vị


trí nào đó.
● Các lệnh rẽ nhánh: If else, switch case
● Các trình phục vụ ngắt.
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC BIẾN

Mở cửa sổ Live Expressions để theo dõi giá trị các biến trong quá trình Debug
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC BIẾN

Giá trị của biến


Viết tên biến vào để theo
dõi

Biến toàn cục (ví dụ biến globalVariable)


• Gõ tên biến toàn cục vào cửa sổ Live Expressions trước khi thực thi các lệnh hoặc bất cứ khi
nào trong quá trình debug
Biến địa phương(ví dụ biến localVariable)
• Gõ tên biến địa phương vào cửa sổ Live Expressions khi chương trình đã nhảy vào hàm chứa
biến cục bộ đó.
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC BIẾN

Một số tùy chọn định dạng hiển thị dữ liệu trên của số Live Expressions
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC BIẾN

Lưu ý: Biến địa phương sẽ chỉ theo dõi được khi còn ở trong hàm của nó. Khi thoát khỏi hàm thì
biến địa phương sẽ được giải phóng, không thấy giá trị của biến trong bảng Live Expressions
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

Xem các giá trị các thanh ghi

Dữ liệu Trạng thái


Cấu hình

Chức năng này rất quan trọng vì lập trình với vi điều khiển về bản chất là làm việc với
các thanh ghi
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

Lựa chọn Window => Show View => Register.


Mở cửa sổ Registers để xem các giá trị thanh ghi trong CPU
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

Lựa chọn Window => Show View => SFRs.


Mở cửa sổ SFRs để xem các thanh ghi ngoại vi
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

GPIOA, Pin0
Tương ứng với Bit 0

LED GREEN (GPIOA, Pin0) được bật lên tương ứng bởi Bit 0 trên thanh ghi ODR được set lên 1
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

Định dạng hiển thị


Bin, Dec, Hex

GPIOA, Pin0
Tương ứng với Bit 0

Lưu ý:
• Giá trị thanh ghi sẽ được cập nhật mỗi khi dừng lại tại Breakpoint.
• Nhấn vào RD (Force read selected register) để yêu cầu cập nhật giá trị mới nhất
của thanh ghi nếu không đặt Breakpoint.
HƯỚNG DẪN THỰC HIỆN QUÁ TRÌNH DEBUG
❖ XEM GIÁ TRỊ CÁC THANH GHI

Nhấn 1 (Led Sáng)

Nhả 0 (Led Tắt)

Xem các thanh ghi được cập nhật tự động thông qua cửa sổ Live Expressions.
BÀI TẬP THỰC HÀNH

● Bài 1: Thực hành debug chương trình cấu hình GPIO


TỔNG KẾT BÀI HỌC

● Debug là tính năng rất quan trọng trong lập trình.

○ Phát hiện các vấn đề các lỗi.

○ Tối ưu và loại bỏ lỗi.

○ Hiểu rõ, kiểm tra thực thi chương trình trên phần cứng
Thanks for Watching!

Công ty Cổ phần Lumi


Việt Nam

You might also like