সুরক্ষিত মেমরির আগে তারা কীভাবে বিভাজন ত্রুটিগুলি ডিবাগ করেছিল?


20

এখন, আমি যখন সি-তে পয়েন্টারগুলির সাহায্যে প্রোগ্রামিং ভুল করি, তখন আমি একটি দুর্দান্ত সেগমেন্টেশন ত্রুটি পাই, আমার প্রোগ্রাম ক্র্যাশ হয়ে গেছে এবং ডিবাগারটি আমাকে বলতে পারে যে এটি কোথায় ভুল হয়েছে।

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


4
হ্যাঁ, এভাবেই চলল। একটি এলোমেলো কম্পিউটার পুনরায় বুট হয়েছিল এবং প্রায়শই ঘটে। স্মৃতি সুরক্ষা একটি দুর্দান্ত জিনিস :)
রকলান

7
আপনি যখন মেমরি সুরক্ষিত করবেন না, সেগমেন্টেশন ত্রুটি বলে কিছুই নেই। অবশ্যই, আপনি মেমরি সুরক্ষিত থাকলেও, আপনি এখনও নিজের স্থানটি ক্লোবার করতে পারেন; ওএস কেবল এটি সম্পর্কে চিন্তা করে না।
blrfl

3
এখনও এখন অনেক পয়েন্টার ভুল একটি সুন্দর segfault কারণ না।
কোডসইনচাউস

1
ডসের সময়, সুরক্ষিত মেমরিটি অন্যান্য ওএসে ইতিমধ্যে বিদ্যমান ছিল।
mouviciel

উত্তর:


36

আমি কোনও ডস প্রোগ্রামার দূরে সরে যেতে দেখি এবং যখন সে ভুল করে তখন পুরো ওএসটি ক্র্যাশ করে।

হ্যাঁ, যা ঘটেছিল তা অনেকটাই। বেশিরভাগ সিস্টেমে মেমোরি মানচিত্র ছিল, অবস্থান 0 টি অবৈধ চিহ্নিত করা হয়েছিল, যাতে নাল পয়েন্টারগুলি সহজেই সনাক্ত করা যায়, কারণ এটি ছিল সবচেয়ে সাধারণ ঘটনা। তবে অন্যান্য প্রচুর মামলা ছিল এবং সেগুলি ধ্বংসাত্মক ঘটনা ঘটেছে।

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


3
আসলে, আমি আশা করছিলাম "পুরানো গিজার" আমার প্রশ্নের উত্তর দেবে। কিছুই প্রথম হাতের অভিজ্ঞতা বীট। ধন্যবাদ।
বার্ট ফ্রেডারিখস

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

@ সলটার্স প্রকৃতপক্ষে! আমার প্রথম কাজে, আমরা রবিবার থেকে 0700 থেকে 1900 পর্যন্ত স্লটও বুক করতে পারি - লেমমে আপনাকে বলে :-)
রস প্যাটারসন

2
আমার মনে আছে বিশ্ববিদ্যালয় থেকে বাড়ি ভ্রমণে আমার প্রথম প্রোগ্রামটি কাগজে লেখা ছিল । পরের দিন যখন আমি এটিকে ঘুষি
মেরে

1
@ জনডোগেন, আমার জন্য একই যখন আপনার কেবল একটি চেষ্টা থাকে আপনি সেই চেষ্টাটিকে সত্যিই গণনা করতে পারেন।
স্পষ্টভাবে

23

আমার দিনে ফিরে, আমাদের মেমরির সুরক্ষা এবং সেই সমস্ত স্ন্যাজ ব্যবসা ছিল না! আমরা প্রোগ্রামে কোথায় ছিল তা নির্ধারণ করতে আমরা প্রিন্টফ ব্যবহার করেছি এবং আমরা এটি পছন্দ করেছি !

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

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

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


2
মলোকদের মুক্ত করুন!
ক্রিস

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

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

6

আমরা হব ..

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

  • লগিং আপনার সমস্যা যেখানে রয়েছে তা খুঁজে পেতে সহায়তা করে। বাইনারি অনুসন্ধান মুদ্রণ এটি এর একটি ফর্ম।
  • ডিবাগিং, ধাপে ধাপে, ব্রেক পয়েন্ট এবং ঘড়িগুলি
  • আরও ভাল বোঝার জন্য রিফ্যাক্টরিং
  • কোড এ হার্ড স্টারিং
  • স্মৃতি / কোর ডাম্প তাকান
  • এটি বিভিন্ন ডেটা দিয়ে খাওয়ান
  • এটি অন্য লোকেদের দেখানো হচ্ছে
  • পয়েন্টার ছাড়াই কোনও ভাষাতে স্যুইচ করুন (এবং সমস্যার নতুন সেট) ...

আরও বিমূর্ত স্তরটিতে আপনার কাছে তিনটি পন্থা রয়েছে: ১. কোডটি নিয়ে কাজ করুন ২. প্রোগ্রামটি চলাকালীন দেখুন 3.. ফলাফলটি বোকা কিছু করার পরে দেখুন look

বিটিডব্লিউ পয়েন্টার ত্রুটির জন্য সেগফল্ট তৈরি করতে হবে না।

অ্যামিগা প্রোগ্রামার হিসাবে আমি এর সব কিছু ব্যবহার করেছি। এবং হ্যাঁ পুনরায় আরম্ভ হয় যেখানে সাধারণ অনুশীলন।


4

ফোর্টরান ব্যাচের কাজ চালিয়ে আইবিএম 360-তে, আমরা হেক্স কোর ডাম্প পেয়ে যেতাম। এই জাতীয় ডাম্প ফ্যান-ভাঁজ সবুজ এবং সাদা প্রিন্টার কাগজের এক ইঞ্চি পুরু হতে পারে। এটি নিবন্ধগুলি কী তা বলত এবং সেখান থেকে আমরা ব্যাকট্র্যাক করতে পারি এবং প্রোগ্রামটি কী করছে তা নির্ধারণ করতে পারি। আমরা প্রতিটি সাবরোটাইন খুঁজে পেতে এবং এটির ফিরে আসার ঠিকানাটি কোথায় সঞ্চিত করে তা নির্ধারণ করতে পারি, যাতে আমরা প্রসঙ্গটি দেখতে পারি। এটি প্রোগ্রামটির একটি এসেমব্লার তালিকা রাখতে সহায়তা করবে।


2

একবার আমি তখনকার বিখ্যাত উইন্ডোজ 3.1 উপস্থাপনা সফ্টওয়্যারটিতে বাগফিক্সিংয়ের কাজ করছিলাম।

আমার একটি বাগ ছিল যা এটি যখন ঘটেছিল তখন ব্লু স্ক্রিন অফ ডেথের কারণ হয়।

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

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

ডিবাগিং দক্ষতা এবং অধ্যবসায় সমাধান ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.