ডিবাগিংয়ের জন্য ব্রেকপয়েন্টগুলি কীভাবে ব্যবহার করবেন


9

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

উত্তর:


9

মাজেঙ্কোর উত্তরে উল্লিখিত হিসাবে, আরডুইনো আইডিই কোনও ব্রেকপয়েন্ট মেকানিজম সরবরাহ করে না তবে আটমেল স্টুডিও ব্রেকপয়েন্টগুলিকে সমর্থন করে [[*]

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

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


4

যদিও মাজেঙ্কো তার উত্তরটি সঠিক, সেখানে আরও কিছু বিকল্প রয়েছে।

আসল হার্ডওয়্যার ডিবাগিং হিসাবে মাজেঙ্কো বলেছে আমি বলতে চাই:

  1. সত্যিকারের আইডিই ইনস্টল করুন এবং ব্যবহার করুন, যেমন অটমেল স্টুডিও বা স্লোবার (আমি লেখক) নামক আরডুইনো ইক্লিপস প্লাগইন এবং
  2. আরডিও শূন্যের মতো বোর্ডে থাকা একটি সম্পূর্ণ হার্ডওয়্যার ডিবাগার বা হার্ডওয়্যার ব্যবহার করুন বা ESP8266 এর মতো অন্যান্য ডিবাগিং প্রযুক্তি ব্যবহার করে হার্ডওয়্যার যা ইউএসবি ডিবাগিংয়ের অনুমতি দেয়

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

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

মনে রাখবেন যে আপনার স্থানীয় মেশিনটি সম্ভবত একটি 32 বা 64 তিক্ত এবং বেশিরভাগ আরডুইনো 8 টি বিটার যা এই পদ্ধতিটি ব্যবহার করার সময় ডেটা ধরণের পার্থক্যের ফলস্বরূপ যা অতিরিক্ত মনোযোগ পয়েন্ট।


4

যাও Arduino-ডিবাগ গ্রন্থাগার যাও Arduino স্কেচ জন্য একটি সহজ অন লক্ষ্য ডিবাগার প্রদান করে। ডিবাগ কমান্ড সরাসরি স্কেচে যুক্ত করা হয়। ব্রেক-পয়েন্ট এবং জরুরী ভিত্তিতে একটি ডিবাগার কমান্ড শেল শুরু হয়।

এখানে চিত্র বর্ণনা লিখুন

উপরের স্ক্রিনশটটিতে অ্যাপ্লিকেশন দ্বারা ব্যবহৃত সিরিয়াল আউটপুট মনিটর এবং ডিবাগার শেলের জন্য ব্যবহৃত সিরিয়াল 1 সহ একটি আরডুইনো মেগায় চালিত উদাহরণস্বরূপ স্কেচ দেখায় ।

স্কেচ ডিবাগ কমান্ড

  • অ্যাসার্ট (কনড) শর্ত শর্ত পরীক্ষা করুন। মিথ্যা হলে ডিবাগ শেল বলা হয়। স্কেচ চলতে পারে না।
  • BREAKPOINT () ডিবাগ শেল বলা হয়।
  • BREAK_IF (কনড) শর্তটি সত্য হলে ডিবাগ শেলকে ডাকা হয়।
  • চেকপ্যাক (রুম) চেক করুন যে স্ট্যাকের মধ্যে রুম (বাইট) রয়েছে। মিথ্যা হলে ডিবাগ শেল বলা হয়।
  • DEBUG_STREAM (দেব) ডিবাগ সেশনের জন্য প্রদত্ত স্ট্রিম ডিভাইসটি ব্যবহার করুন। সাধারণত সিরিয়াল
  • অবসর (এক্সপ্রেস) ডিবাগ প্রবাহে এক্সপ্রেশন মুদ্রণ করুন।
  • OBSERVE_IF (কনড, এক্সপ্রেস) শর্তটি সত্য হলে ডিবাগ প্রবাহে এক্সপ্রেশনটি মুদ্রণ করুন।
  • নিবন্ধক (var) ডিবাগ শেল থেকে অ্যাক্সেসের জন্য একটি ভেরিয়েবল নিবন্ধন করুন। ডিবাগ শেল কমান্ড

ডিবাগ শেল কমান্ড

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

সমস্ত ডিবাগ শেল কমান্ড একক অক্ষর কমান্ড সংক্ষিপ্ত করা যেতে পারে। আরও বিশদের জন্য দয়া করে README দেখুন; ইনস্টলেশন বিশদ, উদাহরণস্বরূপ স্কেচ এবং বেঞ্চমার্কিং।


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

1
.... কন: সময়-সমালোচনামূলক কোড পরীক্ষা করা যদি প্রোগ্রামের কোড-স্পেস, কিছু র‌্যাম স্পেস এবং সম্ভবত রান-টাইমের উপর উচ্চতর প্রভাব; পাঠাগার কলগুলিতে (এবং পরে মুছে ফেলা) সংকলনের জন্য কিছু শিক্ষণীয় বক্ররেখা; ব্রেক-পয়েন্টের অবস্থানগুলি প্রত্যাশা করা বা যখন আপনি কোথায় আবিষ্কার করবেন সেগুলি আবিষ্কার করার পরে সেগুলি পুনরায় সংকলন করার প্রয়োজন। কনস মিকেলের কাজের সমালোচনা নয়; তারা এই কৌশল নিয়ে আসে।
জোরবার্ট

1
@ জে রবার্ট চমৎকার প্রো-কন সংক্ষিপ্তসার! আমি ডিবাগারটি উপযুক্তভাবে তৈরি করার অনুমতি দিয়ে কয়েকটি কনসকে সম্বোধন করার চেষ্টা করেছি। সংজ্ঞায়নের একটি সেট রয়েছে যা পায়ের ছাপ সংবেদনশীল অ্যাপ্লিকেশনগুলিকে ডিবাগ শেলকে সর্বনিম্ন হ্রাস করতে দেয়। এম্বেড থাকা সিস্টেমগুলির জন্য কোনও ডিবাগার হিসাবে ব্রেক-পয়েন্ট সহ সময় সমালোচনামূলক (অবিচ্ছিন্ন) কোডটি ডিবাগ করা কঠিন is একমাত্র বিকল্প পর্যবেক্ষণ পয়েন্ট। এগুলি একটি ট্রেস বাফার ব্যবহার করে এবং সময় সমালোচনামূলক কোডে সিরিয়াল আউটপুট সরানোর মাধ্যমে অনুকূলিত করা যেতে পারে।
মিকেল প্যাটেল 15

3

আরডুইনো আইডিই-তে নেই।

তোমার দরকার:

  1. আটল স্টুডিও এবং এর মতো একটি আসল আইডিই ইনস্টল এবং ব্যবহার করুন and
  2. একটি সম্পূর্ণ হার্ডওয়্যার ডিবাগার ব্যবহার করুন

বুটলোডারটি ব্যবহার করে ইউআআআআটি / ইউএসবি ইন্টারফেসের মাধ্যমে ডিবাগ করার কোনও ব্যবস্থা নেই।

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