লিনাক্সে সেগমেন্টেশন ফল্ট কী?

একটি সেগমেন্টেশন ত্রুটি, বা সেগফোল্ট, একটি মেমরি ত্রুটি যা একটি প্রোগ্রাম একটি মেমরি ঠিকানার অ্যাক্সেস করার চেষ্টা করে যা বিদ্যমান নেই বা প্রোগ্রামটির অ্যাক্সেসের অধিকার নেই। এটি খারাপভাবে লেখা সি এবং সি ++ প্রোগ্রামগুলিতে একটি সাধারণ বাগ bu যখন কোনও প্রোগ্রাম কোনও সেগমেন্টেশন ত্রুটিটিকে আঘাত করে, তখন এটি প্রায়শই ত্রুটি বাক্যটি "বিভাগকরণ ফল্ট" দিয়ে ক্র্যাশ হয়।

বিভাগ বিভাগীয় ফল্ট বুনিয়াদি

অপারেটিং সিস্টেমের স্তরে, বিভাগকরণের প্রক্রিয়া উপলব্ধ মেমরিটিকে বিভাগগুলিতে বিভক্ত করে। কোনও মেমরি বিভাগে লেখার ক্ষেত্রে কোনও ত্রুটির মুখোমুখি হওয়ার সময়, ইউনিক্স বা লিনাক্স অপারেটিং সিস্টেম প্রোগ্রামটিতে একটি SIGSEGV সিগন্যাল প্রেরণ করে, যা পরে "বিভাগকরণ ত্রুটি" বার্তাটি দিয়ে ক্র্যাশ হয়ে যায়। বিভাগের ত্রুটিগুলি সাধারণত সি হিসাবে নিম্ন স্তরের ভাষাগুলিতে বিশেষ হয়, যার জন্য প্রোগ্রামারকে একটি চলমান প্রোগ্রামের জন্য মেমরি বরাদ্দ করতে হয়, খণ্ড অনুসারে খণ্ড।

বিভাজন ত্রুটি প্রকার

বিভাজন ত্রুটি একই অবস্থা থেকে উত্থাপিত হতে পারে। একটি বাফার ওভারফ্লো যেমন অ্যারের সীমানার বাইরে পৌঁছানোর চেষ্টা করা সেগফ্ল্টের কারণ হতে পারে বা মেমরি অ্যাক্সেস করার চেষ্টা করতে পারে যা বরাদ্দ হয়নি বা মুছে ফেলা হয়েছে। কেবল পঠনযোগ্য মেমরিটিতে লেখার চেষ্টা করার ফলে মেমরির ত্রুটি হতে পারে। পরিশেষে, কিছু ইউনিক্স এবং লিনাক্স সিস্টেমে পয়েন্টারগুলি শূন্যে শুরু করা হয়; এটি করার ফলে সেগফল্ট ঘটতে পারে।

ব্যবহারকারী হিসাবে বিভাগকরণ ত্রুটিগুলি এড়ানো

আপনি যদি এমন কোনও প্রোগ্রাম চালাচ্ছেন যা আপনি ইন্টারনেট থেকে ডাউনলোড করেছেন এবং উত্স কোডের সাথে পরিচিত না হন তবে আপনার ভাগ্য খারাপ হতে পারে: আপনি যা করতে পারেন তা কেবল একটি বাগ রিপোর্ট জমা দেওয়া এবং সমাধানের জন্য আশা করা hope নিশ্চিত হওয়া নিশ্চিত, আপনি সফ্টওয়্যারটির সর্বাধিক আধুনিক সংস্করণটি চালাচ্ছেন তা নিশ্চিত করুন। তদ্ব্যতীত, বাগটি ইতিমধ্যে প্রতিবেদন করা হয়েছে কিনা তা পরীক্ষা করতে এবং কোনও অস্থায়ী কর্মক্ষেত্র বা প্যাচগুলি ডাউনলোডের জন্য উপলব্ধ কিনা তা পরীক্ষা করে দেখুন।

প্রোগ্রামার হিসাবে বিভাগকরণ ত্রুটিগুলি এড়ানো

লিখিত প্রোগ্রামগুলিতে সম্পূর্ণরূপে সেগফাল্টগুলি এড়ানোর একমাত্র উপায় হ'ল মেমরির বরাদ্দ এবং মুছে ফেলার বিষয়ে সতর্কতা অবলম্বন করা এবং ত্রুটিগুলি হওয়ার সাথে সাথে তাদের ট্র্যাক করে রাখা। ত্রুটির সঠিক উত্স অনুসন্ধান করা জটিল হতে পারে, বিশেষত যেহেতু আপনি প্রোগ্রামটি চালানোর সময় এটি প্রদর্শিত নাও হতে পারে। এছাড়াও, প্রোগ্রামটি যেখানে ক্র্যাশ হয় সেখানে প্রকৃত বাগটি কোথাও নাও থাকতে পারে, কারণ ত্রুটিযুক্ত মেমরির বরাদ্দ কেবল প্রোগ্রামটি অ্যাক্সেস করার পরে কেবল ক্র্যাশ করতে পারে। একটি ডিবাগার সেগফাল্টগুলি ঘটতে পারে এবং এমনকি লাইনে তাদের ট্র্যাক করতে পারে।