HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN
MÔN HỌC : KIỂM THỬ XÂM NHẬP BÀI THỰC HÀNH: GDBLESSON
GIẢNG VIÊN : ĐINH TRƯỜNG DUY HỌ VÀ TÊN : LÊ PHI
MÃ SINH VIÊN : B20DCAT137 LỚP : D20CQAT01-B
Hà Nội, năm 2024
Trang 2Contents
1 Tổng quát 3
2 Thực hành 3
2.1 Liệt kê các tệp trong thư mục 3
2.2 Biên dịch chương trình samplemath.c: gcc -g sampleMath.c -o sampleMath 4
2.3 Gỡ lỗi và chỉnh sửa code của samplemath.c 7
2.4 Biên dịch chương trình samplemath2.c 15
2.5 Gỡ lỗi và chỉnh sửa code của samplemath2.c 15
3 Kết luận 18
Trang 31.3.1 Giới thiệu về ngôn ngữ lập trình C
Ngôn ngữ lập trình C là một ngôn ngữ bậc trung, thủ tục, được phát triển bởi Dennis Ritchie tại Bell Labs vào năm 1972 Được thiết kế để viết các chương trình hệ thống hiệu quả và linh hoạt, C có những đặc điểm chính như tính linh hoạt, mạnh mẽ, khả năng di động và hiệu quả Ứng dụng của C bao gồm hệ điều hành, phần mềm nhúng, ứng dụng desktop, lập trình trò chơi, và nhiều ứng dụng khác
1.3.2 Trình gỡ lỗi GDB
GDB là trình gỡ lỗi mã nguồn miễn phí và đa nền tảng, hỗ trợ gỡ lỗi cho các chương trình viết bằng nhiều ngôn ngữ lập trình như C, C++, Java, Python, và nhiều ngôn ngữ khác GDB cung cấp các tính năng mạnh mẽ như đặt breakpoint, theo dõi giá trị biến, xem backtrace Với giao diện dòng lệnh đơn giản, GDB có thể mở rộng thông qua các plugin Ứng dụng của GDB bao gồm gỡ lỗi chương trình, phân tích chương trình, và tối ưu hóa hiệu suất chương trình
Cách sử dụng GDB:
Khởi chạy GDB: Sử dụng lệnh "gdb" trong terminal
Mở chương trình: Sử dụng lệnh "open" để mở chương trình cần gỡ lỗi Đặt breakpoint: Sử dụng lệnh "break" để đặt breakpoint tại điểm cần kiểm tra Chạy chương trình: Sử dụng lệnh "run" để khởi động chương trình
Gỡ lỗi chương trình: Khi chương trình dừng lại tại breakpoint, sử dụng các lệnh GDB để gỡ lỗi và kiểm tra chương trình
2 Thực hành
2.1 Liệt kê các tệp trong thư mục
Trang 42.2 Biên dịch chương trình samplemath.c: gcc -g sampleMath.c -o sampleMath
Trang 6Chạy thử chương trình sampleMath: /sampleMath
Trang 72.3 Gỡ lỗi và chỉnh sửa code của samplemath.c
Chạy trình gỡ lỗi cho chương trình sampleMath: gdb sampleMath
Trang 8Để chạy chương trình ta sử dụng lên r hoặc run:
Sử dụng lệnh list để hiển thị code của chương trình:
Trang 9Đặt break tại dòng thứ 9 (bắt đầu vòng lặp) sau đó chạy lại:
Trang 11Sử dụng lệnh s (step) để chạy tiếp 1 dòng trong chương trình
Trang 12Tiếp tục chạy đến khi tìm ra điểm lỗi của chương trình
Trang 13Như vậy ta thấy điểm lỗi ở đây xảy ra khi vòng lặp tiến tới điểm biến num bằng 0 trong khi đó biến count vẫn lớn hơn 0 dẫn đến việc chương trình tiếp tục thực hiện phép tính 9/0 => điều này khiến chương trình gặp lỗi và dừng lại
Sử dụng lệnh q để thoát khỏi gdb và sử dụng nano để sửa lại chương trình:
Trang 14Biên dịch và chạy lại chương trình sampleMath
Trang 15Lúc này ta thấy chương trình đã không còn báo lỗi
2.4 Biên dịch chương trình samplemath2.c Biên dịch và chạy thử chương trình sampleMath2
2.5 Gỡ lỗi và chỉnh sửa code của samplemath2.c Chạy trình gỡ lỗi:
Trang 16Báo lỗi
Sửa code và biên dịch lại:
Trang 17Chạy lại chương trình để kiểm tra
Làm theo yêu cầu bài cho chạy với tham số 342
Trang 18Checkwork
3 Kết luận
Qua bài thực hành này, chúng ta đã học được cách sử dụng gdb để gỡ lỗi cho chương trình chạy bằng ngôn ngữ C Bài thực hành này giúp chúng ta hiểu rõ hơn về cách thức hoạt động của gdb và cách sử dụng gdb để tìm và sửa lỗi trong chương trình Tóm lại, gdb là công cụ gỡ lỗi mạnh mẽ và hiệu quả