Сегменттөө катасы качан пайда болот?

Мазмуну:

Сегменттөө катасы качан пайда болот?
Сегменттөө катасы качан пайда болот?
Anonim

Сегментация катасы программа эстутумга кирүүгө уруксат берилбеген жерге кирүүгө аракет кылганда пайда болот же эстутумдун жайгашкан жерине уруксат берилбеген жол менен кирүүгө аракет кылганда (мисалы, окуу үчүн гана болгон жерге жазуу аракети же операциялык системанын бир бөлүгүн кайра жазуу).

Сегменттөө катасына эмне себеп болушу мүмкүн?

Сегменттөө катасы (aka segfault) - программалардын бузулушуна алып келген жалпы шарт; алар көбүнчө core деп аталган файл менен байланышкан. Segfaults программанын эстутумдун мыйзамсыз жайгашкан жерин окууга же жазууга аракет кылуусунан келип чыгат.

Сегменттөө катасын кантип оңдойсуз?

6 Жооптор

  1. Колдонмоңузду -g менен түзүңүз, анда бинардык файлда мүчүлүштүктөрдү оңдоо символдоруңуз болот.
  2. Gdb консолун ачуу үчүн gdb колдонуңуз.
  3. Файлды колдонуңуз жана аны консолдогу колдонмоңуздун бинардык файлына өткөрүп бериңиз.
  4. Колдонмоңуз баштоо үчүн керек болгон аргументтердин баарында "Чурка" жана "өтүү" функциясын колдонуңуз.
  5. Сегменттөө катасын пайда кылуу үчүн бир нерсе кылыңыз.

Эмне үчүн C++ тилинде сегменттөө катасы пайда болот?

Негизги таштандынын/сегментациянын катасы - бул "сизге таандык эмес" эстутумга кирүүдөн келип чыккан катанын спецификалык түрү. Коддун бир бөлүгү эстутумдагы окуу үчүн гана орунда же эстутумдун бошогон блогунда окуу жана жазуу операциясын жасоого аракет кылганда, ал негизги таштанды деп аталат. Бул эс тутумдун бузулушун көрсөткөн ката.

Сиз сегменттөө катасын кантип табасыз?

Сегментациядагы каталарды оңдооGEF жана GDB

  1. 1-кадам: GDB ичиндеги segfault. Мисал segfault себеп файлды бул жерден тапса болот. …
  2. 2-кадам: Көйгөйгө себеп болгон функцияны табыңыз. …
  3. 3-кадам: Начар көрсөткүч же ката табылганга чейин өзгөрмөлөрдү жана маанилерди текшериңиз.

Сунушталууда: