একবারে বাগ, কিন্তু উচ্চ অগ্রাধিকার


16

আমি একটি সিএনসি (কম্পিউটার সংখ্যার নিয়ন্ত্রণ) প্রকল্পে কাজ করছি যা লেজারের সাহায্যে ধাতব আকারগুলিকে কেটে দেয়।

এখন আমার সমস্যাটি একবারের মধ্যে (20 বিজড় দিনের মধ্যে 1-2 বার) কাটাটি ভুল হয়ে যায় বা সেট অনুসারে না হয়।

তবে এটি ক্ষতির কারণ তাই ক্লায়েন্ট এটি সম্পর্কে খুব খুশি নয়।

আমি এর কারণ খুঁজে বের করার চেষ্টা করেছি

  1. লগ ফাইল সহ
  2. ডিবাগ
  3. একই পরিবেশ পুনরাবৃত্তি।

কিন্তু এটি পুনরাবৃত্তি করবে না।

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

আমি কীভাবে এই সমস্যাটি মোকাবেলা করব? আমি কি এটি একটি হার্ডওয়্যার সমস্যা হিসাবে বর্ণনা করব?


15
হাইজেনব্যাগ * 8 ' এর দুর্দান্ত পৃথিবীতে আপনাকে স্বাগতম
মার্ক বুথ

আপনি যখন বলছেন যে এটি 20 দিনের মধ্যে 1 থেকে 2 বার ঘটেছিল, এর অর্থ কি এটি প্রকাশ পেতে প্রায় 20 দিন সময় লাগে বা কখনও কখনও 1 দিনের পরে দেখা যায়, কখনও কখনও 3 ... ইত্যাদি ...
ডঙ্ক

@ ডাঙ্ক এর নির্দিষ্ট কোনও সময় নেই, তবে এখনও পর্যন্ত এক সপ্তাহে দু'বার হাজির হয়নি।
শিরিশ 11

@ শিরীশ - আমি এমন একটি ঘড়ির ওভারফ্লো সমস্যার সঠিকভাবে পরিচালনা না করার দিকে ঝুঁকছিলাম যা আমি এমন সিস্টেমে কয়েকবার দেখেছি যার সমস্যাটি প্রতি এত দিন এবং আরও পরিদর্শন করার পরে দেখা যায় ঠিক ঠিক এতগুলি দিনে (বা এর একাধিক) ।
ডাঙ্ক

সিস্টেমটি বিরতি দেওয়া অবস্থায় কী ঘটছে? কোন স্মৃতি / কাউন্টার / হার্ডওয়্যার এখনও পরিবর্তন হয়? আপনি যখন চালিয়ে যান তখন কী? দেখে মনে হচ্ছে আপনি যখন এই অপারেশনগুলি করতে চান তখন যে কোনও পরিবর্তনই সমস্যাটির কারণের একটি সূত্র।
ডাব 19

উত্তর:


25

চারপাশে কাজ

হিসাবে ChrisF প্রস্তাব দেওয়া, রাষ্ট্রীয় স্বল্পমেয়াদী সমাধান ব্যবহার করা হতে পারে বিরতি এবং সারসংকলন কৌতুক, কিন্তু আপনি আপনার গ্রাহকদের সঙ্গে কথা বলতে কি আপনার অগ্রাধিকার হওয়া উচিত না। উদাহরণ স্বরূপ:

  • যদি ত্রুটিটি একটি £ 1000 অংশ ট্র্যাশ করে বা সপ্তাহে একবারে 4 ঘন্টা ডাউনটাইমের কারণ হয়, যখন বিরতি-পুনরুদ্ধার ফিক্সটি উত্পাদনকে 1% হ্রাস করে তবে তারা সম্ভবত এখনই ঠিক করতে পছন্দ করবে।

  • যদি দোষটি একটি part 1 অংশ ট্র্যাশ করে বা সপ্তাহে একবারে 4 মিনিট ডাউনটাইম সৃষ্টি করে তবে বিরতি-পুনরারম্ভের ফিক্সটি উত্পাদনকে 1% হ্রাস করে, তারা সম্ভবত এমন ফিক্সের জন্য অপেক্ষা করতে পছন্দ করবে যা উত্পাদন হারকে প্রভাবিত করে না।

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

লগিং

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

নিশ্চিত হয়ে নিন যে আপনি ব্যবহারকারীর ক্রিয়াগুলিও লগিং করছেন, আপনি কি নিশ্চিত যে অপারেটর জরুরী স্টপটিকে আঘাত করছে না তাই তারা যখন সিগ্রেট বিরতি স্থির করার সময় পপ আউট করতে পারে? আমি এটা ঘটতে দেখেছি!

স্থির বিশ্লেষণ

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

এমন নিদর্শনগুলি তৈরি করার চেষ্টা করুন যা সমস্যার আরও বেশি ঘন ঘন ট্রিগার করে । আপনি যদি সমস্যাটিকে নির্ভরযোগ্যভাবে ট্রিগার করার কোনও উপায় খুঁজে পেতে পারেন তবে আপনি কোনও সমাধানের অর্ধেক পথ।

অন্যান্য অপশন

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

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

আপনি হিজেনব্যাগ দিয়ে কী করেন তার প্রশ্ন এবং উত্তরগুলিও দেখতে চাইতে পারেন? এবং ত্রুটিযুক্ত না হওয়া বাগগুলির সাথে কী করবেন? তবে এটি আপনার পরিস্থিতির জন্য এতটা কার্যকর নাও হতে পারে।


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

6

আমি দেয়ালের বাইরে একটি পরামর্শ দিতে যাচ্ছি।

কারখানার পরিচালকের কাছে যান এবং সেই সময় বা ত্রুটিগুলি ঘটেছিল সেই সময়ের জন্য সেই সরঞ্জামটির জন্য বা সেই অঞ্চলের পাওয়ার লাইন মনিটরের রেকর্ডগুলি দেখতে বলুন। এছাড়াও তাকে জিজ্ঞাসা করুন those সময়ে প্রায় কোনও unusualালাই বা অন্য কোনও অস্বাভাবিক ক্রিয়াকলাপ ছিল কিনা।

বেশ কয়েক দশক আগে, আমার বাবা একটি মিনিক কম্পিউটারের সাথে একটি সময়ের নরক ছিলেন যা অকারণে বিনা কারণে ক্র্যাশ হচ্ছিল। তারা প্রস্তুতকারকের গ্রাহককে ডেকে পাঠায়।

প্রতিনিধি তাদের অফিসে, কারখানার অঞ্চলে এসে মিনিটির পাশে একটি ভোল্টমিটার প্রাচীরের সাথে লাগিয়ে দেয় এবং তারপরে বলেছিল "এটি দেখুন"।

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

সংবাদমাধ্যমটি বলেছিল "এটি আপনার সমস্যা। আপনি কারখানার ফ্লোরে একটি লোক ldালাই পেয়েছেন, এবং তিনি একই পাওয়ার লেগে আছেন are

তাদের অফিসে সম্পূর্ণ পৃথক পাওয়ার ফিড চালাতে হয়েছিল।


আমাকে
এটির

4

ব্যবহারকারীর জন্য প্রকৃত পরিণতি - সমস্যাটি হ'ল প্রকৃত সমস্যা যার অর্থ ক্ষতিগ্রস্থ কাজ ইত্যাদি তাই এটির সমাধানের প্রয়োজন। তবে এটি "সঠিকভাবে" ঠিক করতে হবে না। আপনি বলেছেন:

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

সেক্ষেত্রে কেবল এটি করুন। গ্রাহক খুশি হবেন যে সাধারণ রানগুলি কয়েক সেকেন্ড বেশি সময় নিলেও এমনকি তারা ত্রুটিযুক্ত রানগুলিতে উপাদান নষ্ট করছে না।

স্পষ্টতই দীর্ঘমেয়াদে আপনার এই "সঠিকভাবে" ঠিক করার দরকার হতে পারে তবে আপনার ক্ষতি হ্রাস করার জন্য, কর্মক্ষেত্রের সাথে যান এবং অন্য কোনও কিছুতে যেতে পারেন।


4

আমার একটি খেলায় একটি বাগ ছিল যা এক বিলিয়নে মাত্র 1 বার ঘটেছিল। ভাগ্যক্রমে এর অর্থ হ'ল আমি প্রতি 15 থেকে 30 মিনিটের মধ্যে এটি দেখছিলাম, কিন্তু ডিবাগারে কোডটি দিয়ে পদক্ষেপ নেওয়া কাজ করছে না। আমি ডিবাগ বার্তাগুলি রেখে শেষ করেছি। তাদের অভিনব if-বিবৃতি ব্যবহার করা প্রয়োজন কারণ যখন আমি কোনও সমস্যা ছিল তখনই আমি কিছু চাইতাম। বেশিরভাগ ক্ষেত্রেই ডিবাগিং কোডটি নিয়মিত কোডে গণনার পুনরাবৃত্তি করছিল কিন্তু বিভিন্ন কৌশল ব্যবহার করে। পুনরাবৃত্তিগুলি সুনির্দিষ্ট হতে হয়নি। যদি আমি জানতাম যে একটি সংখ্যা সর্বদা ১০,০০০ এর নীচে থাকা উচিত এবং এটি উপলক্ষে 150,000-এ আঘাত হ'ল, আমি কেবল ১০,০০,০০০ এরও বেশি মূল্য পরীক্ষা করব। প্রতিবার ত্রুটিটি আসার পরে, আমি আমার ফলাফলগুলি অধ্যয়ন করব, আরও বিস্তৃত ডিবাগিং বার্তাগুলি তৈরি করব (বা আরও স্পষ্টভাবে, আমার কোনও বার্তা প্রদর্শন করা উচিত কিনা তা দেখতে আরও বিস্তৃত চেকগুলি), এবং আবার সমস্যাটি দেখা দেওয়ার জন্য অপেক্ষা করব।

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

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


স্যানিটি পরীক্ষা করার জন্য +1 এবং লগিং বার্তাগুলির পুনরাবৃত্তিমূলক উন্নতি করতে সমস্যাটির মূলটি রূপান্তরিত করতে।
মার্ক বুথ

1

ডিবাগিংয়ে 1 নম্বর নিয়ম করুন: আপনার একটি পুনরুত্পাদনযোগ্য দৃশ্যের প্রয়োজন

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

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


20 মিনিটের প্রক্রিয়াটি কয়েক মিনিটের মধ্যে সিমুলেট করা সম্ভব নয়। আমাকে হার্ডওয়্যারটি বিবেচনা করতে হবে।
শিরিশ 11

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

@ শিরীশ: "কয়েক মিনিটের মধ্যে প্রক্রিয়াটি অনুকরণ করা" এটি একটি চরম হতে পারে, তবে বাগটি আসতে 20 দিন অপেক্ষা করা এবং বাগটি পপ আপ হতে দেওয়ার জন্য প্রচুর ধাতব কেটে দেওয়া সম্ভবত অন্য চরম। এর মধ্যে সম্ভবত কিছু আছে।
ডক ব্রাউন

2
@ শিরীশ-যদি আপনি হার্ডওয়্যারটি বিমূর্ত না করে থাকেন তবে এটি অনুকরণ করা সম্ভব হয়ে যায় তার অর্থ ডিজাইনের অভাব রয়েছে। এর অর্থ এটিও হ'ল আপনার সিস্টেমে পর্যাপ্তরূপে পরীক্ষা করা যায় না। সুতরাং, সিস্টেমটির যে সমস্যা রয়েছে তাতে অবাক হওয়ার কিছু নেই।
ডাঙ্ক

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

1

নিশ্চিত নন কি ভাষা এই চালানো হয়, কিন্তু যদি আমি আমার কোড (সি ++) এ লক্ষ্যভ্রষ্ট বাগ অনুভব, আমি মত একটি টুল ব্যবহার করা হবে Valgrind বা cppcheck নিশ্চিত করার কিছুই মেমরি জ্ঞানী যাচ্ছে।


0

রাল্ফ চ্যাপিনের উত্তরের একটি বর্ধন:

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

পাগলের মতো লগিংয়ের পাশাপাশি অন্য একটি জিনিসও আমি দরকারী বলে খুঁজে পেয়েছি: কোডটি কোথায় ছিল এবং কিছু প্রাসঙ্গিক ভেরিয়েবলের মান দেখাচ্ছে তা স্ক্রিনে তথ্য রেখে দেওয়া। সমস্যাটি যখন দেখা গেল এমনকি কারখানার মেঝেতে কর্মীরাও আমাকে তথ্যটি পড়তে পারত।

এটি একেবারে নিচে নেওয়ার জন্য এটি কয়েক দফা সংশোধন করেছিল তবে এটি কার্যকর ছিল।

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