Qst(0x 10001048, 0x 10001074, 0x 400b20,0x4) [“qsort.c”:147]

Một phần của tài liệu Defensive programming (Trang 30 - 34)

Xem các vết (stack trace)

Thường người gỡ rối có thể thực hiện CT, 1 cách chung nhất là

kiểm tra trạng thái CT khi bị lỗi. TD như số hiệu dòng mã nguồn cũng là 1 phần của chồng vết. Xét VD sau:

int arr[N];

qsort (arr, N, sizeof(arr[0],icmp)

Do sự bất cẩn, người lập trình gõ scmp thay vì icmp.=> Đương nhiên là ct dịch không thể phát hiện lỗi này và khi thực hiện ct đó, lỗi sẽ xảy ra và tạo nên 1 chồng vết:

0. strcmp(0x1a2,0x1c2)[“strcmp, s”:31

1. scmp (p1=0x10001048,p2=0x1000105c)[badqs.c”:13]

2. qst(0x 10001048, 0x 10001074,0 x 400b20,0x4) [“qsort.c”:147]…. ….

Các phương pháp gỡ rối

Gỡ rối ngay khi gặp

Khi phát hiện lỗi, hãy sửa ngay, đừng để sau mới

sửa, vì có thể lỗi không xuất hiện lại ( do tình huống…)

Cũng đừng quá vội vàng, không suy nghĩ chín

chắn, kỹ càng, vì có thể việc sửa chữa này ảnh hưởng tới các tình huống khác

Các phương pháp gỡ rối

Đọc trước khi gõ vào

Đừng vội vàng, khi không rõ điều gì thực sự gây

ra lỗi và sửa không đúng chỗ sẽ có nguy cơ gây ra lỗi khác

Có thể viết đoạn code gây lỗi ra giấy=> tạo cách

nhìn khác, và tạo cơ hội để nghĩ suy

Đừng miên man chép cả đoạn không có nguy cơ

gây lỗi, hoặc in toàn bộ code ra giấy in => phá vỡ cây cấu trúc

Các phương pháp gỡ rối

Giải thích cho người khác về đoạn code

Tạo đk để ngẫm nghĩ

Thậm chí có thể giải thích cho người không phải

LTV

Extrem programming : làm việc theo cặp, pair

programming, người này LT, người kia kiểm tra, và ngược lại

Khi gặp vấn đề, khó khăn, chậm tiến độ, lập tức

thay đổi công việc => rút ra khỏi luồng quán tính sai lâm …

Một phần của tài liệu Defensive programming (Trang 30 - 34)