Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
716,66 KB
Nội dung
Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 1 HƯỚNG DẪN DEBUG TRÊN BC 3.1 I. Biên dịch, thực thi chương trình: 1. Biên dịch chương trình: Mục đích: kiểm tra chương trình còn lỗi hay không và sửa lỗi(nếu có lỗi) để bảo đảm chương trình thực thi được. Thao tác: bấm phím F9 hoặc Atl + F9 hoặc chọn menu Compile Compile. Kết quả: Chương trình không còn lỗi sẽ hiển thị thông báo sau: Chương trình còn lỗi sẽ hiển thị thông báo sau: Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 2 2. Các bước sửa lỗi: - Khi biên dịch chương trình, màn hình hiển thị thông báo lỗi, bấm phím ENTER để xuất hiện cửa sổ mô tả lỗi. - Dùng phím mũi tên lên, xuống để duyệt lên xuống và xem mô tả lỗi. Khi xem mô tả lỗi, chú ý vệt sáng trên vùng soạn thảo, thông thường vệt sáng sẽ thông báo vị trí lỗi (có thể ngay tại dòng hoặc trước hoặc dòng sau đó 1 dòng). - Một số lỗi thường gặp và một số cách khắc phục sẽ được mô tả trong phần II. 3. Thực thi chương trình: Khi chương trình không còn lỗi, bấm tổ hợp phím Ctrl + F9 hoặc chọn menu Run Run để thực thi chương trình. Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 3 II. Một số lỗi thường gặp: 1. Statement missing ; Mô tả: thiếu dấu chấm phẩy “;” khi kết thúc câu lệnh. Khắc phục: bổ sung thêm dấu chấm phẩy “;” vào cuối câu lệnh. Ví dụ: Sai: int a scanf(“%i”,&a) Sửa thành: int a; scanf(“%i”,&a); 2. Compound statement missing } Mô tả: thiếu dấu “}” khi kết thúc khối lệnh hoặc hàm. Khắc phục: thêm dấu “}” vào tương ứng. Ví dụ: Sai: void main() { int a; scanf(“%i”, &a); Sửa thành: void main() { int a; scanf(“%i”, &a); } 3. Unexpected } Mô tả: thiếu dấu “{” khi bắt đầu khối lệnh hoặc hàm hay dư dấu “}”. Khắc phục: kiểm tra xem có thiếu dấu “{” hoặc dư dấu “}” và sửa lại tương ứng. Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 4 Ví dụ: Sai: void main() { int a; scanf(“%i”, &a); } } Sửa thành: void main() { int a; scanf(“%i”, &a); } 4. Misplaced else Mô tả: dấu chấm phẩy “;” được đặt sau phát biểu if hoặc khối lệnh trong phát biểu if không được đặt trong cặp dấu “{}” và tiếp theo đó là phát biểu else. Khắc phục: tìm và bỏ dấu chấm phẩy “;” sau phát biểu if hoặc đưa khối lệnh sau phát biểu if vào cặp dấu “{}” tương ứng. Ví dụ: Sai: if(a<0); printf(“la so am\n”); else if(a%2==0) a /=2; a++; else a ; Sửa thành: if(a<0) printf(“la so am\n”); else if(a%2==0) { Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 5 a /=2; a++; } else a ; 5. For statement missing ; Mô tả: không dùng dấu chấm phẩy “;” để ngăn các thành phần (3 thành phần) trong cú pháp vòng lặp for (phải có đủ 2 dấu chấm phẩy “;”). Khắc phục: kiểm tra lại cho đúng cú pháp for(<biểu thức khởi tạo>; <biểu thức điều kiện>; <biểu thức tăng giảm>). Trong các biểu thức nếu có nhiều biểu thức con thì mỗi biểu thức con cách nhau bởi dấu phẩy “,”. Ví dụ: Sai: for(int i=0, i<5; i++) printf(“%i”,i); Sửa thành: for(int i=0; i<5; I++) printf(“%i”,i); 6. Function call missing ) Mô tả: thiếu dấu phẩy “,” ngăn cách giữa phần định dạng và danh sách các biến trong hàm printf , scanf. Khắc phục: thêm dấu phẩy “,” ngăn cách giữa phần định dạng và danh sách các biến. Ví dụ: Sai: scanf(“%d”&a); printf(“%d”a); Sửa thành: scanf(“%d”, &a); printf(“%d”, a); 7. Declaration terminated incorrectly Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 6 Mô tả: khai báo tên biến trùng với tên hang đã được định nghĩa trước. Khắc phục: đổi tên biến. Ví dụ: Sai: #include<math.h> void main() { int M_PI; } Sửa thành: #include<math.h> void main() { int m_SoPi; } Nguyên nhân: hằng số M_PI đã được khai báo trong thư viện math.h. 8. Multiple declaration for ‘<tên_biến>’ Mô tả: khai báo trùng tên biến hoặc khai báo 1 biến nhiều lần. Khắc phục: kiểm tra đổi tên biến khác hoặc bỏ bớt các khai báo biến trùng nhau. Ví dụ: Sai: int i; for(int i =0; i<5; i++) printf(“%d”, i); Sửa thành: int i; for(i =0; i<5; i++) printf(“%d”, i); 9. Undefined symbol ‘<tên_biến>’ Mô tả: sử dụng biến chưa khai báo. Khắc phục: khai báo biến trước khi sử dụng. Ví dụ: Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 7 Sai: scanf(“%i”, &a); Sửa thành: int a; scanf(“%i”, &a); 10. Declaration syntax error Mô tả: thiếu dấu chấm phẩy “;” sau khi khai báo biến. Khắc phục: thêm dấu chấm phẩy “;” sau khi khai báo biến. Ví dụ: Sai: int a Sửa thành: int a; 11. Function ‘<tên_hàm>’ should have a prototype Mô tả: thiếu khai báo thư viện nếu sử dụng hàm thư viện hoặc chưa khai báo nguyên mẫu hàm, gọi sai tên hàm. Khắc phục: kiểm tra khai báo thư viện, khai báo nguyên mẫu hàm hoặc tên hàm. Ví dụ: Sai: #include<conio.h> void main() { printf(“Hello\n”); Getch(); } Sửa thành: #include<stdio.h> #include<conio.h> void main() { printf(“Hello\n”); getch(); } Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 8 Nguyên nhân: hàm printf được khai báo trong thư viện stdio.h và gọi sai tên hàm getch trong thư viện conio.h. 12. Possibly incorrect assignment Mô tả: dùng sai kí hiệu phép toán quan hệ. Khắc phục: sử dụng các kí hiệu phép toán quan hệ. Ví dụ: Sai if(a=0) printf(“a bang khong”); Sửa thành: if(a==0) printf(“a bang khong”); 13. Code has no effect Mô tả: dùng kí hiệu phép toán quan hệ cho phép gán. Khắc phục: dùng kí hiệu phép toán số học. Ví dụ: Sai: a == 1; Sửa thành: a = 1; III. Hướng dẫn Debug: 1. Vì sao phải Debug: Dù cho chương trình không còn lỗi nhưng khi thực thi vần có thể cho kết quả sai, một số nguyên nhân: - Định dạng nhập xuất hoặc sai kiểu dữ liệu - Điều kiện dừng sai - Thuật toán sai hoặc thiếu trường hợp… 2. Các thao tác Debug: - Bấm phím F7 hoặc F8 để chạy từng bước (chương trình không còn lỗi biên dịch). F7: đi từng lệnh của hàm con nếu có gọi hàm. Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 9 F8: không đi từng lệnh của hàm con mà chỉ trả về kết quả của hàm con. Quan sát vệt sáng để biết chương trình thực thi đến đâu. - Nếu muốn bỏ qua 1 đoạn lệnh nào đó thì đưa dấu nháy đến dòng kế tiếp đoạn lệnh đó rồi nhấn phím F4 để chương trình thực thi đến dòng có dấu nháy và dừng lại ở đó. - Cửa sổ theo dõi giá trị các biến (cửa sổ watch): Nếu cửa sổ watch chưa xuất hiện: nhấn tổ hợp phím Alt + W sau đó nhấn tiếp phím W hoặc vào menu Windows Watch. Bấm tổ hợp phím Ctrl + F7 hoặc phím INSERT (nếu cửa sổ watch đã được mở), nhập vào các biến cần theo dõi giá trị khi Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 10 thực hiện xong 1 câu lệnh hoặc hàm vào ô Watch Expression sau đó bấm phím ENTER hoặc bấm nút OK. Xóa biến trên cửa sổ watch bằng cách chọn vào biến đó trên cửa sổ watch, bấm phím DELETE. - Muốn thay đổi giá trị của biến ta bấm tổ hợp phím Ctrl+F4 hoặc vào menu Windows Evaluate/modify… để hiển thị cửa sổ Evaluate and Modify. Nhập tên biến vào ô Expression sau đó bấm phím ENTER hoặc bấm nút Evaluate, ô Result sẽ hiển thị kết quả hiện tại của biến vừa nhập. Nhập giá trị mới cho biến vừa nhập vào ô New Value, sau đó bấm phím ENTER hoặc bấm nút Modify để thay đổi giá trị của biến. [...]... chương trình thực thi đến vị trí đánh dấu (khi chưa debug) bằng cách đưa dấu nháy đến dòng cần đánh dấu, bấm tổ hợp phím Ctrl + F8 Vị trí đánh dấu sẽ có vệt sáng màu đỏ Có thể đánh dấu nhiều vị trí khác nhau Bấm tổ hợp phím Ctrl+F9 để chương trình thực thi đến vị trí đánh dấu theo thứ tự từ trên xuống Có thể dùng phím F7 hoặc F8 để chạy từng bước giống như trên Bỏ đánh dấu tại vị trí nào thì đưa dấu nháy... Bỏ đánh dấu tại vị trí nào thì đưa dấu nháy đến vị trí đó rồi bấm tổ hợp phím Ctrl + F8 - Bấm tổ hợp phím Atl + F5 để xem kết quả xuất trong quá trình debug Trang 11 Môn: Kỹ Thuật Lập Trình Bài Thực Hành - Bấm tổ hợp phím Ctrl + F2 để dừng quá trình debug Trang 12 . Môn: Kỹ Thuật Lập Trình Bài Thực Hành Trang 1 HƯỚNG DẪN DEBUG TRÊN BC 3. 1 I. Biên dịch, thực thi chương trình: 1. Biên dịch chương trình: Mục đích: kiểm tra chương trình. 13 . Code has no effect Mô tả: dùng kí hiệu phép toán quan hệ cho phép gán. Khắc phục: dùng kí hiệu phép toán số học. Ví dụ: Sai: a == 1; Sửa thành: a = 1; III. Hướng dẫn Debug: 1. . Trang 10 thực hiện xong 1 câu lệnh hoặc hàm vào ô Watch Expression sau đó bấm phím ENTER hoặc bấm nút OK. Xóa biến trên cửa sổ watch bằng cách chọn vào biến đó trên cửa sổ