আপনি যখন কোনও বাগ সমাধানের সমস্ত সুযোগ শেষ করে দিয়েছেন তখন কী করবেন


13

আমি একজন জুনিয়র প্রোগ্রামার (এখনও অবধি 4 মাসের ক্যারিয়ারের অভিজ্ঞতা) ক্রস প্ল্যাটফর্ম মোবাইল অ্যাপ্লিকেশন (1 ব্যক্তি দল - তাই এটি কেবল আমার) working

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

কিছু বিস্তৃত কৌশলগুলির জুনিয়র প্রোগ্রামারের জন্য আপনার কি কোনও পরামর্শ রয়েছে (দৌড়ের জন্য যান, আমার সমস্ত কোডটি কাগজে মুদ্রণ করুন এবং একটি কলম ইত্যাদি দিয়ে যান) আমি এই ত্রুটিটি আমাকে সহায়তা করতে ব্যবহার করতে পারি?

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

নির্দিষ্ট ক্রম:
মেনু স্ক্রিন প্রদর্শিত - "পূর্ব অর্ডার বোতাম দেখান" ক্লিক করুন
- পূর্ববর্তী অর্ডারগুলির স্ক্রিন প্রদর্শিত - "লোড ফাইল" ক্লিক করুন তারপরে মেনু বোতামটি ক্লিক করুন & ডেলিভারি স্ক্রিন খুলুন
- ডেলিভারি স্ক্রিন প্রদর্শিত হবে - মেনু বোতামটি ক্লিক করুন এবং ক্রয় স্ক্রিন খুলুন
- ক্রয় স্ক্রিন প্রদর্শিত হবে - এখানে ত্রুটি, এই স্ক্রিনে ইনপুট প্রদর্শিত হবে না / এতে প্রতিক্রিয়া দেখানো হবে না, তালিকাভিউগুলি স্ক্রোল করবে না, বোতামগুলি ক্লিকগুলিতে প্রতিক্রিয়া দেখাবে না, তালিকার ভিউগুলি ক্লিকগুলিতে প্রতিক্রিয়া জানাবে না


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

এছাড়াও আমি আমার কাজটি আলাদা করে দেখতে এবং বাগটি চিহ্নিত করতে পছন্দ করতে চাই, তবে আমি যেমন বলেছিলাম যে আমি ১ এর একটি দল, আমার মনিব আমাকে নির্দেশনা দেয়, তিনি সংস্থার মালিক এবং অ্যাপটির জন্য ধারণাগুলি রাখেন তবে সি ++ অথবা কোনও সাম্প্রতিক কোন ভাষাও জানেন না (কোবাল? আমার মনে হয় সমস্ত)। কীভাবে কোনও লঙ্ঘন / সংস্থাগুলির বৌদ্ধিক কোড / সম্পত্তি প্রদর্শন না করে দ্বিতীয় জোড়া চোখের পরামর্শ পাবেন?

... এবং এই প্রদত্ত ইন্টার্নশিপ না ছেড়ে দেওয়া কোনও বিকল্প নয়, চুক্তিটি বলে যে আমি যদি 12 মন্টি চুক্তির 6mnths এর আগে চলে যাই তবে আমি আমার বার্ষিক বেতনের 30% দিতে দায়বদ্ধ হতে পারি


6
এটি কি 100% প্রজননযোগ্য?

5
সহজ উত্তরটি হল আপনার সহকর্মীদের জড়িত করা । একটি দল হিসাবে আপনি মুহুর্তে এটি সমাধান করবে।
ফ্যাটি

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

আমি আপনার অ্যাকাউন্টগুলিকে একীভূত করেছি। আপনি সাইন ইন করতে আপনার ইয়াহু ওপেনআইডি ব্যবহার করতে পারেন you উত্তর হিসাবে পোস্ট করা তথ্য অন্তর্ভুক্ত করার জন্য আমি আপনার প্রশ্নটি সম্পাদনা করছি।
অ্যাডাম শিখুন

BTW। নীচে আমার উত্তর ছাড়াও, আমি উইকিপিডিয়ায় পড়েছি যে মোসাইক আর রক্ষণাবেক্ষণ করে না?
ব্র্যাড থমাস

উত্তর:


19

আপনি যদি সমস্যাটির 100% সময় পুনরুত্পাদন করতে পারেন তবে শেষ ধাপে ব্রেক পয়েন্ট নির্ধারণ করুন (যত তাড়াতাড়ি সম্ভব) আপনি যদি পুরো কল স্ট্যাকের মধ্য দিয়ে চলে যান তবে আমি নিশ্চিত যে আপনি কোথাও কিছু অপ্রত্যাশিত মূল্যবোধে পৌঁছে যাবেন, বা এমন কিছু যা ডাকা হবে কিন্তু তা নয়।

সম্পাদনা:

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


4
এবং যদি কোনও কারণে আপনি কোনও ডিবাগার ব্যবহার করতে না পারেন তবে কোড বিটের চারপাশে কিছু ট্রেসিং তথ্য রাখুন যা আপনি মনে করেন যে ব্যর্থ হয়েছে যে আপনার ফাংশনটিকে একটি পাঠ্য ফাইলে কল করে।

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

যদি আপনার সফ্টওয়্যারটির ত্রুটিটি চিহ্নিত করার জন্য ব্রেকপয়েন্টের প্রয়োজন হয় তবে আপনার মস্তিষ্কও এটির প্রয়োজন। এটি নিজেকে জোর করা এবং দূরে না চলে যাওয়ার চেয়ে বেশি সময় সাশ্রয় করে।
setzamora

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

10

ডিবাগিং সমস্যাটি ঠিক কী বিচ্ছিন্ন করা এবং বোঝার বিষয়ে রয়েছে (কোনও ফিক্স প্রয়োগের তুলনায়)

ডিবাগিংয়ের সময় সাবধানতা অবলম্বন করার একটি বিষয় হ'ল যদি আপনি দেখতে শুরু করেন যে আপনি বিভিন্ন তত্ত্বের পিছনে ঝাঁপিয়ে পড়ছেন কারণ প্রায়শই এটির বেশি বয়ে যায় এবং সম্ভাব্য সমস্যাগুলি নিয়মিতভাবে মুছে দেয় না।

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


5

এগুলি আমি অতীতে কিছু কাজ করেছি, স্পষ্টতই তারা সব পরিস্থিতিতে কাজ করবে না:

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

এটি কালো যাদু নয় জন্য +1!
গাই স্যারটন

আমাদের কোডে আজ আমরা যত জটিল নির্ভরশীলতা নিয়ে থাকি তা কালো যাদু। তবে আপনি এটি ভাল পেতে পারেন :)
সুব শঙ্করা সুব্রমনিয়ান

3

বাগগুলি সমাধান করার সময় আমার সাধারণত এই পদ্ধতি থাকে।

  1. বাগটি পুনরুত্পাদন করার জন্য ধাপে ধাপে একটি সুন্দর পদক্ষেপ তৈরি করুন
  2. ধাপে ধাপে সরল করুন
  3. কোডটিতে বাগটি কোথায় ঘটে? কি ফাংশন জড়িত মত?
  4. ত্রুটি দেখা দিলে কোড কোন পথটি চয়ন করে, কলচেইন।
  5. অবস্থানটি ফোকাস করুন, কখন তা ঠিক না থাকে। তারপরে ত্রুটিটি যেখানে ঘটেছিল ঠিক সেই জায়গাটি না পাওয়া পর্যন্ত এটি অনেক বার করুন।
  6. কেন এমন হয়?

এই মুহুর্তে এটি সাধারণত এক ধরণের স্পষ্ট যেহেতু সমস্যাটির দিকে মনোনিবেশ করার প্রক্রিয়াটিতে আমি এত কিছু শিখি তাই আমি কী করব তা জানি। অথবা আমার কাছে বেশ ফোকাসযুক্ত প্রশ্ন রয়েছে যা আমি ফোরামে জিজ্ঞাসা করতে পারি।

তারপরে আমি সমস্যাটি সমাধান করার চেষ্টা করছি এবং বাগটি ঠিক আছে কিনা তা যাচাই করতে আপনার ধাপে ধাপে ধাপে তৈরি করা হয়েছে use


3

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

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


আমি সম্মত, এটি প্রায়শই আমার পক্ষে কাজ করে।
মাইক ডুনলাভে

1

অন্যরা যেমন বলেছিল) 1) এটি নির্ভরযোগ্যভাবে পুনরুত্পাদন করতে সক্ষম হবেন, এবং 2) কোনও ডিবাগারের সামনে যেখানে পদক্ষেপ হয় সেখানে এগিয়ে যান।

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

  1. ডিবাগারগুলির আওতায় কোডের উভয় সংস্করণ পাশাপাশি চলুন। খারাপটি ভাল থেকে আলাদা কিছু না করা পর্যন্ত তাদের সাথে সরে দাঁড়ান।

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

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


1

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

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

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

তবে, যদি আপনি মাথা পরিষ্কার করে দেন, তবে উইকএন্ডের পরে ফিরে আসুন, আপনি কারও সাহায্য ছাড়াই এটি কোনও সময়েই সমাধান করতে সক্ষম হতে পারেন। এটা সব সময় এরকম ঘটে.


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

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

আমি '... নিজে নিজেই এগুলি পরিচালনা করতে সক্ষম' তা চিহ্নিত করতে চেয়েছিলাম, আমাকে বুঝিয়ে দিয়েছিল যে আপনি নিজেরাই ছিলেন। আপনার ইচ্ছা থেকে আমি এটি আরও শক্তিশালী ব্যাখ্যা করেছি তা জেনে খুশি।
mattnz

0

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

আপনি যদি এটি পুনঃস্থাপন করতে না পারেন তবে আপনার সমস্যা আছে, আপনি কীভাবে নিশ্চিত করেছেন যে আপনি এটি ঠিক করেছেন। ডিবাগ কোডটি রেখে সেখানে রেখে দিন। অবশেষে, নিজেকে জিজ্ঞাসা করুন, "ক্লোজড: ডিএনআর" একটি কার্যকর বিকল্প? (কি করতে / পুনরুদ্ধার করতে পারেনি)। ব্যবসায়, শেষ পর্যন্ত এটি একটি ব্যয় / বেনিফিট সিদ্ধান্ত।

আপনার গ্রন্থাগারগুলি সঠিক বলে ধরে নিবেন না, সেগুলি নিশ্চিত করুন।

বিরতি নিন, ব্যয়টি ঠিক করার দরকারের বিষয়ে বাস্তববাদী হোন এবং সর্বোপরি, অন্য কাউকে আপনার পাশে বসতে এবং সহায়তা করতে বলুন।


0

এখানে অনেক ভাল উত্তর। আরও কয়েকটি টিপস:

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

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

আপনি কোডটি পড়ার সময় - বাগের অসুবিধার কারণে আপনি যা করতে যথেষ্ট সময় ব্যয় করবেন - আপনার বাগটিকে অস্পষ্ট করতে পারে এমন কিছু খারাপ অভ্যাসের জন্য নজর রাখুন। বিশেষত, আপনি কি এর কোনও দেখতে পাচ্ছেন?

try {
    SaveTheWorld();
} catch (std::exception& ex) { /* oh it didn't work, let's just ignore it */ }

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

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

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


0

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

আপনার কোডটি কেন বাগের মধ্যে ঘটছে তা বোঝা আপনার প্রথম উদ্দেশ্য । প্রাথমিকভাবে এটি ঠিক করার চেষ্টা করবেন না। এটি বুঝতে চেষ্টা করুন । যদি আপনি এটি না বুঝে এটি ঠিক করার চেষ্টা করেন তবে আপনি হ্যাক করছেন এবং সম্ভবত সমাধান করার পরেও প্রযুক্তিগত debt ণ প্রবর্তন করবেন ।

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

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

আপনার উদ্দেশ্যগুলি (1) বুঝতে হবে - কারণটি নির্ধারণ করতে হবে এবং সে লক্ষ্যে, (2) অ্যাপ্লিকেশন আচরণের বিশদ বিশদটি পরীক্ষা করে দেখার চেষ্টা করুন (3) সমস্যাটিকে দূরে সরিয়ে আলাদা করে এবং তারপরে পরীক্ষা করা এবং ব-দ্বীপটি বুঝতে হবে আপনাকে এটি করতে সক্ষম করেছে

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

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