কীভাবে সর্বাধিক কার্যকরভাবে ডিবাগ কোড? [বন্ধ]


33

কোডগুলিতে ক্রিগিং বাগগুলি হ্রাস করা যায়, তবে এটি লেখা হিসাবে সম্পূর্ণরূপে মুছে ফেলা যায় না - প্রোগ্রামাররা হচ্ছেন, যদিও অনেকে একমত নন , কেবলমাত্র মানুষ।

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

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


সংযুক্ত প্রশ্নটি সরানো হয়েছে।

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

আমার মনে হয় রাইদ। অফ-শেল্ফ, বাগ হত্যা স্প্রে spray এটি কি দার্শনিক প্রশ্ন? নিছক
অগ্রগতি

উত্তর:


38

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

প্র্যাগমেটিক প্রোগ্রামার এবং কোড কমপ্লিটের মতো সফ্টওয়্যার বিকাশের ক্লাসিকগুলি মূলত একই পদ্ধতির পক্ষে যুক্তি দেয়: প্রতিটি ত্রুটি শেখার একটি সুযোগ, প্রায় সবসময় নিজের সম্পর্কে (কারণ কেবল নতুনরা প্রথমে কম্পাইলার / কম্পিউটারকে দোষ দেয়)।

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

একটি সর্বশেষ নোট - আমি ত্রুটিগুলি "ত্রুটি" বলতে চাই এবং "বাগগুলি" বলতে পছন্দ করি না - ডিজকস্ট্রা তার সহকর্মীদের উত্তরোত্তর শব্দটি ব্যবহার করার জন্য বিরক্তি প্রকাশ করেছিলেন কারণ এটি অসাধু, এই ধারণাটিকে সমর্থন করে যে ক্ষতিকারক এবং চঞ্চল বাগ-পরীরা আমাদের প্রোগ্রামগুলিতে বাগ লাগিয়েছিল আমরা যখন ছিলাম না '। আমাদের নিজের (opালু) চিন্তাভাবনার কারণে সেখানে থাকার পরিবর্তে তাকাচ্ছেন না: http://www.cs.utexas.edu/users/EWD/transferences/EWD10xx/EWD1036.html

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


7
আসলে আমি "বাগ" এর পরিবর্তে "ত্রুটি" শব্দটি পছন্দ করি, কারণ এটি "প্রোগ্রামার যিনি ত্রুটিটি করেছিলেন" এর জন্য দোষ চাপিয়ে দেয় তা নয়, কারণ এটি স্পষ্ট করে দেয় যে এটি ত্রুটির কারণে প্রোগ্রামার নাও হতে পারে । আমার কাছে, "বাগ" কোডটিতে ত্রুটি বোঝায়; যদিও "ত্রুটি" কোথাও ত্রুটি বোঝায় । হতে পারে কোডে, পরিবেশের সেটআপে, হয়ত প্রয়োজনীয়তায়। আমার বসের যখন "বাগ তালিকা" থাকে তখন আমাকে বাদাম চালায় যেখানে অর্ধেক সমস্যাগুলির প্রয়োজনীয়তা পরিবর্তন হয়। এটিকে কোনও টাস্ক লিস্ট বলুন, ফেরিক্রিসেকস!
কারসন 63000

2
"প্রতিটি ত্রুটিটি নিজের সম্পর্কে প্রায়শই শিখার জন্য শেখার একটি সুযোগ (কারণ শুধুমাত্র নতুনরা প্রথমে সংকলক / কম্পিউটারকে দোষ দেয়)"
মোঃ মাহবুবুর রহমান

আপনি "বাগ" শব্দটির ইতিহাস সম্পর্কে অবগত আছেন, তাই না? মানে, সফটওয়্যার বিকাশে যেমন ব্যবহার করা হয়। অবশ্যই, আমাদের আজ এই সমস্যাটি নেই, তবে একটি বাগ আসলে কম্পিউটারের নজরে না থাকা কোনও কম্পিউটারের হার্ডওয়্যারটিতে প্রবেশ করেছিল এবং সমস্যা তৈরি করেছে। যাতে কেউ আমাকে সংশোধন করতে না পারে, আমি জানি যে এডিসন শঙ্কিত ঘটনার অনেক আগে এই শব্দটি ব্যবহার করেছিলেন, এ কারণেই আমি 'ইতিহাস' শব্দটি ব্যবহার করেছি, 'উত্স' নয়। দেখুন computerworld.com/article/2515435/app-development/... এবং en.wikipedia.org/wiki/Software_bug#Etymology
threed

@ থ্রিজ অবশ্যই তবে বেশ কিছু সময়ের জন্য, পোকামাকড়গুলি বেশিরভাগ সফ্টওয়্যার ত্রুটি ঘটায় নি।
সীমিত করুন

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

  2. ডিবাগার কীভাবে ব্যবহার করবেন তা শিখুন। printবিবৃতি কিছু পর্যায়ে যুক্তিসঙ্গতভাবে ভাল কাজ করতে পারে, কিন্তু একটি ডিবাগার অধিকাংশ সময় হয় খুব সহায়ক (এবং একবার আপনি এটা কিভাবে ব্যবহার করতে, এটা তুলনায় অনেক বেশি আরামদায়ক printবিবৃতি)।

  3. আপনার সমস্যা সম্পর্কে কারও সম্পর্কে কথা বলুন, এমনকি এটি কেবল রাবারের হাঁসই । আপনি কথায় কথায় কাজ করছেন সেই সমস্যাটি প্রকাশ করতে নিজেকে জোর করা সত্যিই অলৌকিক কাজ করে।

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


2
"আপনি কথায় কথায় কাজ করছেন সেই সমস্যাটি প্রকাশ করতে নিজেকে জোর করা সত্যিই অলৌকিক কাজ করে" "
মোঃ মাহবুবুর রহমান

এবং (1) এ যুক্ত করার জন্য, আপনি কোডটিতে যে প্রায় প্রতিটি বাগ দেখেন তা বোঝায় যে পরীক্ষার স্যুটটিতে একটি বাগ - বা কমপক্ষে একটি বাদ দেওয়া রয়েছে। একই সাথে উভয়কেই ঠিক করুন এবং কেবলমাত্র আপনি প্রমাণ করেন না যে আপনি সমস্যাটি হাতের মুঠোয় স্থির করেছেন, আপনি এটির পুনঃপ্রবর্তন থেকে নিরাপদ।
জুলিয়া হেওয়ার্ড

3

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


3

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

(1) একজন প্রোগ্রামার কোডে একটি ত্রুটি তৈরি করে। (২) ত্রুটি সংক্রমণ ঘটায় (৩) সংক্রমণটি ছড়িয়ে পড়ে (৪) সংক্রমণটি ব্যর্থতার কারণ হয়।

আপনি যদি আপনার ডিবাগিং দক্ষতা উন্নত করতে চান তবে আমি এই বইটির জন্য অত্যন্ত সুপারিশ করছি।

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

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

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


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

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

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

3

ত্রুটি, ত্রুটি, সমস্যা, ত্রুটি - আপনি যা কল করতে চান তা এতে খুব বেশি পার্থক্য রাখে না। আমি যে সমস্যার সাথে অভ্যস্ত তাই আমি সমস্যার সাথে যুক্ত থাকব।

  1. সমস্যার উপলব্ধিটি কী তা বুঝুন: কোনও গ্রাহকের 'বব এখনও সিস্টেমে নেই' থেকে অনুবাদ করুন 'আমি যখন ববটির জন্য ব্যবহারকারীর রেকর্ড তৈরি করার চেষ্টা করি তখন এটি একটি সদৃশ কী ব্যতিক্রম নিয়ে ব্যর্থ হয়, যদিও বব ইতিমধ্যে নয় সেখানে'
  2. যদি এটি সত্যিই সমস্যা হয় বা কেবল কোনও ভুল বোঝাবুঝি হয় তা নির্ধারণ করুন (প্রকৃতপক্ষে, বব সেখানে নেই, বব নামে কেউ নেই, এবং সন্নিবেশটি কাজ করা উচিত)।
  3. সমস্যার পুনরুত্পাদন করতে আপনি ন্যূনতম নির্ভরযোগ্য পদক্ষেপগুলি অনুসরণ করতে চেষ্টা করুন - 'ইউজার রেকর্ড' ব্রুস 'সহ একটি সিস্টেম দেওয়া হয়েছে, যখন কোনও ব্যবহারকারী রেকর্ড' বব 'সন্নিবেশ করা হয়, তারপরে একটি ব্যতিক্রম ঘটে'
  4. এটি আপনার পরীক্ষা - যদি সম্ভব হয় তবে এটি একটি স্বয়ংক্রিয় পরীক্ষার জোড়ায় রাখুন যা আপনি বার বার চালাতে পারেন, ডিবাগ করার সময় এটি অমূল্য হবে। সেই নির্দিষ্ট সমস্যাটি পরে আর প্রকাশিত হবে না তা নিশ্চিত করতে আপনি এটিকে আপনার টেস্ট স্যুটের অংশও বানাতে পারেন।
  5. আপনার ডিবাগারটি বের করুন এবং ব্রেকপয়েন্টগুলি স্থাপন শুরু করুন - আপনি যখন পরীক্ষাটি চালাবেন তখন কোডের পথটি বের করুন এবং কী ভুল তা শনাক্ত করুন। এটি করার সময় আপনি নিজের পরীক্ষাটিকে যতটা সম্ভব সংকীর্ণ করেও পরিমার্জন করতে পারেন - আদর্শভাবে একটি ইউনিট পরীক্ষা।
  6. এটি ঠিক করুন - আপনার পরীক্ষার পাসগুলি যাচাই করুন।
  7. গ্রাহকের বর্ণিত হিসাবে আসল সমস্যাটি যাচাই করাও ঠিক করা হয়েছে (খুব গুরুত্বপূর্ণ - আপনি সম্ভবত সমস্যার একটি উপসেট স্থির করে রেখেছেন)। আপনি প্রোগ্রামের অন্যান্য দিকগুলিতে নিবন্ধগুলি প্রবর্তন করেননি তা যাচাই করুন।

আপনি যদি কোডটির সাথে খুব পরিচিত হন, বা যদি সমস্যা বা সমাধানের বিষয়টি স্পষ্ট হয় তবে আপনি সেই কয়েকটি পদক্ষেপ এড়িয়ে যেতে পারেন।

আমাদের মূল্যবান সময়কে সর্বাধিক কার্যকরভাবে ব্যবহার করার জন্য কীভাবে আমরা এর কাছে যেতে পারি এবং এটির সন্ধান করার জন্য কম সময় ব্যয় করতে এবং বেশি সময় কোডিং করতে সক্ষম করি?

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


এটি সেরা উত্তর আইএমও
মারকুশপ

3

আমি অন্যান্য উত্তরগুলির বেশিরভাগটি পছন্দ করি তবে আপনি যে কোনও একটি করার আগে এখানে কী করা উচিত সে সম্পর্কে এখানে কিছু টিপস। আপনাকে সময় সাশ্রয় দেবে au

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

  2. প্রত্যাশিত আচরণটি ভুল হওয়ার সম্ভাবনাটি বিবেচনা করুন। এটি প্রয়োজনের ভুল ব্যাখ্যা করার কারণে হতে পারে। এটি প্রয়োজনে নিজেই ত্রুটির কারণেও হতে পারে (বিশদ প্রয়োজন এবং ব্যবসায়ের প্রয়োজনের মধ্যে একটি ব-দ্বীপ)। আপনি এগুলিও আবার পাঠাতে পারেন।

  3. সমস্যাটি বিচ্ছিন্ন করুন। কেবল অভিজ্ঞতাই আপনাকে এটির দ্রুততম উপায় শিখিয়ে দেবে - কিছু লোক তাদের অন্ত্রে এটি প্রায় করতে পারেন। একটি মৌলিক পদ্ধতির মধ্যে হ'ল অন্যান্য জিনিসগুলিকে অবিচ্ছিন্ন রাখার সময় একটি জিনিস পরিবর্তিত করা (সমস্যাটি কি অন্য পরিবেশে ঘটে? অন্যান্য ব্রাউজারগুলির সাথে? একটি ভিন্ন পরীক্ষার অঞ্চলে? দিনের বিভিন্ন সময়ে?) আরেকটি পদ্ধতির মধ্যে স্ট্যাক ডাম্পগুলি দেখা বা ত্রুটি বার্তাগুলি - কখনও কখনও আপনি ঠিকঠাকভাবে বলতে পারেন যে সিস্টেমটির কোন উপাদানটি মূল ত্রুটি ছুঁড়ে ফেলেছে (উদাহরণস্বরূপ এটি যদি জার্মান হয় তবে আপনি যে তৃতীয় পক্ষের সাথে বার্লিনে কাজ করছেন তাতে দোষ দিতে পারেন)।

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

  5. সমস্যাটিকে বিচ্ছিন্ন করার কারণটি কেন এই সমালোচনামূলক তা হ'ল সমস্যাটি কোডের কোনও ত্রুটির কারণে না হতে পারে যা আপনার নিয়ন্ত্রণে রয়েছে (যেমন তৃতীয় পক্ষের সিস্টেমগুলি বা পরিবেশ) এবং আপনি সেই পক্ষটিকে যত তাড়াতাড়ি সম্ভব দায়িত্ব নিতে চান । এটি আপনার কাজকে বাঁচানোর জন্য এবং তত্ক্ষণাত পয়েন্টে আনার জন্য যাতে সমাধানটি যতটা সম্ভব সংক্ষিপ্ত সময়ের মধ্যেই অর্জন করা যায়। আপনি কোনও সমস্যার জন্য কেবল দশ দিনের জন্য কাজ করতে চান না এটি কেবল অন্য কারও ওয়েব পরিষেবাদির সাথে এটি সত্যিই একটি সমস্যা find

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

  7. যদি আপনি এটি উত্স নিয়ন্ত্রণ থেকে খুঁজে বের করতে না পারেন তবে এখন সময় আপনার ডিবাগারটি সংযুক্ত করার এবং কোডটি বের করার জন্য পদক্ষেপের সময়। সম্ভাবনা এখনই আপনার পক্ষে সমস্যাটি সম্পর্কে বেশ ভাল ধারণা রয়েছে।

বাগ আপনি কোথায় আছেন এবং কোনও সমাধানের কথা ভাবতে পারলে এটি ঠিক করার জন্য এখানে একটি ভাল পদ্ধতি রয়েছে:

  1. একটি ইউনিট পরীক্ষা লিখুন যা সমস্যাটি পুনরায় উত্পাদন করে এবং ব্যর্থ হয়।

  2. ইউনিট পরীক্ষাটি পরিবর্তন না করে এটিকে পাস করুন (অ্যাপ্লিকেশন কোডটি সংশোধন করে)।

  3. রিগ্রেশন রোধ / সনাক্ত করতে ইউনিট পরীক্ষাটি আপনার পরীক্ষার স্যুটটিতে রাখুন।


1

আমি এটি কীভাবে করব তা এখানে:

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

1

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

ধরে নিই যে আপনি একটি উত্পাদন পরিবেশে আছেন, এখানে আপনার যা করা দরকার তা এখানে:

  1. "ত্রুটি" সঠিকভাবে বর্ণনা করুন এবং ঘটনাগুলি ঘটানোর কারণগুলি সনাক্ত করুন।

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

  3. আপনি যদি প্রমাণ করেছেন যে কোনও ত্রুটির মধ্যে রয়েছে এবং কোডের কারণে ত্রুটি রয়েছে, তবে ত্রুটিটি রোধ করতে কোন কোড টুকরো ঠিক করা দরকার তা আপনি নির্ধারণ করতে পারেন। বর্তমান তথ্য এবং ভবিষ্যতের সিস্টেম অপারেশনগুলিতে আচরণের প্রভাব (কোড এবং ডেটার উপর প্রভাব বিশ্লেষণ )ও পরীক্ষা করুন।

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

  5. এই ত্রুটিটি যে কারণে দেখা দিয়েছে (প্রয়োজনীয়তা, কোডিং, পরীক্ষা ইত্যাদি) বিশ্লেষণ করুন। প্রক্রিয়াগুলি প্রয়োগ করুন যা শর্তটি আবার ঘটতে বাধা দেয়।

  6. পর্যাপ্তভাবে পর্বটি নথিভুক্ত করুন।

  7. সমাধানটি প্রকাশ করুন (বা নতুন সংস্করণ)

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