لینکس میں قطعہ سازی کی خرابی کیا ہے؟

سیگمنٹٹیشن کی غلطی ، یا سیگفالٹ ، میموری کی خرابی ہے جس میں ایک پروگرام کسی میموری پتے تک رسائی حاصل کرنے کی کوشش کرتا ہے جو موجود نہیں ہے یا پروگرام تک رسائی کے حقوق نہیں ہیں۔ ناقص تحریری C اور C ++ پروگراموں میں یہ ایک عام نقص ہے۔ جب کوئی پروگرام قطعہ سازی کی غلطی سے ٹکرا جاتا ہے تو ، یہ اکثر غلطی والے فقرے "سیگمنٹٹیشن فالٹ" کے ساتھ کریش ہوجاتا ہے۔

قطعہ فالٹ کی بنیادی باتیں

آپریٹنگ سسٹم کی سطح پر ، قطعہ بندی کا عمل دستیاب میموری کو قطعات میں تقسیم کرتا ہے۔ جب کسی میموری سیگمنٹ کو تحریری طور پر کسی غلطی کا سامنا کرنا پڑتا ہے ، تو یونکس یا لینکس آپریٹنگ سسٹم پروگرام میں ایک SIGSEGV سگنل بھیجتا ہے ، جو پھر "سیگمنٹٹیشن فالٹ" پیغام کے ساتھ کریش ہوجاتا ہے۔ طبقاتی خرابی عام طور پر سی جیسے نچلی سطح کی زبانوں میں خاص ہوتی ہے ، جس کے تحت پروگرامر کو ایک چلتے ہوئے پروگرام میں میموری مختص کرنے کی ضرورت ہوتی ہے ، جس میں ٹکڑے ٹکڑے ہوتے ہیں۔

طبقاتی غلطیوں کی اقسام

تفریق غلطی اسی طرح کے حالات سے پیدا ہوسکتی ہے۔ ایک بفر اوور فلو ، جیسے صف کی حد سے باہر تک پہنچنے کی کوشش کرنا سیگ فوٹ کا سبب بن سکتا ہے ، یا میموری تک رسائی حاصل کرنے کی کوشش کرسکتا ہے جو مختص نہیں کیا گیا یا حذف کردیا گیا ہے۔ میموری کو جو صرف پڑھنے کے ل write لکھنے کی کوشش کرنا بھی میموری غلطی کا سبب بن سکتا ہے۔ آخر میں ، کچھ یونکس اور لینکس سسٹم پر ، جن نکات کی ابتدا کی گئی ہے ، ان کو مسترد نہیں کیا جاسکتا ہے۔ ایسا کرنے سے سیگفالٹ واقع ہوگا۔

بطور صارف علیحدگی غلطیوں سے گریز کریں

اگر آپ کوئی ایسا پروگرام چلا رہے ہیں جس کو آپ نے انٹرنیٹ سے ڈاؤن لوڈ کیا ہے اور آپ کو منبع کوڈ سے واقف نہیں ہے تو ، آپ کی قسمت سے باہر ہوسکتا ہے: آپ جو کچھ کر سکتے ہیں وہ ایک بگ رپورٹ پیش کرنا ہے اور اس کی اصلاح کی امید ہے۔ صرف اس بات کا یقین کرنے کے ل، ، یہ یقینی بنائیں کہ آپ سافٹ ویئر کا جدید ترین ورژن چلارہے ہیں۔ اس کے علاوہ ، بگ رپورٹ سائٹ کو چیک کریں کہ آیا بگ کی اطلاع پہلے ہی دی گئی ہے ، اور اگر کوئی عارضی کام یا پیچ ڈاؤن لوڈ کرنے کے لئے دستیاب ہیں۔

پروگرامر کی حیثیت سے طبقاتی غلطیوں سے پرہیز کرنا

تحریری پروگراموں میں مکمل طور پر سیگفالٹس سے بچنے کا واحد طریقہ یہ ہے کہ میموری کے مختص اور حذف ہونے سے ہوشیار رہنا اور غلطیاں پائے جانے کے ساتھ ہی ان کا پتہ لگانا ہے۔ غلطی کا عین وسیلہ ڈھونڈنا مشکل ہوسکتا ہے ، خاص کر چونکہ جب بھی آپ پروگرام چلاتے ہیں ہر وقت یہ ظاہر نہیں ہوتا ہے۔ اس کے علاوہ ، اصل بگ کہیں بھی نہیں ہوسکتا ہے جہاں پروگرام کریش ہوتا ہے ، کیونکہ میموری میں خرابی صرف اس وقت کریش ہوسکتی ہے جب اس تک پہلا رسائی حاصل ہوجائے۔ ایک ڈیبگر سیگفالٹس کو پکڑ سکتا ہے جیسے ہی ہوتا ہے اور یہاں تک کہ ان کو لائن پر بھی ٹریک کرسکتا ہے۔


$config[zx-auto] not found$config[zx-overlay] not found