ডিবাগিং: নির্দিষ্ট কিছু ফিক্স কেন কাজ করেছে সে সম্পর্কে বিশদ বোঝার? [বন্ধ]


12

ডিবাগ করার সময়, আমি মাঝে মাঝে দেখতে পাই যে আমি কিছু পরিবর্তন করেছি এবং আমি 100% নিশ্চিত নই কেন এই পরিবর্তনগুলি প্রোগ্রামে কিছু বাগ সংশোধন করে। কিছু ত্রুটি কেন ঘটেছিল এবং কেন কিছু পরিবর্তন এই বাগগুলি সরিয়ে দিয়েছে সে সম্পর্কে প্রতিটি একক বিশদটি বোঝার জন্য কি প্রয়োজনীয়? বা ফিক্স কেন কাজ করেছে সে সম্পর্কে বিশদটি না জেনে মাঝে মাঝে প্রোগ্রামগুলি কাজ করা সাধারণ হয়ে পড়ে?


1
আপনি অন্য কাউকে কীভাবে বোঝাবেন যে আপনি বাগ ঠিক করতে পেরেছেন?

সম্পর্কিত: বাগ ফিক্সিং অ্যাপপ্রোচ "সাধারণত, আপনি বাগটি আসার প্রকৃত কারণটি অনুসন্ধান করার চেষ্টা করেন এবং তারপরে এটি সংশোধন করে sometimes ইন্টারনেট) শুধু যুক্তি, যা আমাকে অন্য বিকল্প তুলনায় অনেক কম সময় লাগে পরিবর্তন হয় ... "
মশা

উত্তর:


32

আমি বলব যে কিছু ত্রুটি কেন ঘটেছিল এবং কেন কিছু পরিবর্তনগুলি এই বাগগুলি সরিয়ে দেয় সে সম্পর্কে প্রতিটি একক বিবরণ বোঝা জরুরি এবং বিকাশকারীদের মাঝেও ঠিক আছে যে ফিক্সটি কেন কাজ করেছে সে সম্পর্কে বিশদটি না জেনে মাঝে মাঝে প্রোগ্রামটি কাজ করাও সাধারণ!

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

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

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


15

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

আপনি যদি নিশ্চিত হন যে আপনি এটি স্থির করে দিয়েছেন, তবে কেন স্থির করে তা স্থির করে না জানেন তবে কাউকে জিজ্ঞাসা করুন। আমি জানি বেশিরভাগ প্রকৌশলী এর পেছনের রহস্যের কারণে এরকম প্রশ্ন পেতে ভালোবাসেন


আমি সম্মত হই যে আপনার অবশ্যই নিশ্চিতভাবে এটি "স্থির" হিসাবে দাবি করা উচিত নয় যদি আপনি নিশ্চিত না হন যে এটি সবেমাত্র স্থানান্তরিত বা গোপন করা হয়নি। তবুও, এটি স্বীকৃতি দেওয়া খুব ভয়ঙ্কর হবে না যে আপনি "সম্পর্কিত কোডে সমস্যার ক্ষেত্রটি স্থির করেছেন" এবং এখন "বাগটি পুনরুত্পাদন করতে অক্ষম" - অতীতে আমার দলগুলি এগুলিকে "ভি <সংস্করণ সংখ্যায় সিএনআর হিসাবে লগইন করেছে acknow > "
পিটারএল

6

বাগটি না হওয়া পর্যন্ত স্টাফ পরিবর্তন করা সাধারণত খারাপ অভ্যাস হয় না, তবে দুর্ভাগ্যক্রমে কিছু লোকের কাছে একটি বাস্তবতা।

আমি দৃ strong় মতামত যে আপনি কখনও কোড লিখবেন না যে আপনি বুঝতে পারবেন না এটি কী করে বা এটি এটি কেন করে। আপনি কীভাবে নিশ্চিত হতে পারেন যে আপনি যে বাগটি ঠিক করার জন্য নির্ধারিত করেছেন তা স্থির করে ফেলেছে - আপনি অন্য কিছু ভাঙ্গেন নি?

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

আমি একটি সমস্যা সমাধানের জন্য লোকেরা বেশ কয়েকটি কোড পরিবর্তন দেখেছি (যা দুর্দান্ত) তবে এটি দুর্ভাগ্যক্রমে অন্যান্য সমস্যাগুলি প্রবর্তন করেছে কারণ বিকাশকারীরা কী পরিবর্তন করেছেন তার সম্পূর্ণ প্রভাব সম্পর্কে অবগত ছিল না। এর মধ্যে অনেকগুলি "সংশোধন" জটিল সমস্যা এবং আরও বেশি বাগ প্রবর্তনের পাশাপাশি মূল সমস্যার মূল কারণটিকে অস্পষ্ট করে।

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


4

বা ফিক্স কেন কাজ করেছে সে সম্পর্কে বিশদটি না জেনে মাঝে মাঝে প্রোগ্রামগুলি কাজ করা সাধারণ হয়ে পড়ে?

এর সাথে কমপক্ষে তিনটি বড় সমস্যা রয়েছে:

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

  2. আপনি জানতে পারবেন না যে বাগটি আসলে আপনার পরিবর্তন দ্বারা স্থির হয়েছে বা কেবল মুখোশযুক্ত) যদি না আপনি বুঝতে চান) সমস্যাটি কী ছিল, এবং খ) আপনার পরিবর্তন কীভাবে সমস্যার সমাধান করে।

  3. বাগটি সম্ভবত স্থির নয় এবং অদূর ভবিষ্যতে এটি আপনাকে আবার কামড়াতে চলেছে।


2

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

অন্যটি হ'ল আপনি এই বাগটিতে কাজ করছেন এবং এলোমেলো পরিবর্তনগুলি জিনিসগুলি কাজ করে, এটি অগ্রহণযোগ্য। যদি আপনার কোনও ধারণা না থাকে যে পুরানো কোডটি কী ভুল করছে, আপনার সম্ভবত কোনও ধারণা নেই যে নতুন কোডটি কী ভুল করছে।

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


0

বা ফিক্স কেন কাজ করেছে সে সম্পর্কে বিশদটি না জেনে মাঝে মাঝে প্রোগ্রামগুলি কাজ করা সাধারণ হয়ে পড়ে?

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

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