เมื่อเกิดข้อผิดพลาดในการแบ่งส่วน

สารบัญ:

เมื่อเกิดข้อผิดพลาดในการแบ่งส่วน
เมื่อเกิดข้อผิดพลาดในการแบ่งส่วน
Anonim

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

อะไรทำให้เกิดความผิดพลาดในการแบ่งส่วน

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

คุณจะแก้ไขข้อผิดพลาดของการแบ่งส่วนได้อย่างไร

6 คำตอบ

  1. รวบรวมแอปพลิเคชันของคุณด้วย -g แล้วคุณจะมีสัญลักษณ์การดีบักในไฟล์ไบนารี
  2. ใช้ gdb เพื่อเปิดคอนโซล gdb
  3. ใช้ไฟล์แล้วส่งไฟล์ไบนารีของแอปพลิเคชันของคุณในคอนโซล
  4. ใช้ run และ pass ในทุกอาร์กิวเมนต์ที่แอปพลิเคชันของคุณต้องเริ่มต้น
  5. ทำอะไรบางอย่างเพื่อทำให้เกิดข้อผิดพลาดในการแบ่งกลุ่ม

เหตุใดจึงเกิดข้อผิดพลาดในการแบ่งส่วนในภาษา C++

Core Dump/Segmentation Fault เป็นข้อผิดพลาดประเภท ที่เกิดจากการเข้าถึงหน่วยความจำที่ “ไม่ได้เป็นของคุณ” เมื่อโค้ดบางส่วนพยายามอ่านและเขียนในตำแหน่งแบบอ่านอย่างเดียวในหน่วยความจำหรือบล็อกหน่วยความจำที่ว่าง จะเรียกว่าคอร์ดัมพ์ มันเป็นข้อผิดพลาดที่ระบุว่าหน่วยความจำเสียหาย

คุณพบข้อผิดพลาดในการแบ่งส่วนได้อย่างไร

การดีบักข้อผิดพลาดในการแบ่งเซ็กเมนต์โดยใช้GEF และ GDB

  1. ขั้นตอนที่ 1: ทำให้เกิด segfault ภายใน GDB ดูตัวอย่างไฟล์ที่ก่อให้เกิด segfault ได้ที่นี่ …
  2. ขั้นตอนที่ 2: ค้นหาการเรียกใช้ฟังก์ชันที่ทำให้เกิดปัญหา …
  3. ขั้นตอนที่ 3: ตรวจสอบตัวแปรและค่าต่างๆ จนกว่าคุณจะพบตัวชี้หรือตัวพิมพ์ที่ไม่ถูกต้อง