ทำไมโปรแกรมถึงพัง

ทำไมโปรแกรมถึงพัง
ทำไมโปรแกรมถึงพัง

วีดีโอ: ทำไมโปรแกรมถึงพัง

วีดีโอ: ทำไมโปรแกรมถึงพัง
วีดีโอ: Windows 10 บูทไม่ได้ สอนวิธีการแก้ไข (อ่านบทความด้วย) 2024, เมษายน
Anonim

ความหลากหลายของงานที่แก้ไขได้ในปัจจุบันด้วยความช่วยเหลือของคอมพิวเตอร์ส่วนบุคคลนั้นมีให้จากการมีอยู่ของแอปพลิเคชั่นชุดใหญ่ ความสะดวกในการทำงานกับซอฟต์แวร์นั้นขึ้นอยู่กับความน่าเชื่อถือเป็นหลัก ซึ่งแสดงให้เห็นในกรณีที่ไม่มีสถานการณ์ฉุกเฉิน อย่างไรก็ตาม หลายโปรแกรมขัดข้องในช่วงเวลาที่ไม่เหมาะสมที่สุด ทำไม?

ทำไม
ทำไม

กลไกการยกเว้นใช้เพื่อติดตามและจัดการสถานการณ์พิเศษ ผิดปกติ หรือผิดพลาดที่เกิดขึ้นระหว่างการทำงานของโปรแกรมคอมพิวเตอร์ภายใต้การควบคุมของระบบปฏิบัติการสมัยใหม่ ข้อยกเว้นอาจเป็นฮาร์ดแวร์ (โยนโดยโปรเซสเซอร์) และซอฟต์แวร์ (โยนโดยแอปพลิเคชันเองหรือส่วนประกอบภายนอกของปลั๊กอินบางส่วน)

ข้อยกเว้นสามารถตรวจจับและจัดการได้อย่างถูกต้องโดยไม่คำนึงถึงประเภท ข้อยกเว้นที่ไม่ถูกตรวจจับไปที่ตัวจัดการไลบรารีรันไทม์รูทหรือตัวจัดการที่ติดตั้งระบบปฏิบัติการ หากเป็นเช่นนี้ โปรแกรมจะขัดข้องพร้อมข้อความหรือหน้าต่างการสิ้นสุดที่ผิดปกติ (ใน Windows) หากตัวจัดการระบบปฏิบัติการไม่ทำงาน (เช่น ลบออกโดยเจตนา) โปรแกรมจะ "หยุดทำงานอย่างเงียบๆ" ดังนั้นโปรแกรมจึงหยุดทำงานเนื่องจากข้อยกเว้นที่ไม่สามารถจัดการได้ สาเหตุของการเกิดข้อยกเว้นนั้นแตกต่างกัน

ในกรณีส่วนใหญ่ โปรแกรมขัดข้องเนื่องจากการเรียกใช้โค้ดของตนเองซึ่งมีข้อผิดพลาดในการใช้งานทั้งโดยชัดแจ้งหรือโดยปริยาย รายการสาเหตุที่เป็นไปได้ของเหตุฉุกเฉินนั้นยาวมาก สิ่งเหล่านี้เป็นทั้งข้อผิดพลาดคลาสสิกของการดำเนินการกับตัวเลขทศนิยม (เช่น การหารด้วย 0) และข้อผิดพลาดในการทำงานกับหน่วยความจำ (การอ่านหรือการเขียนนอกพื้นที่ที่อยู่ของกระบวนการ การเข้าถึงเพจที่ได้รับการป้องกัน การเขียนไปยังพื้นที่หน่วยความจำแบบอ่านอย่างเดียว), โอเวอร์โฟลว์สแต็กเนื่องจากการเรียกซ้ำที่ไม่สิ้นสุด เป็นต้น ในกรณีเหล่านี้ ข้อยกเว้นของฮาร์ดแวร์หรือข้อยกเว้นของระบบปฏิบัติการจะถูกส่งออกไป

ข้อผิดพลาดโดยนัยรวมถึงกรณีต่างๆ ของการกรองข้อมูลที่ป้อนเข้าไม่เพียงพอ การขาดการตรวจสอบความถูกต้องของค่าตัวชี้ และอื่นๆ อีกมากมาย ข้อบกพร่องดังกล่าวนำไปสู่สถานการณ์พิเศษเฉพาะในบางกรณีเท่านั้น

ข้อผิดพลาดในการดำเนินการยังสามารถพบได้ในส่วนประกอบภายนอกที่ใช้โดยแอปพลิเคชัน ตัวอย่างเช่น ในไลบรารีไดนามิกที่มีฟังก์ชันที่จำเป็นหรือโมดูลเสริม รหัสโปรแกรมที่โหลดโดยปริยายลงในพื้นที่ที่อยู่ของกระบวนการ (เช่น เพื่อสกัดกั้นฟังก์ชัน API บางอย่าง) อาจทำให้โปรแกรมหยุดทำงานได้เช่นกัน

ส่วนประกอบและไลบรารีจำนวนมาก (เช่น ADO บน Windows) ใช้กลไกการยกเว้นแบบเป็นโปรแกรมเป็นลำดับความสำคัญในการรายงานข้อผิดพลาด การขาดหรือการจัดการข้อยกเว้นที่ไม่สมบูรณ์โดยแอปพลิเคชันประเภทนี้สามารถนำไปสู่ความผิดพลาดได้แม้ในสถานการณ์ที่ไม่เป็นอันตรายอย่างสมบูรณ์ (เช่นการสูญเสียการเชื่อมต่อกับฐานข้อมูล)