Tải bản đầy đủ (.pdf) (18 trang)

Môn học kiểm thử xâm nhập bài thực hành gdblesson

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 18 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN </b>

<b>MÔN HỌC : KIỂM THỬ XÂM NHẬP BÀI THỰC HÀNH: GDBLESSON </b>

<b>GIẢNG VIÊN : ĐINH TRƯỜNG DUY HỌ VÀ TÊN : LÊ PHI </b>

<b>MÃ SINH VIÊN : B20DCAT137 LỚP : D20CQAT01-B </b>

Hà Nội, năm 2024

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Contents

<b>1. Tổng quát ... 3 </b>

<b>2. Thực hành ... 3 </b>

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

<b>3. Kết luận ... 18 </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.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.

<b>2. Thực hành </b>

2.1

Liệt kê các tệp trong thư mục

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

2.2

Biên dịch chương trình samplemath.c: gcc -g sampleMath.c -o sampleMath

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Chạy thử chương trình sampleMath: ./sampleMath

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

2.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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="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:

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Đặt break tại dòng thứ 9 (bắt đầu vịng lặp) sau đó chạy lại:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Sử dụng lệnh s (step) để chạy tiếp 1 dịng trong chương trình

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Tiếp tục chạy đến khi tìm ra điểm lỗi của chương trình

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Như 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:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Biên dịch và chạy lại chương trình sampleMath

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Lú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:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Báo lỗi

Sửa code và biên dịch lại:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Chạ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

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Checkwork

<b>3. Kết luận </b>

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ả.

</div>

×