มาพูดถึงหัวข้อที่สำคัญมากกัน หากคุณต้องการเป็นโปรแกรมเมอร์ที่ยอดเยี่ยม สิ่งนั้นเรียกว่าการดีบัก
คุณเห็นไหมว่าไม่มีใครเขียนโปรแกรมที่สมบูรณ์แบบ
มันเป็นไปไม่ได้จริงๆ
เราจะทำผิดพลาดอยู่เสมอและโปรแกรมต่างๆ ได้รับการปรับปรุงอย่างต่อเนื่อง
เราปรับปรุงโค้ดของเราอย่างต่อเนื่องเมื่อเราพบข้อผิดพลาดมากขึ้นเรื่อยๆ เนื่องจากโปรแกรมต่างๆ เต็มไปด้วยข้อผิดพลาดหรือสิ่งที่เราเรียกว่าจุดบกพร่องหรือข้อยกเว้นขณะรันไทม์เมื่อโค้ดทำงาน
คุณเห็นไหม การค้นหาและลบจุดบกพร่องหรือข้อผิดพลาดเหล่านี้ออกจากโค้ดของเราเรียกว่าการดีบัก
ในช่วงเวลาส่วนใหญ่ของเราในฐานะโปรแกรมเมอร์กำลังดีบั๊กโค้ด ไม่ว่าจะเป็นโค้ดของเราเองหรือโค้ดของคนอื่น
และพบว่า เฮ้ ทำไมสิ่งนี้ถึงใช้ไม่ได้ผล
และนักพัฒนาอาวุโสก็เก่งในการดีบักจริงๆ
มาพูดคุยกันในวิดีโอนี้เกี่ยวกับคำแนะนำของฉันสำหรับการดีบักและแนวทางปฏิบัติที่ดีบางประการในวิดีโอนี้
ตอนนี้ จำไว้ว่าคุณจะเก่งขึ้นในการดีบักโค้ดเมื่อคุณเขียนโค้ดมากขึ้นเรื่อยๆ
ดังนั้นสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือฝึกฝนต่อไป เขียนโค้ด Python ต่อไป
แล้วเคล็ดลับของฉันมีอะไรบ้าง?
ก่อนอื่น คุณต้องการใช้เงินกู้อย่างแน่นอน
และการกู้ยืมคืออะไร?
เราได้พูดคุยเกี่ยวกับมันอย่างถูกต้องเมื่อเราตั้งค่าสภาพแวดล้อมสำหรับนักพัฒนาของเรา
การให้ยืมช่วยให้เราตรวจพบขณะที่เราเขียนโค้ดปัญหาบางอย่างกับโค้ดของเรา
ตัวอย่างเช่น ถ้าฉันใส่ num บวกสี่ที่นี่ และฉันได้ขีดเส้นใต้สีแดง และคุณเห็นว่าที่นี่ผู้ให้กู้ Pi Flakes สังเกตเห็นก่อนที่ฉันจะเรียกใช้โค้ดด้วยซ้ำ
เฮ้ มีชื่อ NUM ที่ไม่ได้กำหนดไว้
การให้ยืมช่วยให้เราพบข้อผิดพลาดเหล่านี้ก่อนที่เราจะเรียกใช้โค้ดของเราด้วยซ้ำ
และเราเห็นว่าเราสามารถใช้ ID เช่น pi charm ที่มีให้ยืมอยู่แล้วหรือใช้ข้อความประเสริฐหรือโค้ด
Visual Studio และติดตั้งแพ็คเกจและส่วนขยายเช่น PI lent เพื่อให้มีการให้ยืมในโค้ดของเรา
นั่นเป็นเครื่องมือที่สำคัญจริงๆ
ต่อไป ฉันขอแนะนำให้ใช้ ID หรือ
Ed เนื่องจากตัวแก้ไขและ ID เหล่านี้ โดยเฉพาะอย่างยิ่งตัวแก้ไขเฉพาะสำหรับ Python เช่น
Pi char มีเครื่องมือในตัวเหล่านี้ให้เราใช้ เช่น การจัดรูปแบบอัตโนมัติตาม Pep 8
จำคู่มือสไตล์ทางการของสไตล์ที่ชุมชน Python มีหรือไม่?
ช่วยให้เราสามารถตรวจจับข้อผิดพลาดในโค้ดของเราได้ เช่น การเน้นและการจัดรูปแบบโค้ดของเรา
ดังนั้นจึงกลายเป็นเรื่องง่ายสำหรับเราที่จะตรวจพบข้อผิดพลาดใดๆ ก่อนที่เราจะเรียกใช้โค้ด
สุดท้าย คุณต้องการเรียนรู้ที่จะอ่านข้อผิดพลาด
และนี่คือสิ่งที่ฉันพยายามฝึกกับคุณอย่างที่เราได้เรียนรู้ Python
ตัวอย่างเช่น ถ้าฉันใช้ four plus สมมุติว่าพูดพล่อยๆ แล้วคลิก Run
ทันที.
เข้าใจแล้ว.
เฮ้ สายหก
มีข้อผิดพลาดในไฟล์ PI หลักของฉัน
มีข้อผิดพลาดประเภท และฉันเห็นที่นี่ว่าฉันกำลังพยายามเพิ่ม int และสตริง
เราจึงสามารถอ่านข้อผิดพลาดและเข้าใจความหมายได้
บางทีฉันอาจทำอะไรแบบนี้
ถ้าฉันคลิกเรียกใช้
ฉันได้รับข้อผิดพลาดทางไวยากรณ์
และข้อผิดพลาดทางไวยากรณ์ที่ฉันรู้หมายความว่า
เฮ้ ล่าม Python พยายามอ่านโค้ดของฉัน แต่สิ่งที่คุณเพิ่งเขียนไม่ใช่ Python
ฉันไม่รู้ว่าคุณกำลังทำอะไร
ที่นี่.
ฉันเห็นว่ามันเป็นจุดสิ้นสุดของบรรทัดขณะสแกนตัวอักษรสตริง
ฉันกำลังพยายามอ่านสตริงนี้ และในทันใดโปรแกรมก็จบลงเหมือนที่คุณควรจะจบสตริง
จำได้ไหม
ดังนั้นความสามารถในการอ่านข้อผิดพลาดเหล่านี้จึงสำคัญมาก
และเราได้พูดคุยกันบางส่วนในหลักสูตรนี้ ซึ่งบางส่วนที่พบบ่อยที่สุด เช่น ข้อผิดพลาดทางไวยากรณ์ ซึ่งคุณเพียงแค่เขียนบางสิ่งที่ล่าม
Python ไม่เข้าใจ
เรามีบางอย่างเช่นชื่อผิดพลาดใช่ไหม
ที่เราใช้ตัวแปรที่ไม่มีอยู่
ดังนั้น Python จึงไม่เข้าใจ
เฮ้ ฉันไม่รู้ว่าชื่ออะไร
ค่าของชื่อคืออะไร?
เรามีของเช่นประเภทอากาศ
นั่นคือเมื่อเราไม่ตรงกับประเภทข้อมูลและสมมุติว่าสตริงบวกสี่
เรามีสิ่งต่างๆ เช่น ค่าผิดพลาด
เรามีบางอย่างเช่นข้อผิดพลาดของคีย์ที่เราพยายามเข้าถึงคีย์ที่ไม่มีอยู่หรือข้อผิดพลาดของแอตทริบิวต์ที่เรากำลังพยายามเข้าถึงวิธีการของวัตถุและไม่มีวิธีการดังกล่าว
ข้อผิดพลาดเหล่านี้เป็นสิ่งที่เราเห็นตลอดหลักสูตร และเราจะมาดูกันอีกสองสามข้อ
ฉันจะบอกว่ามีข้อผิดพลาดประมาณ 15 ถึง 20 ข้อผิดพลาดที่เกิดขึ้นบ่อยมากซึ่งแสดง 90% ของเวลาทั้งหมด
และถ้าคุณจำได้ คุณสามารถไปที่เอกสาร Python เพื่อเรียนรู้เกี่ยวกับมันได้ตลอดเวลา
แต่นี่เป็นเพียงการฝึกฝนเท่านั้น
หากคุณพบข้อผิดพลาดที่คุณไม่เคยเห็นมาก่อน เราขอแนะนำให้คุณไปที่เอกสารประกอบและอ่านเมื่อคุณเห็นข้อผิดพลาด
คุณมักจะจำได้เมื่อมันมาถึงต่อไป
แต่ให้ฉันแสดงวิธีที่ฉันโปรดปรานในการดีบักโค้ดให้คุณดู
และเรียกว่า PDB หรือ Python Debugger
และ PDB เป็นโมดูลในตัวใน Python ที่นี่
อีกครั้ง.
โปรดจำไว้ว่า โมดูลในตัวของเราเป็นส่วนหนึ่งของไลบรารีมาตรฐานที่มาพร้อมกับ Python และ PDB เป็นตัวดีบัก
Python สำหรับล่ามเชิงโต้ตอบ
และคุณสามารถอ่านเกี่ยวกับมันได้ที่นี่ แต่ให้ฉันแสดงให้คุณเห็นว่ามันทำอะไรได้บ้าง
คุณเห็น.
PDB มีประโยชน์มากเพราะช่วยให้เราโต้ตอบกับโค้ดได้
ก่อนหน้านี้เมื่อเรามีฟังก์ชัน สมมุติว่าเรามีฟังก์ชัน ADD และเรามี num หนึ่ง num
สอง แล้วฟังก์ชันนี้จะส่งกลับ num หนึ่ง บวก num สอง
ก่อนหน้านี้ ถ้าเราต้องการ สมมติว่าดีบักโค้ดนี้ และสมมติว่าเรากำลังเพิ่ม 4 บวกกับคำที่ไม่มีความหมาย และทำให้เรามีข้อผิดพลาด
ขั้นตอนแรกที่ฉันจะทำคือเพิ่มการพิมพ์ที่นี่เพื่อที่ฉันจะได้บอกว่าพิมพ์
เฮ้ เกิดอะไรขึ้น
ให้ฉันดู.
ที่หนึ่งและที่สองและสิ่งที่มันให้มา
และการพิมพ์เป็นวิธีที่รวดเร็วและง่ายดายในการดีบักโค้ดของคุณ
ฉันใช้มันตลอดเวลา แต่ PDB ให้พลังพิเศษแก่เราเล็กน้อย
เราก็เลยใช้ได้แบบนี้
เราเพียงแค่นำเข้า PDB และแทนที่จะใช้บางอย่างเช่นฟังก์ชันการพิมพ์ เราสามารถพูดง่ายๆ ว่า ขอเพิ่มช่องว่างในนี้
เราสามารถพูด PDB สำหรับดีบักเกอร์ Python แล้วพูด set trace
และตั้งค่าการติดตาม ฉันจะบอกว่าเป็นวิธีที่มีประโยชน์มากที่สุดที่เรามีกับวัตถุ PDB นี้ที่เรานำเข้า
คุณจะเห็นเมื่อฉันเรียกใช้ set method
ตอนนี้มันทำให้ฉันมีตัวดีบัก Python แบบโต้ตอบซึ่งตอนนี้ฉันสามารถพิมพ์คำสั่งที่นี่และทดสอบโค้ดของฉันได้จริง
และนี่คือส่วนที่น่าสนใจในตอนนี้ใน PDB นี้ ฉันอยู่ในบรรทัดที่แปด
ดังนั้นรหัสของฉันพยายามเรียกใช้ แต่แล้วมันก็หยุดชั่วคราวทันทีที่มันบอกว่า PDB ตั้งค่าการติดตาม
และตอนนี้ฉันอยู่ในโลกนี้ และฉันสามารถทดสอบว่าเกิดอะไรขึ้น เพื่อที่ฉันจะได้พูดจริงๆ ว่า เฮ้ คุณหนึ่ง มันคืออะไร?
อืม หนึ่งคือสี่
แล้วอันดับสองล่ะ
num two เป็น string และฉันสามารถเป็นได้ โอ้ ฉันกำลังพยายามเพิ่ม string และ int สิ่งนี้ใช้ไม่ได้ ดังนั้นฉันสามารถตรวจจับข้อผิดพลาดด้วยวิธีนี้ได้เช่นกัน
ตอนนี้ PDB แบบโต้ตอบนี้มีสิ่งที่เป็นประโยชน์มากมาย
ดังนั้นถ้าฉันพิมพ์ความช่วยเหลือที่นี่
คุณเห็นว่า?
ฉันมีคำสั่งที่ฉันสามารถใช้ได้ใน PDB
ดังนั้นฉันจึงมีตันที่นี่
ฉันมีทางออกซึ่งฉันคิดว่ากำลังจะออกจาก PDB ซึ่งเป็นดีบักเกอร์ Python
แต่ฉันก็มี
สิ่งที่ชอบ
สมมติว่ารายการ
มาดูกันว่ามีรายการอะไรบ้าง
ดังนั้นเมื่อฉันพิมพ์รายการที่นี่และตอนนี้เว็บไซต์เป็นจริง
ไม่แสดงให้ฉันเห็นมากเกินไป แต่หวังว่าคุณจะยังเห็นรายการอยู่
และฉันเดาเอาท์พุตบางอย่าง
ฉันเห็นว่าฉันได้รับรายการโค้ดและ OC ของฉัน แต่สมมติว่าฉันไม่รู้ว่ารายการใดทำงานได้ดี
PDB ช่วยให้เราสามารถพิมพ์ ช่วยเหลือ แล้วแสดงรายการ
และเมื่อเราทำเช่นนั้น มันจะให้เอกสารกับเราจริง ๆ เหมือนกับที่เรามีที่นี่
ถ้าเราไปที่สมมติว่ารายการ
มาดูกัน.
รายการ รายการ รายการ รายการ.
ที่นี่.
มันให้เอกสารกับฉันที่นี่
ดังนั้นจึงบอกว่ารายการแหล่งที่มาสำหรับไฟล์ปัจจุบัน
ไม่เป็นไร.
ดังนั้นจึงแสดงรายการซอร์สโค้ดที่เราเขียน
โอเค เจ๋งไปเลย
มีอะไรอีกบ้าง?
เรายังมีบางอย่างเช่น step หรือ se สำหรับระยะสั้นและขั้นตอนนั้นเจ๋งจริงๆ
ลองใช้ clear เพื่อนำสิ่งนี้ขึ้นไปบนสุด
ดังนั้นฉันจะพูดให้ชัดเจนเพื่อที่มันจะล้างความแตกแยกทั้งหมด
มาทำกัน
มาทำให้มันใหญ่ขึ้นอีกหน่อยเพื่อให้คุณได้เห็น
ไปเลย
มันดีกว่า.
ไม่เป็นไร.
ตอนนี้ผมสามารถทำอะไรบางอย่างเช่น step และ step จะทำให้เราสามารถไปยังบรรทัดถัดไปได้
ดังนั้น อีกครั้ง ถ้าเราทำให้มันใหญ่ขึ้นอีกนิด
สเต็ปจะบอกว่า เฮ้ ไปที่บรรทัดที่เก้า
มาดูกันว่าจะเกิดอะไรขึ้น
ฉันจะพิมพ์ในขั้นตอน
โอ้.
และฉันได้ก้าวสองครั้ง
งั้นมาถูกที่เลย
และดูนั่นสิ
ฉันไปที่บรรทัดถัดไปในรหัสของฉันและจะได้รับ
เฮ้ คุณพิมพ์ผิดเหรอ?
ข้อผิดพลาด.
ข้อผิดพลาดที่เราได้รับ
ลองเพิ่มอีกบรรทัดในนี้
สมมติว่าเรากำลังพยายามบวก 4 บวก 5 ในนี้ หรือ 4 คูณด้วย 5 แล้วกำหนดให้กับตัวแปร
ถ้าฉันหยุดสิ่งนี้และเรียกใช้สิ่งนี้อีกครั้ง
ตอนนี้ฉันอยู่ข้างใน
ตรงนี้.
ถ้าฉันพิมพ์ชื่อชาฉันจะได้ชื่อ
อากาศ.
ชาไม่ได้กำหนดเพราะ
ฉันอยู่ในรหัสที่นี่ในบรรทัดที่แปด แต่เรายังไม่ได้วิ่งไปที่บรรทัดที่เก้า
มาทำขั้นตอนกันเลย
และตอนนี้ฉันอยู่ด้านถัดไป
ถ้าผมทำ pt ตอนนี้ ผมจะได้ เฮ้ t เท่ากับ 20
สุดยอด.
ดังนั้นขั้นตอนที่ฉันสามารถก้าวผ่านโค้ดซึ่งมีประโยชน์จริงๆ
ฉันยังมีสิ่งต่าง ๆ เช่น ทำต่อ ซึ่งช่วยให้ฉันดำเนินการต่อผ่านโค้ดได้จนกว่าฉันจะส่งคืนบางสิ่ง
และฉันดำเนินการต่อและออกจาก PDB แล้วดูสิ่งนั้น
ฉันได้รับข้อผิดพลาด
เรียกใช้สิ่งนี้อีกครั้ง
คำสั่งที่มีประโยชน์อีกอย่างหนึ่งคือ a และ a ให้อาร์กิวเมนต์ทั้งหมดของฟังก์ชันปัจจุบันที่เรามีอยู่
ดูนั่นสิ
ฉันได้รับข้อโต้แย้งทั้งหมดซึ่งเป็นประโยชน์จริงๆ อีกครั้ง
นอกจากนี้ยังมีคำสั่ง w.
ซึ่งแสดงให้ฉันเห็นบริบทของบรรทัดปัจจุบันที่กำลังดำเนินการอยู่
คุณจะเห็นว่าเราอยู่ที่ไหน เราอยู่ในโฆษณา
การทำงาน.
เราเรียกมันด้วยข้อโต้แย้งเหล่านี้ และตอนนี้เรากำลังจะเรียกใช้บรรทัดนี้
และสุดท้าย ในขณะที่เรากำลังแก้ไขข้อบกพร่องนี้
เอาล่ะ ฉันคิดว่าในที่สุดฉันก็เห็นว่าเรามีข้อผิดพลาด
เราควรจะให้ตัวเลขนี้เพื่อที่ฉันจะได้ออกจากที่นี่และเพียงแค่แก้ไขเป็นห้า
ตอนนี้ฉันสามารถลบ PDB และทุกอย่างได้
ควรทำงานได้ดีกับรหัสของฉัน
สุดยอด.
ดังนั้น PTB จึงยอดเยี่ยมมากในการก้าวผ่านโค้ดและดีบั๊กของคุณ และลองทำสิ่งที่แตกต่างกัน
มันต้องใช้เวลาฝึกฝนสักหน่อย แต่หลังจากเล่น PDB มาทั้งวัน คุณจะเก่งในการดีบั๊กได้จริงๆ
หลังจากวิดีโอนี้ ฉันแนะนำให้คุณเขียน PDB และหวังว่าคุณจะมีไฟล์ Python ที่ใหญ่พอที่คุณจะสามารถก้าวข้ามและทดลองกับคำสั่งต่างๆ
โดยใช้ความช่วยเหลือ โดยใช้รายการเพื่อดูว่าคุณมีอะไรบ้าง
อันที่จริง ฉันต้องการแสดงสิ่งสุดท้ายให้คุณดู
สมมุติว่าเรากลับไปที่โค้ดของเรา PDB set trace
ฉันคลิกเรียกใช้
ฉันสามารถทำสิ่งนี้โดยที่ฉันสังเกตเห็นว่าฉันพิมพ์ A และฉันมี
เอาล่ะ รหัสของฉันใช้งานได้ แต่ฉันสามารถเปลี่ยน num two ให้เท่ากับพูดพล่อยๆ ได้ไหม
มาดูกันว่าตอนนี้ฉันจะทำต่อไปหรือไม่
และทำต่อไปเพื่อเรียกใช้บรรทัดสุดท้ายนี้
ฉันได้รับอากาศ
ดังนั้นฉันจึงสามารถเปลี่ยนตัวแปรที่นี่และเขียนโค้ด Python เพื่อทดสอบฟังก์ชันของฉันได้
ตอนนี้กำลังทำงานอยู่
ฉันสามารถทดสอบได้ เฮ้ จะเกิดอะไรขึ้นถ้าเราเปลี่ยนตัวแปรนี้เป็นค่าอื่น
อีกครั้งมีประโยชน์มากมาก