খুব অল্প তথ্যের সাথে ডিবাগিংয়ের টিপস? [বন্ধ]


11

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

এই সব আমি বেশিরভাগ সময়ই কোনও সমস্যা নেই deal

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

মূলত, এটি এটিকে ফোটায়:

  • বড় এবং জটিল কোড বেস আমি এর সাথে 100% পরিচিত নই
  • অনেকগুলি উপায় ভুল হতে পারে
  • কীভাবে ত্রুটি আসলো সে সম্পর্কে খুব অল্প তথ্য

এই ধরণের জিনিসটি ডিবাগ করার জন্য কারও কাছে কোনও টিপস, কৌশল, পরামর্শ ইত্যাদি রয়েছে?


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

পরিপূরক হিসাবে, [রেমন্ড চেনের ব্লগে "সাইকিক ডিবাগিং" পোস্টগুলি পড়ুন] ( goo.gl/2KIH )!
উইজার্ড 79

কোড বেস কত বড়? দশ কেএলকি বা 50 এমএলকি?
বেসাইল স্টারিঙ্কেভিচ

উত্তর:


11

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

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

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


2
+1 যথাযথ পরামর্শ, এবং আমি এটিকে প্রসারিত করব: তারা কি বাগটি নির্ভরযোগ্যভাবে ঘটতে পারে, বা এটি বিরতিহীন? যদি এটি নির্ভরযোগ্যভাবে ঘটছে তবে তারা কি সেখানে যাওয়ার জন্য যে পদক্ষেপ নিয়েছে সেগুলি দিয়ে কি আপনাকে চলতে পারে?
ব্লেয়ারহিপ্পো

1
লগ ফাইলগুলিতে দেখে কিছুটা সহায়তা করতে পারে।
pramodc84

11

একটি ভাল শুরু এই বই হতে পারে ।

বিকল্প পাঠ

আমি নীচের সংজ্ঞাটি ব্যবহার করছি কারণ মনে হচ্ছে বিকাশকারী এটি আর সমর্থন করে না।

লিগ্যাসি কোড উত্স কোড যা কোনও আর সমর্থিত নয় to


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

3
@ স্লোকুন - বইটিতে "লিগ্যাসি কোড" এর সংজ্ঞা পুরোপুরি এর theতিহ্যবাহী সংজ্ঞা মতো নয়। এটি একটি খুব ভাল বই।
অস্টিন সালোনেন

4

কয়েক বছর আগেও আমার একইরকম সমস্যা হয়েছিল এবং উত্পাদনশীলতা এবং কোড ক্লিন-আপের সবচেয়ে বড় উত্সাহ ছিল সিস্টেমে বাগ ট্র্যাকিংকে একীকরণ করা।

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

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


একটি বৃহত প্রাক-বিদ্যমান কোড বেসের জন্য, ভাল লগিং যুক্ত করা অনেক কাজের একটি হেল হতে চলেছে। +1 কারণ বাগগুলি যদি মাঝে মাঝে থাকে তবে এটি কেবলমাত্র কার্যকর বিকল্প হিসাবে প্রমাণিত হতে পারে।
ব্লেয়ারহিপ্পো

@ ব্লেয়ার হিপ্পো: আমার অভিজ্ঞতা থেকে এটি হয়েছে তবে তিনি বর্ণনা করছেন এমন একটি কোডবেসের সাথে আপনি যে মূল্য প্রদান করেন তা। এ জাতীয় কোডবেসে কাজ করার মতো কাজটি প্রায় ততটাই দু: খজনক ...
অস্টিন সালোনেন

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

1

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

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


0

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

একবার আপনি যদি ওয়ার্কিং ইউনিট পরীক্ষার একটি শালীন সেট তৈরি করেন, কোড ক্লিনারটি তৈরি করার জন্য আপনার কিছু রিফ্যাক্টরিং করার জন্য একটি সুরক্ষা জাল রয়েছে।

আপনি কোড বেস বুঝতে না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

বলা বাহুল্য, এটি আপনার বাগের প্রতিবেদনের প্রতিক্রিয়া হিসাবে নয়, সময়ের আগে করা উচিত।

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