Hướng dn thc hành tun 2 - Nhp môn lp trình Lp 07DB_A/B
GVHDTH: Nguyn Hi Minh 1
Người son: Nguyn Hi Minh
Email: nhminh@fit.hcmuns.edu.vn
CH ĐỀ: DEBUG TRÊN VC++ 6.0
---oOo---
I. GII THIU
Mt chương trình được biên dch thành công không chc chy đúng theo logic.
Ví d chương trình gii phương trình bc nht như sau:
Bm F7 để dch chương trình, trình biên dch thông báo không có li:
Nhưng khi chy vi a = 2, b = 1, chương trình cho kết qu sai !!!
Hướng dn thc hành tun 2 - Nhp môn lp trình Lp 07DB_A/B
GVHDTH: Nguyn Hi Minh 2
T hơn, chương trình b dng đột ngt khi ta nhp a = 0, b = 1 ?!!
ª
Gii pháp: theo dõi tng dòng code để tìm ra dòng cha li sai (li logic) =>
Phương pháp này gi là DEBUG
II. CÁC THAO TÁC ĐỂ DEBUG MT CHƯƠNG TRÌNH
1. Debug t dòng code th 1 đến dòng code cui cùng
#
Bước 1: Bm F7 để dch chương trình
#
Bước 2: Nếu chương trình biên dch thành công (không có li), bm F10 để
bt đầu Debug. Mũi tên màu vàng xut hin trước dòng code đang theo dõi
Hướng dn thc hành tun 2 - Nhp môn lp trình Lp 07DB_A/B
GVHDTH: Nguyn Hi Minh 3
#
Bước 3: Bm tiếp F10 để chuyn sang dòng code tiếp theo (b qua dòng
khai báo biến), mũi tên màu vàng di chuyn xung tương ng.
* Lưu ý: ca s Context đã xut hin 3 biến a, b, x và giá tr hin thi ca
chúng.
Hướng dn thc hành tun 2 - Nhp môn lp trình Lp 07DB_A/B
GVHDTH: Nguyn Hi Minh 4
#
Bước 4: Bm tiếp F10, câu lnh printf thc hin xong, mũi tên vàng di
chuyn xung hàm scanf, màn hình xut ra chui tương ng:
#
Bước 5: Bm tiếp F10, câu lnh scanf thc hin xong, chương trình dng li
ch người dùng nhp vào 2 s a, b mi chuyn sang dòng code tiếp theo
* Lưu ý: Sau khi nhp xong a, b, giá tr 2 biến này trong ca s Context thay đổi
theo.
Hướng dn thc hành tun 2 - Nhp môn lp trình Lp 07DB_A/B
GVHDTH: Nguyn Hi Minh 5
#
Bước 6: Bm tiếp F10, dòng x = (-b)/a thc hin xong, kết qu biến x
thay đổi trong ca s Context:
) Rõ ràng chính câu lnh x = (-b)/a đã làm chương trình chy sai logic. Tìm
hiu k dòng code này, ta s phát hin được nguyên nhân chính là phép chia (-b)/a
đã được làm tròn thành s nguyên:
(-1)/2 = -0.5 làm tròn thành 0
) Cách gii quyết: ép kiu a hoc b thành s thc và thay khai báo x thành
khai báo kiu s thc, đồng thi sa đặc t biến x trong câu lnh printf cui cùng
) Dch li chương trình (F7) và chy (Ctrl+F5), chương trình đã cho kết qu
đúng:
float x;
x = (float)(-b)/a; //Hoc x = (-b)/float(a);
printf("Nghiem cua phuong trinh %ix + %i = 0 la: %f\n",a,b,x);