Хэзээ сегментчлэлийн алдаа гарах вэ?

Агуулгын хүснэгт:

Хэзээ сегментчлэлийн алдаа гарах вэ?
Хэзээ сегментчлэлийн алдаа гарах вэ?
Anonim

Хэрэв хэрэглэхийг зөвшөөрөөгүй санах ойн байршилд хандахыг оролдох эсвэл санах ойн байршилд зөвшөөрөгдөөгүй байдлаар хандахыг оролдох үед сегментчлэлийн алдаа гардаг. (жишээ нь, зөвхөн унших боломжтой газар руу бичих эсвэл үйлдлийн системийн хэсгийг дарж бичих гэх мэт).

Сегментчлэлийн алдаа юу үүсгэж болох вэ?

Сегментчлэлийн алдаа (segfault гэх) нь программуудыг гацахад хүргэдэг нийтлэг нөхцөл юм; тэдгээр нь ихэвчлэн core нэртэй файлтай холбоотой байдаг. Санах ойн байршлыг хууль бусаар унших, бичихийг оролдсон программаас болж алдаа гардаг.

Та сегментчлэлийн алдааг хэрхэн засах вэ?

6 Хариулт

  1. Өөрийн программыг -g ашиглан эмхэтгэвэл хоёртын файлд дибаг хийх тэмдэгтүүд бий болно.
  2. Gdb консолыг нээхийн тулд gdb ашиглана уу.
  3. Файлыг ашиглаж, консол дээр програмынхаа хоёртын файл руу шилжүүлээрэй.
  4. Аппликейшныг эхлүүлэхэд шаардлагатай бүх аргументыг ажиллуулж, дамжуулна уу.
  5. Сегментийн алдаа гаргахын тулд ямар нэг зүйл хий.

С++ хэл дээр яагаад сегментчлэлийн алдаа гардаг вэ?

Үндсэн Дамп/Segmentation-ийн алдаа нь "таных биш" санах ойд хандсанаас үүссэн тодорхой төрлийн алдаа юм. Кодын хэсэг нь санах ойн зөвхөн уншигдах байршил эсвэл санах ойн чөлөөлөгдсөн блок дээр унших, бичих үйлдлийг хийхийг оролдох үед үүнийг үндсэн дамп гэж нэрлэдэг. Энэ нь санах ойн эвдрэлийг илтгэх алдаа юм.

Та сегментчлэлийн алдааг хэрхэн олох вэ?

Сегментацийн алдааг ашиглан дибаг хийхGEF болон GDB

  1. Алхам 1: GDB доторх segfault үүсгэнэ үү. Жишээ нь segfault үүсгэгч файлыг эндээс олж болно. …
  2. Алхам 2: Асуудлыг үүсгэсэн функцийн дуудлагыг олоорой. …
  3. 3-р алхам: Буруу заагч эсвэл үсгийн алдаа олох хүртлээ хувьсагч болон утгыг шалгана уу.

Зөвлөмж болгож буй: