Hãy nói về một chủ đề rất quan trọng nếu bạn muốn trở thành một lập trình viên giỏi, và đó được gọi là gỡ lỗi.
Bạn thấy đấy, không ai viết những chương trình hoàn hảo.
Thật sự là không thể.
Chúng tôi sẽ luôn mắc lỗi và các chương trình không ngừng được cải tiến.
Chúng tôi không ngừng cải thiện mã của mình khi chúng tôi phát hiện ngày càng nhiều lỗi vì các chương trình có đầy lỗi hoặc những gì
chúng tôi gọi là lỗi hoặc ngoại lệ trong thời gian chạy khi mã đang chạy.
Bạn thấy đấy, hành động tìm và loại bỏ các lỗi hoặc lỗi này khỏi mã của chúng tôi được gọi là gỡ lỗi.
Trong một phần lớn thời gian của chúng ta khi các lập trình viên đang gỡ lỗi mã, cho dù đó là mã của chính chúng ta hay mã của người khác,
và tìm hiểu xem, này, tại sao điều này lại không hoạt động?
Và các nhà phát triển cấp cao thực sự rất giỏi trong việc gỡ lỗi.
Vì vậy, trong video này hãy nói về một số khuyến nghị của tôi để gỡ lỗi và một số phương pháp
hay là gì.
Bây giờ, hãy nhớ rằng bạn ngày càng hiểu rõ hơn trong việc gỡ lỗi mã khi bạn viết mã ngày càng nhiều.
Vì vậy, điều tốt nhất bạn có thể làm là tiếp tục luyện tập, tiếp tục viết mã Python.
Vì vậy, một số lời khuyên của tôi là gì?
Đầu tiên, bạn chắc chắn muốn sử dụng một số khoản vay.
Và cho vay là gì?
Chà, chúng ta đã nói về nó ngay khi chúng ta thiết lập môi trường dành cho nhà phát triển của mình.
Cho vay cho phép chúng tôi phát hiện khi chúng tôi mã hóa một số vấn đề với mã của chúng tôi.
Ví dụ: nếu tôi thực hiện num cộng với bốn ở đây và tôi nhận được gạch dưới màu đỏ và bạn thấy ở đây rằng người cho vay Pi Flakes thông
báo trước khi tôi chạy mã của mình rằng này, có một số không xác định có tên là NUM.
Vì vậy, việc cho vay cho phép chúng tôi tìm ra những lỗi này trước khi chúng tôi chạy mã của mình.
Và chúng tôi thấy rằng chúng tôi có thể sử dụng các ID như pi charm đã cho mượn sẵn hoặc sử dụng văn bản siêu phàm hoặc mã
Visual Studio và cài đặt các gói và tiện ích mở rộng như PI cho mượn để thực sự có cho vay trong mã của chúng
tôi.
Đó là một công cụ thực sự, thực sự quan trọng.
Tiếp theo, tôi khuyên bạn nên luôn sử dụng một số loại ID hoặc.
Ed, bởi vì những trình chỉnh sửa và ID này, đặc biệt là những ID dành riêng cho Python như Pi char, có tất cả
những công cụ được tích hợp sẵn để chúng tôi sử dụng, chẳng hạn như định dạng tự động dựa trên Pep 8.
Hãy nhớ hướng dẫn phong cách chính thức về phong cách mà cộng đồng Python có?
Nó cho phép chúng tôi phát hiện lỗi trong mã của chúng tôi, giả sử, đánh dấu và định dạng mã của chúng tôi.
Vì vậy, chúng tôi trở nên dễ dàng phát hiện bất kỳ lỗi nào trước khi chúng tôi chạy mã.
Cuối cùng, bạn muốn có thể học cách đọc lỗi.
Và đây là điều mà tôi cố gắng thực hành với bạn khi chúng ta đã học, Python.
Ví dụ: nếu tôi thực hiện bốn dấu cộng, hãy nói vô nghĩa ở đây và tôi nhấp vào Chạy.
Ngay lập tức.
Tôi thấy.
Này, trên đường số sáu.
Có lỗi trong tệp PI chính của tôi.
Có một lỗi loại và tôi thấy ở đây rằng tôi đang cố gắng thêm int và một chuỗi.
Vì vậy, chúng tôi có thể đọc lỗi và hiểu ý nghĩa của chúng.
Có lẽ tôi làm điều gì đó như thế này.
Nếu tôi bấm Chạy.
Tôi gặp lỗi cú pháp.
Và một lỗi cú pháp mà tôi biết có nghĩa là như vậy.
Này, trình thông dịch Python đang cố đọc mã của tôi, nhưng những gì bạn vừa viết không phải là Python.
Tôi không biết bạn đang làm gì.
Nơi đây.
Tôi thấy rằng nó ở cuối dòng trong khi quét theo nghĩa đen của chuỗi.
Vì vậy, tôi đang cố đọc chuỗi này và đột nhiên chương trình kết thúc giống như bạn phải kết
thúc chuỗi, nhớ không?
Vì vậy, có thể đọc những lỗi này thực sự, thực sự quan trọng.
Và chúng tôi đã thảo luận về một số trong số chúng trong khóa học này, một số trong số những lỗi phổ biến nhất như lỗi cú pháp, nơi
bạn đang viết một cái gì đó mà trình thông dịch Python không hiểu.
Chúng tôi có một cái gì đó như lỗi tên, phải không?
Trường hợp chúng tôi sử dụng một biến không tồn tại.
Vì vậy, Python không hiểu.
Này, tôi không biết tên là gì.
Giá trị của tên là gì?
Chúng tôi có những thứ như loại không khí.
Đó là khi chúng ta không khớp kiểu dữ liệu và giả sử một chuỗi cộng với bốn.
Chúng tôi có những thứ như lỗi giá trị.
Chúng tôi gặp phải những thứ như lỗi khóa trong đó chúng tôi đang cố gắng truy cập vào một khóa không tồn tại hoặc lỗi thuộc tính
trong đó chúng tôi đang cố gắng truy cập phương thức của một đối tượng và phương thức đó không tồn tại.
Bây giờ, những lỗi này là thứ mà chúng tôi đã thấy trong suốt khóa học và chúng tôi sẽ xem thêm một
vài lỗi nữa.
Tôi có thể nói rằng có khoảng 15 đến 20 lỗi thực sự rất phổ biến thường xuất hiện
90%.
Và nếu bạn nhớ, bạn luôn có thể truy cập tài liệu Python để tìm hiểu về chúng.
Nhưng điều này chỉ đi kèm với thực hành.
Nếu bạn gặp lỗi mà bạn chưa từng thấy trước đây, tôi khuyên bạn nên truy cập tài liệu
và đọc lại khi bạn thấy nó.
Bạn thường có xu hướng ghi nhớ khi nó xuất hiện tiếp theo.
Nhưng hãy để tôi chỉ cho bạn cách yêu thích của tôi để gỡ lỗi mã.
Và nó được gọi là PDB hoặc Python Debugger.
Và PDB là một mô-đun được xây dựng trong Python ngay tại đây.
Lại.
Hãy nhớ rằng, mô-đun tích hợp của chúng tôi là một phần của thư viện tiêu chuẩn mà Python đi kèm và PDB là trình
gỡ lỗi Python cho các trình thông dịch tương tác.
Và bạn có thể đọc về nó ở đây, nhưng hãy để tôi chỉ cho bạn nó làm gì.
Bạn thấy đấy.
PDB cực kỳ hữu ích vì nó cho phép chúng ta tương tác với mã.
Vì vậy, trước đây khi chúng ta có một hàm, giả sử chúng ta có hàm ADD và chúng ta có num một, num hai và
sau đó hàm này chỉ đơn giản trả về num một cộng với num hai.
Bây giờ, trước đây nếu chúng ta muốn, hãy nói gỡ lỗi mã này và giả sử chúng ta đang thêm bốn cộng với một số chữ vô nghĩa và nó tạo
ra lỗi cho chúng ta.
Bước đầu tiên mà tôi sẽ thực hiện rất có thể là thêm một bản in vào đây để tôi có thể nói là bản in.
Này, chuyện gì đang xảy ra vậy?
Hãy để tôi xem.
Số một và số hai và những gì nó mang lại cho tôi.
Và print là một cách thực sự, thực sự nhanh chóng và dễ dàng để gỡ lỗi mã của bạn.
Tôi sử dụng nó mọi lúc, nhưng PDB giúp chúng tôi tăng thêm một chút.
Vì vậy, chúng ta có thể sử dụng nó như thế này.
Chúng tôi chỉ cần nhập PDB và thay vì sử dụng một cái gì đó như hàm in, chúng tôi có thể đơn giản nói, Hãy để tôi thêm một
khoảng trống vào đây.
Chúng ta chỉ có thể nói PDB cho trình gỡ lỗi Python và sau đó nói thiết lập dấu vết.
Và thiết lập dấu vết, tôi có thể nói là phương pháp hữu ích nhất mà chúng tôi có trên đối tượng PDB này mà chúng tôi đã nhập.
Bạn thấy khi tôi chạy một phương thức thiết lập.
Bây giờ nó cung cấp cho tôi một trình gỡ lỗi Python tương tác mà bây giờ tôi có thể nhập lệnh vào đây và thực sự kiểm tra mã
của mình.
Và đây là phần thú vị ngay bây giờ trong PDB này, tôi ở ngay trong dòng thứ tám.
Vì vậy, mã của tôi đã cố gắng chạy, nhưng sau đó nó tạm dừng ngay khi nó cho biết PDB đặt dấu vết.
Và bây giờ tôi đang ở trong thế giới này và tôi có thể kiểm tra những gì đang xảy ra để tôi thực sự có thể nói, Này, tê một cái,
nó là gì?
Chà, một là bốn.
Còn num hai.
Vâng num hai là một chuỗi và tôi có thể giống như tôi đang cố gắng thêm một chuỗi và một int này, điều này không hoạt
động nên tôi cũng có thể phát hiện lỗi theo cách này.
Bây giờ tương tác PDB này thực sự có rất nhiều thứ hữu ích.
Vì vậy, nếu tôi gõ trợ giúp ở đây.
Bạn thấy điều đó?
Tôi có các lệnh mà tôi có thể sử dụng trong PDB.
Vì vậy, tôi có một tấn ở đây.
Tôi có lối ra, mà tôi giả sử sẽ thoát tôi ra khỏi trình gỡ lỗi PDB, Python này.
Nhưng tôi cũng có.
Những thứ như.
Hãy nói danh sách.
Hãy xem những gì danh sách làm.
Vì vậy, khi tôi gõ vào danh sách ở đây và ngay bây giờ trang web thực sự là.
Không hiển thị cho tôi quá nhiều, nhưng hy vọng bạn vẫn có thể xem danh sách.
Và tôi đoán một số loại kết quả.
Tôi thấy rằng tôi nhận được danh sách mã của mình và OC, nhưng giả sử tôi không biết chính xác danh sách nào hoạt động tốt.
PDB cho phép chúng tôi gõ, trợ giúp và sau đó liệt kê.
Và khi chúng tôi làm điều đó, nó thực sự cung cấp cho chúng tôi tài liệu, giống như chúng tôi có ở đây.
Nếu chúng ta đi đến, giả sử, hãy liệt kê.
Hãy xem nào.
Danh sách, danh sách, danh sách, danh sách.
Ngay tại đây.
Nó cung cấp cho tôi tài liệu ngay tại đây.
Vì vậy, nó cho biết nguồn danh sách cho tệp hiện tại.
Được rồi.
Vì vậy, nó chỉ liệt kê mã nguồn mà chúng tôi đã viết.
OK, thật là đỉnh.
Còn gì nữa không?
Chà, chúng ta cũng có một cái gì đó như step hoặc se viết tắt và bước thực sự rất, rất thú vị.
Hãy thực sự sử dụng rõ ràng để đưa điều này lên hàng đầu.
Vì vậy, tôi sẽ nói rõ ràng để nó xóa tất cả các vi phạm.
Hay lam.
Hãy làm cho cái này lớn hơn một chút để bạn có thể thấy.
Của bạn đây.
Cái đó tốt hơn.
Được rồi.
Vì vậy, bây giờ tôi thực sự có thể làm một cái gì đó như bước và bước sẽ cho phép chúng ta đi đến dòng tiếp theo.
Vì vậy, một lần nữa, nếu chúng ta làm cho điều này lớn hơn một chút.
Bước sẽ nói, này, chuyển đến dòng số chín.
Vì vậy, chúng ta hãy xem những gì sẽ xảy ra.
Tôi sẽ gõ từng bước.
Ồ.
Và tôi đã bước hai lần.
Vì vậy, chúng ta hãy bước ngay.
Và nhìn vào đó.
Tôi đi đến dòng tiếp theo trong mã của mình và nó sẽ giúp tôi.
Này, bạn có một lỗi đánh máy?
Lỗi.
Lỗi mà chúng tôi nhận được.
Vì vậy, hãy thêm một dòng khác vào đây.
Giả sử rằng chúng tôi đang cố gắng thêm bốn cộng năm ở đây hoặc bốn nhân với năm
và gán nó cho một biến.
Nếu tôi dừng điều này và chạy lại.
Bây giờ tôi đang ở bên trong.
Ở đây.
Nếu tôi gõ trà, tôi sẽ có một cái tên.
Hàng không.
Trà không được xác định bởi vì.
Chà, tôi đang ở trong đoạn mã ở dòng 8, nhưng chúng ta vẫn chưa chạy dòng 9.
Vì vậy, chúng ta hãy làm bước.
Và bây giờ tôi đang ở bên tiếp theo.
Vì vậy, nếu tôi làm pt bây giờ tôi nhận được hey t bằng 20.
Đáng kinh ngạc.
Vì vậy, bước tôi có thể xem qua đoạn mã thực sự, thực sự hữu ích.
Tôi cũng có những thứ như tiếp tục cho phép tôi tiếp tục thông qua mã cho đến khi tôi trả lại thứ gì đó và
tôi tiếp tục và thoát ra khỏi PDB và nhìn vào điều đó.
Tôi nhận lỗi.
Hãy chạy lại điều này.
Một lệnh hữu ích khác là a và a thực sự cung cấp cho tôi tất cả các đối số của hàm hiện tại mà chúng ta đang sử
dụng.
Vì vậy, hãy nhìn vào đó.
Tôi nhận được tất cả các đối số một lần nữa thực sự hữu ích.
Ngoài ra còn có lệnh w.
Nó cho tôi biết bối cảnh của dòng hiện tại mà nó đang thực thi.
Vì vậy, bạn có thể thấy ở đây chúng tôi đang ở đâu, chúng tôi đang ở trong quảng cáo.
Hàm số.
Chúng tôi đã gọi nó với các đối số này và bây giờ chúng tôi sắp chạy dòng này.
Và cuối cùng, khi chúng tôi đang gỡ lỗi điều này.
Được rồi, tôi nghĩ cuối cùng tôi cũng thấy rằng chúng ta có lỗi.
Đáng lẽ chúng ta nên cho nó một con số để bây giờ tôi có thể thoát khỏi đây và chỉ cần sửa nó thành năm.
Vì vậy, bây giờ tôi chỉ có thể xóa PDB của mình và mọi thứ.
Sẽ hoạt động tốt với mã của tôi.
Đáng kinh ngạc.
Vì vậy, PTB thật tuyệt khi xem qua mã của bạn và gỡ lỗi cũng như thử những thứ khác nhau.
Nó đòi hỏi một chút luyện tập, nhưng sau một ngày chỉ chơi với PDB, bạn sẽ trở nên thực sự, thực sự giỏi
trong việc gỡ lỗi.
Vì vậy, sau video này, tôi khuyên bạn nên viết PDB và hy vọng bạn có một tệp Python đủ lớn để bạn có thể bước qua
và thử nghiệm với các lệnh khác nhau bằng cách sử dụng trợ giúp, sử dụng danh sách để xem những gì bạn
có sẵn cho bạn.
Thực ra, tôi muốn cho bạn thấy một điều cuối cùng.
Vì vậy, giả sử chúng ta quay lại mã của chúng ta, dấu vết bộ PDB của chúng ta.
Tôi bấm chạy.
Tôi có thể làm điều gì đó như thế này khi tôi nhận thấy rằng tôi loại A và tôi có.
Được rồi, mã của tôi đang hoạt động, nhưng tôi có thể thay đổi số hai thành bây giờ bằng một số vô nghĩa không?
Vâng, hãy xem nếu tôi làm tiếp theo bây giờ.
Và chúng ta hãy làm tiếp theo để chạy dòng cuối cùng này.
Tôi nhận được một không khí.
Vì vậy, tôi cũng có thể thay đổi các biến trong đây và viết mã Python để có thể kiểm tra các chức năng của mình.
Điều này hiện đang hoạt động.
Tôi có thể kiểm tra, này, điều gì sẽ xảy ra nếu chúng ta thay đổi biến này thành một giá trị khác?
Một lần nữa, rất, rất hữu ích.