Xin chào và chào mừng trở lại.
Trong bài giảng này, tôi muốn trình bày cách bạn có thể sử dụng trình gỡ lỗi.
Vì vậy, tôi muốn chạy qua giao diện người dùng đồ họa, chỉ cho bạn cách bạn có thể khởi động chương trình ở chế
độ gỡ lỗi, cách bạn có thể đặt điểm dừng, cách bạn có thể xem ngăn xếp cuộc gọi và cách bạn có thể xem các biến khác nhau
bằng cách sử dụng cửa sổ xem.
Chỉ là một chương trình đơn giản xác định giá trị trung bình.
Tôi sẽ sử dụng điều này như là minh chứng của tôi.
Tất cả những gì nó làm là đọc ba số nguyên và lưu trữ chúng rồi tính giá trị trung bình của chúng.
Bây giờ, một điều tôi muốn đề cập trước khi chúng ta thực sự sử dụng trình gỡ lỗi, bạn phải đảm bảo rằng
cấu hình của mình được thiết lập chính xác.
Và tôi đã nói về điều này trong một video trước đó, về cơ bản cấu hình ánh sáng mã để sử dụng trình gỡ lỗi.
Nhưng chỉ để làm mới bộ nhớ của bạn, bạn có thể chọn dự án ở đây, bạn có thể nhấp chuột phải và đi
đến cài đặt.
Bạn muốn chắc chắn lại, tùy thuộc vào nền tảng bạn đang sử dụng, bạn muốn đảm bảo rằng
cài đặt trình gỡ lỗi ở đây, bên trái, có đường dẫn phù hợp tới GDB.
Bây giờ nếu bạn đang sử dụng Windows có thể yêu cầu sử dụng GDB X từ Cygwin hoặc nó có thể đang sử dụng MinGW w64, bất cứ điều
gì bạn đã làm.
Nếu bạn đang sử dụng Unix và Linux, đường dẫn này thậm chí không nhất thiết phải được đặt.
Điều quan trọng khác là trong các tùy chọn trình biên dịch, bạn muốn đảm bảo rằng bạn
đang biên dịch để gỡ lỗi sao cho Dash G lùn ở trên dấu gạch ngang o để tối ưu hóa.
Một lần nữa, trong Windows, những thứ đó phải được đặt để có thông tin gỡ lỗi cùng với tệp thực
thi của bạn.
Bạn cũng phải đảm bảo rằng bạn đang xây dựng chế độ gỡ lỗi.
Vì vậy, bạn phải đảm bảo rằng gỡ lỗi được chọn và không phát hành.
Khi bạn đã định cấu hình đúng tất cả những thứ đó, bạn sẽ có thể sử dụng trình gỡ lỗi và ánh
sáng mã.
Nếu bạn có bất kỳ vấn đề nào với điều đó, vui lòng quay lại video của tôi để định cấu hình trên nền tảng của bạn.
Trình gỡ lỗi và Code Light.
Khái niệm quan trọng nhất liên quan đến trình gỡ lỗi là ý tưởng về điểm dừng.
Và do đó, điểm dừng là thứ mà bạn có thể đặt trong chương trình của mình để dừng thực thi mã
của bạn.
Về cơ bản, bạn có thể nói, Này, tôi muốn dừng ở dòng này và chương trình của bạn khi bạn chạy
trình gỡ lỗi sẽ dừng ở dòng đó. Điều đó cho phép bạn xem xét các biến, giá trị của các biến.
Nó cho phép bạn lướt qua mã của mình từng dòng một để cố gắng chẩn đoán và khắc phục mọi sự cố có
thể xảy ra.
Thông thường, khi bạn chạy chương trình của mình, nếu bạn cố chạy nó trong trình gỡ lỗi và bạn không đặt điểm ngắt,
thì sẽ không có gì xảy ra.
Vì vậy, thông thường khi bạn xây dựng, bạn biết đấy, bạn có thể đi và bạn có thể xây dựng dự án của mình
giống như bất kỳ dự án nào khác, tiếp tục xây dựng, tiếp tục xây dựng dự án.
Khi bạn xây dựng nó và chạy nó trong chế độ gỡ lỗi, bạn phải đi tới tùy chọn trình đơn trình gỡ lỗi và
bạn phải bắt đầu, tiếp tục trình gỡ lỗi.
Và khi bạn thực hiện lại điều đó, nếu bạn đã đặt điểm dừng, nó sẽ chạm vào điểm dừng đó.
Nếu bạn không đặt điểm dừng, nó sẽ chỉ chạy.
Vì vậy, nếu chúng tôi cố gắng thực hiện chương trình này ở chế độ gỡ lỗi, nó sẽ xuất hiện và yêu cầu
nhập vì nó dừng ngay tại các số và sau đó bạn chỉ cần nhấn một số số vào và nó sẽ đóng lại.
Nó thậm chí không thực sự in ra thông tin, phải không?
Vì vậy, điều rất quan trọng nếu bạn muốn sử dụng trình gỡ lỗi là bạn phải đặt ít nhất một điểm dừng.
Cách dễ nhất để đặt điểm ngắt là chỉ cần nhấp vào bên trong lề theo số dòng trên số dòng mà bạn
muốn đặt điểm ngắt.
Và một lần nữa, một điểm dừng sẽ dừng thực thi trên số dòng đó.
Vì vậy, nếu chúng ta đặt một điểm dừng ngay bởi chức năng printf trên dòng thứ mười, chúng ta chỉ cần nhấp đúp chuột, bạn sẽ
thấy rằng một vòng tròn màu đỏ được đặt.
Điều này nói với trình gỡ lỗi, này, dừng ở dòng mười.
Vì vậy, một lần nữa, cách chúng tôi bắt đầu trình gỡ lỗi là chúng tôi đi tới trình gỡ lỗi và chúng tôi nói, bắt đầu, tiếp tục, phải
không?
Mọi thứ khác đều có màu xám, phải không?
Vì vậy, hãy bắt đầu trình gỡ lỗi chỉ để đạt điểm dừng đó.
Vì vậy, hãy bắt đầu tiếp tục trình gỡ lỗi và chúng tôi sẽ nói xây dựng và gỡ lỗi và bạn sẽ nhận
thấy rằng chương trình dừng ở dòng thứ mười.
Bạn thấy mũi tên màu xanh lá cây đó. Bạn cũng thấy ngăn trình gỡ lỗi xuất hiện.
Vì vậy, nếu bạn đi tới chế độ xem, bạn thực sự có thể hiển thị ngăn trình gỡ lỗi theo cách thủ công
hoặc nó có thể tự động xuất hiện khi bạn chuyển sang chế độ gỡ lỗi và ngăn trình gỡ lỗi có nhiều tab khác nhau để có thể xem thông
tin.
Bạn cũng có thể xem qua trình gỡ lỗi, bạn vào cửa sổ GDB, bạn có thể thấy tất cả những cái
được chọn.
Có nhiều cửa sổ trình gỡ lỗi mà bạn có thể xem.
Vì vậy, người dân địa phương thường phải làm với đồng hồ biến cục bộ của bạn.
Bạn có thể đặt đồng hồ trên một biến để nếu biến thay đổi, nó sẽ bật lên.
Đầu ra được sử dụng cho các tùy chọn gỡ lỗi và luồng đầu ra khác nhau.
Bạn thực sự có thể nhìn vào các chủ đề đang chạy chương trình của bạn.
Khái niệm nâng cao hơn Callstack là những gì chúng tôi tập trung vào.
Về cơ bản, chúng tôi xem xét ngăn xếp cuộc gọi và người dân địa phương.
Đó là hai cái quan trọng nhất giúp bạn gỡ lỗi và sau đó là bộ nhớ và sau đó là các điểm ngắt.
Bạn có thể thấy nơi các điểm ngắt được đặt.
Vì vậy, rất nhiều lựa chọn khác nhau.
Chúng tôi hiện đang dừng lại ở dòng mười.
Chúng ta có thể nhìn vào ngăn xếp cuộc gọi.
Ngăn xếp cuộc gọi cho chúng ta thấy rằng chức năng chính được gọi.
Nếu chúng ta nhìn vào những người dân địa phương, nó sẽ cho chúng ta thấy ba biến không một và không.
Chúng tôi chưa thực sự nhập bất kỳ thông tin nào trong những thông tin được khởi tạo bằng 0 và 0.
Đồng hồ là bạn thực sự có thể thêm.
Thêm bằng cách nhấn vào dấu cộng để thêm đồng hồ vào một biến cụ thể.
Và điều quan trọng khác cần lưu ý là khi bạn chạy ở chế độ gỡ lỗi, bây giờ bạn có thanh công
cụ cho trình gỡ lỗi, phải không?
Nút phát sẽ chỉ tiếp tục.
Vì vậy, nó sẽ đi.
Nếu tôi nhấn play, nó sẽ thoát khỏi chương trình, phải không?
Nó sẽ chỉ bắt đầu chạy.
Chương trình thực sự sẽ yêu cầu đầu vào.
Vì vậy, tôi nhấn chơi.
Tôi quay lại ứng dụng bảng điều khiển và nó báo Enter.
Vì vậy, tôi đã đánh ba số của mình trong lần chạy chương trình.
Sau đó, bạn vẫn không thấy chức năng in.
Cửa sổ vừa biến mất.
Vì vậy, một lần nữa, chúng tôi chạy trong chế độ gỡ lỗi và nó lại chuyển đến điểm dừng, ngăn trình gỡ lỗi xuất hiện, nó dừng
dòng thứ mười.
Bây giờ thanh công cụ rất quan trọng vì đây là cách bạn thực sự có thể lướt qua mã của mình và bạn thực
sự có thể sử dụng thanh công cụ hoặc bạn có thể truy cập trình gỡ lỗi và bạn có thể xem tất cả các tùy chọn ở đây.
Vì vậy, bạn có thể nói từng bước bước vào hướng dẫn tiếp theo, hướng dẫn tiếp theo, bước ra, bước vào sẽ đi vào bên
trong một chức năng.
Nếu một chức năng đang được gọi trên dòng đó, thì bước hướng dẫn sẽ chuyển nhiều hơn sang nội dung
kiểu hợp ngữ.
Tiếp theo, chúng ta sẽ nhảy qua dòng mã đó.
Và hướng dẫn cổ là loại điều tương tự.
Bước ra ngoài, cố gắng nhảy ra khỏi một chức năng nếu bạn đã ở trong một chức năng và nhảy đến hàng cà rốt.
Trên thực tế tôi nghĩ đi đến con trỏ.
Tương tự với chạy đến hàng củ cà rốt.
Bạn có thể bật và tắt các điểm dừng, vô hiệu hóa tất cả chúng, tất cả những thứ đó để bạn có thể truy cập điểm này thông
qua menu.
Hoặc một lần nữa, thanh công cụ.
Thường thì tôi sử dụng thanh công cụ vì nó đã lên rồi.
Và sau đó nếu bạn nhìn vào các cửa sổ khác nhau một lần nữa, người dân địa phương sẽ gọi ngăn xếp và điểm dừng.
Thực sự những người quan trọng.
Điều này nói rằng tôi có một điểm ngắt ở dòng mười.
Và sau đó tôi nghĩ người ta chỉ nói con trỏ.
Vì vậy, bây giờ tôi đã dừng ở đây tại print F enter trên dòng mười.
Tôi có thể chuyển sang hướng dẫn tiếp theo và điều này sẽ chuyển sang quét dòng 11.
F thực sự là một chức năng chặn yêu cầu đầu vào.
Vì vậy, nếu tôi cố gắng tiếp tục ở đây, nó thực sự chỉ là tạm dừng.
Bạn thực sự có thể phải nhấn tiếp theo nhiều lần.
Tôi thường làm gì khi chương trình yêu cầu đầu vào và tôi muốn nó, nó đã bị chặn, nó đã dừng và tôi muốn
nó chuyển sang phần tiếp theo.
Tôi sẽ chỉ đặt một điểm ngắt trên dòng tiếp theo và nhấn nút phát.
Vì vậy, bây giờ tôi nhấn nút phát và không có gì xảy ra vì nó đang chờ đầu vào.
Trong chương trình, nó nói Enter.
Vì vậy, ở đây tôi có thể nhấn năm, sáu, bảy, nhấn nút nhập và bây giờ nó chạm điểm dừng của tôi.
Vì vậy, bây giờ chúng ta đang ở nút in nơi chúng ta thực sự có thể chuyển sang chức năng in.
Và thực tế đầu tiên nó sẽ chuyển sang hàm trung bình.
Vì vậy, nếu chúng ta nói bước vào, chúng ta sẽ thấy chúng ta đi đến hàm trung bình.
Và điều bạn sẽ nhận thấy là nếu bạn nhìn vào các biến của mình, bạn có thể thấy các biến của mình thay đổi.
Vì vậy, nếu bạn đi tiếp, bạn đến dòng tiếp theo trong 27, rồi 28, và sau đó tiếp tục đánh.
Tiếp theo, bạn thực sự nhảy ra ngoài và bạn thực sự ở cuối chức năng.
Vì vậy, sau đó bạn có thể nhấn play và bạn có thể thấy rằng chương trình của bạn đã hoàn thành và cửa sổ đã biến mất.
Nhưng bạn có thể xem xét các biến số của mình, bạn có thể xem xét mọi thứ khác.
Và như vậy, một lần nữa, bạn cũng có thể đặt một điểm dừng bên trong chức năng in ngay tại đây.
Và nếu chúng ta chạy đến đó, chúng ta có thể thấy lại rằng chức năng in sẽ dừng thực thi thay vì trung
bình.
Và sau đó chúng ta có thể thấy điều gì đang xảy ra trong thực tế nếu chúng ta bước
qua và vào ứng dụng, bạn có thể thấy rằng thông tin đã được in ra.
Phải?
Khi chạy tiếp, khi chạy đến cuối, bạn nhận được câu lệnh return và chương trình sẽ thoát.
Vì vậy, điều quan trọng nếu bạn muốn xem đầu ra của chương trình là bạn đặt một điểm
ngắt trước khi quay lại và bạn không phải tiếp tục.
Bạn có thể dừng trình gỡ lỗi bằng cách nhấn vào hình chữ nhật màu đỏ đó, tạm dừng trình gỡ lỗi bằng cách nhấn vào hai
thanh song song, khởi động lại trình gỡ lỗi với tùy chọn đó và ngăn xếp cuộc gọi.
Một lần nữa, ở đây sẽ dễ thấy hơn nếu bạn vào bên trong một hàm và bạn chạy trình gỡ lỗi, chúng ta sẽ chạy lại trình
gỡ lỗi.
Nói trình gỡ lỗi, bắt đầu, tiếp tục.
Và khi chúng tôi đạt đến điểm ngắt đó sau khi nhập thông tin bên trong một chức năng, bạn sẽ thấy ngăn xếp ô tô có phần
chính và phần in giống như chúng tôi đã trình bày trước đây.
Và vì vậy, bạn có thể thấy chức năng cuối cùng đã được gọi ngay bây giờ với một chương trình có nhiều chức năng, v.v.,
ngăn xếp cuộc gọi có thể lớn hơn nhiều so với mức này.
Điều khác duy nhất có thể quan trọng là các điểm dừng.
Nếu bạn muốn xem những điểm dừng nào bạn đã đặt, nó sẽ hiển thị cho bạn tất cả các điểm dừng và toàn bộ chương trình của
bạn ở vị trí của chúng.
Nhưng bạn sẽ phải chơi với nó, làm quen với nó, cảm thấy thoải mái với nó và sử dụng nó khá thường xuyên cho các
sự cố mà bạn không thể tìm ra bằng các chương trình hoặc kỹ thuật sửa lỗi cơ bản.
Tai nạn đi từng dòng một.
Và khi bạn đi từng dòng một, bạn thực sự có thể thấy chương trình thoát ra khi nó gặp
sự cố và bạn sẽ biết nó xảy ra ở dòng nào.
Một lần nữa, đây là một chương trình nhỏ, nhưng bạn nên hiểu cơ bản về cách thức hoạt động của quá trình gỡ lỗi.
Một lần nữa, tôi hy vọng điều này là hữu ích.
Cách tốt nhất để học những thứ này là bắt đầu chơi với nó và bắt đầu sử dụng nó.
Đưa ra một trong những chương trình mà bạn đã thực hiện trong thử thách trước đó.
Thêm một điểm dừng, rất đơn giản.
Chỉ cần nhấp chuột phải vào bên trong đồ vật để thêm điểm dừng.
Khởi động nó ở chế độ gỡ lỗi và duyệt qua từng dòng và xem các biến thay đổi như thế nào và ngăn xếp cuộc gọi
tăng lên như thế nào.
Nếu bạn có chức năng lớn hơn.
Cảm ơn.