আইডিইতে ডিবাগিং কেন আরও ভাল? [বন্ধ]


145

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

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

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

আমি কী মিস করছি? আইডিই ডিবাগিং সরঞ্জামগুলি ডায়াগনস্টিক printস্টেটমেন্টের চিন্তাশীল ব্যবহারের চেয়ে এত বেশি কার্যকর করে তোলে কী ?

আপনি কি এমন সংস্থানগুলি (টিউটোরিয়াল, বই, স্ক্রিনকাস্ট) পরামর্শ দিতে পারেন যা আইডিই ডিবাগিংয়ের সূক্ষ্ম কৌশলগুলি দেখায়?


মিষ্টি উত্তর! সময় দেওয়ার জন্য সবাইকে অনেক ধন্যবাদ। খুব আলোকিত। আমি অনেককে ভোট দিয়েছি, এবং কাউকে ভোট দিয়েছি না।

কয়েকটি উল্লেখযোগ্য বিষয়:

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

14
আমি মনে করি আপনি মিথ্যাভাবে ধরে নিচ্ছেন যে কোনও ডিবাগার ব্যবহারের জন্য কোনও আইডিই প্রয়োজন? ডিবাগারটি একটি অমূল্য সরঞ্জাম যা এটি আইডিইর অভ্যন্তরে ব্যবহৃত হয় বা না হয়।
কোডোলেজিক

আমি সম্মত, প্রশ্নটি প্রায় দাবি করছে যে আপনি কোনও আইডিইতে কোনও ডিবাগার দিয়ে ডিবাগ করতে পারবেন না এটি এমন নয়। আপনি কোনও আইডিই বা তার সাথে ছাড়াই একটি ডিবাগার চালাতে পারেন, আমি নিশ্চিত যে তিনি জানেন তবেই: সম্ভবত তিনি ভিজ্যুয়াল ডিবাগারগুলি সম্পর্কে নির্দিষ্টভাবে জিজ্ঞাসা করছেন?
হাফেজ

হ্যাঁ, ভিজ্যুয়াল ডিবাগারগুলি। আমি জিডিবি-র মতো অ-ভিজ্যুয়াল ডিবাগারগুলিও জানি, তবে এগুলি একই ধরণের ওকালতি পায় না।
বিল কারভিন

আমি মনে করি আপনার প্রশ্নের মূল বিষয়টি হ'ল আপনি ডিবাগারের জন্য আইডিই ভুল করেছেন। আপনি আইডিইতে ডিবাগিং সম্পর্কে জিজ্ঞাসা করেছেন তবুও আপনি আইডিইটিকে ডিবাগারের সাথে সমান করেন এবং 'নন-আইডিই'র অর্থ ডিবাগারটি ব্যবহার না করা বলে মনে হয়। আইডিই! = ডিবাগার আমি আইডিইকে ঘৃণা করি তবে আমি ডিবাগারগুলি পছন্দ করি, আপনার প্রশ্নের উত্তর দিতে আমার আইডিই এবং ডিবাগারের জন্য বিভিন্ন পয়েন্ট ব্যাখ্যা করতে হবে। এটি জিজ্ঞাসার মতো: "পৃথিবী গোলাকার নাকি আমি সাইকেলটি কিনতে পারি?"
স্টিফানবি

6
@ স্টেফানবি: আমার প্রশ্নের অনেক ভাল উত্তর পেয়েছি, যা দেখায় যে আপনি অযথা পেডেন্টিক হচ্ছেন।
বিল কারভিন

উত্তর:


108

আইডিই ডিবাগার আপনাকে কোডে ট্রেস বার্তাগুলির উপর দিয়ে দেবে এমন কয়েকটি দক্ষতার কয়েকটি উদাহরণ:

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

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

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


3
গতিশীল ডিবাগিং দিকটি একটি ভাল পয়েন্ট।
বিল কারভিন

2
ঘড়ির তুলনায় হ্যান্ডিয়ার, আপনি কোডের মাধ্যমে পদক্ষেপ নেওয়ার সময় একটি পরিবর্তনশীল নামের উপরেও ঘুরে বেড়াতে পারেন এবং আপনি মানটির একটি টুলটিপ পাবেন। এমনকি টুলটিপে ক্লিক করে আপনি সেই মানটি পরিবর্তন করতে পারেন। যে ruxx0rs।
জন ডেভিস

এর বেশিরভাগ অংশ আইডিই সহ বা তার বাইরে ইন্টারেক্টিভ ডিবাগারের বৈশিষ্ট্য। অর্থাত্, তালিকার সমস্ত কিছুই (পরিবর্তে কোডের পরিবর্তে সম্ভাব্য ব্যতিক্রম সহ) জিডিবি দিয়ে সম্ভব।
dmckee --- প্রাক্তন-মডারেটর বিড়ালছানা

1
হ্যাঁ, তবে ওপি জিজ্ঞাসা করেছিল "ডায়াগনস্টিক প্রিন্ট স্টেটমেন্টগুলির চিন্তাশীল ব্যবহারের চেয়ে আইডিই ডিবাগিং সরঞ্জামগুলি কী এত বেশি কার্যকর করে?" আমি আইডিই ডিবাগিং সরঞ্জাম বনাম প্রিন্ট বিবৃতি তুলনা করছিলাম, আইডিই ডিবাগিং বনাম কনসোল ডিবাগিং নয়।
চিতাবাঘ স্কিনপিলবক্সহ্যাট

সম্পাদনা এবং চালিয়ে যাওয়া একটি অত্যন্ত শক্তিশালী সরঞ্জাম। আমি আরও আশা করি আরও সংকলকরা এটি সমর্থন করবে। এটি খারাপ অভ্যাস সক্ষম করতে পারে? অবশ্যই। এমনকি উত্স নিয়ন্ত্রণ খারাপ উন্নয়ন অনুশীলন সক্ষম করতে পারে। E&C প্রোগ্রামারদের সমস্যাগুলি ট্র্যাকিংয়ের ক্ষেত্রে অনেক বেশি কার্যকর হয়ে ওঠে।
ডারন

34
  • একটি আইডিই ডিবাগার আপনাকে রান-টাইমে ভেরিয়েবলের মান পরিবর্তন করতে দেয়।

  • আইডিই ডিবাগার আপনাকে ভেরিয়েবলের মান দেখতে দেয় যা আপনি জানতেন না যে কখন কার্যকর করা শুরু হয়েছিল।

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

  • একটি আইডিই ডিবাগার আপনাকে শর্তাধীন কোডের যে কোনও বিন্দুতে একটি লাইন নম্বর নয়, শর্তের ভিত্তিতে কার্যকর করতে বিরতি দেয়।

  • একটি আইডিই ডিবাগার আপনাকে কেবল ক্র্যাপিংয়ের পরিবর্তে অযথিত ব্যতিক্রমের ক্ষেত্রে প্রোগ্রামের অবস্থা পরীক্ষা করতে দেয়।


1
@Joe, বিল প্রশ্নের প্রেক্ষাপটে, আমি মনে করি তারা হয় সমতুল্য। বিল প্রিন্টফ ডিবাগিং সম্পর্কে কথা বলছে। ডিবাগারটি সম্পাদকের সাথে সংহত করা আছে এবং সংকলকটি সেই মুহূর্তে অবিচল।
রব কেনেডি

জিনিসটি হ'ল জিডিবি, যা কোনও আইডিই ডিবাগার নয়, এই সমস্ত বৈশিষ্ট্য রয়েছে
তামাস সিজনে

প্রশ্নটি আইডিই ডিবাগার বনাম প্রিন্ট স্টাইল ডিবাগিং সম্পর্কে ছিল, তাই আমি এটি এটি যেমন রেখে দেব।
পুনরাবৃত্ত

হ্যাঁ, এগুলি ডিবাগারের খুব কার্যকর সুবিধা। আমি বুঝতে পারি এই বৈশিষ্ট্যগুলি কনসোল ডিবাগারগুলিতেও উপলভ্য, তবে এগুলি অবশ্যই আমার প্রশ্নের ভাল উত্তর।
বিল কারভিন

16

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


5
আমি আগ্রহী, একজন ডিবাগার এটি কীভাবে সমাধান করবেন? যদিও আশ্চর্যজনক এবং
মুকুলযুক্ত

14
  • আপনার কোডের মাধ্যমে সমস্ত বিবৃতি মুদ্রণযোগ্য পাঠযোগ্যতা হ্রাস করে।
  • ডিবাগ উদ্দেশ্যে তাদের যুক্ত করা এবং অপসারণ করা কেবল সময় সাপেক্ষ
  • ডিবাগাররা কল স্ট্যাকটিকে ট্র্যাক করে যেখানে আপনি কোথায় তা সহজেই দেখেন
  • চলকগুলি উড়তে পরিবর্তিত হতে পারে
  • অ্যাডহক কমান্ডগুলি নির্ণয়ে সহায়তা করার জন্য মৃত্যুদন্ড কার্যকর করার জন্য বিরতি দেওয়ার সময় কার্যকর করা যেতে পারে
  • মুদ্রণ বিবৃতিগুলির সাথে সংক্ষেপে ব্যবহার করা যেতে পারে: ডিবাগ.উরাইট ("...")

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

1
# 2 এর জন্য: একটি
ডিবাগারকে

9

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

এটি বলেছিল, আপনার কীভাবে ধাপে-ডিবাগ ডিবাগারটি ব্যবহার করবেন তা অবশ্যই জানা উচিত, কারণ বিভিন্ন শ্রেণীর বাগের জন্য এটি উপায় সহজ। আমি ইতিমধ্যে পোস্ট করা অন্যান্য দুর্দান্ত উত্তরের উপর এটি রেখে যাব কারণ কেন :)


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

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

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

1
আমার অভিজ্ঞতায় মুদ্রণ বিবরণী যুক্ত করে বহুবিধ অবস্থায় থাকা পরিস্থিতি তেমন সহায়তা করে না যেহেতু মুদ্রণ নিজেই একধরণের থ্রেড সিঙ্ক্রোনাইজেশন তৈরি করতে পারে যা বাগের প্রকৃতি পরিবর্তন করে।
the_mandrill

প্রথম বাক্যটি পড়ার পরে আমি
উত্সাহিত করেছি

6

আমার মাথার উপরে:

  1. জটিল বস্তুগুলি ডিবাগ করা - ডিবাগারগুলি আপনাকে কোনও অবজেক্টের অভ্যন্তরের গভীরে যেতে দেয়। যদি আপনার অবজেক্টটি বলুন, জটিল অবজেক্টগুলির অ্যারের একটি অ্যারে রয়েছে, মুদ্রণ বিবৃতি কেবলমাত্র আপনাকে এতক্ষণে পাবেন।
  2. অতীত কোড পদক্ষেপের ক্ষমতা - ডিবাগারগুলি আপনাকে কার্যকর করতে চান না এমন অতীত কোডটি এড়িয়ে যাওয়ার অনুমতি দেবে। সত্য, আপনি এটি ম্যানুয়ালিও করতে পারেন, তবে এটি আপনাকে আরও ইনজেক্ট করতে হবে code

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

হ্যা, তুমি পারো. তবে আপনি কি সত্যিই চান? আপনি কেন আইডিই ডিবাগ করার জন্য ব্যবহার করা ভাল তা কেবল কারণগুলির জন্য জিজ্ঞাসা করেছিলেন, কেবল আইডিই দ্বারা সরবরাহিত জিনিসগুলির জন্য নয়।
কেভিন প্যাং

যথেষ্ট ফর্সা। ধরে নেওয়া যাক যে এই বৈশিষ্ট্যগুলি ব্যবহার করার জন্য মেনু শিখতে শেখে, তারপরে পরবর্তীতে তারা প্রতিটি সময় নতুন ডিবাগিং কোড লেখার চেয়ে সহজ হয়।
বিল কারভিন 21'09

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

@ গ্রান্টপিটারস টিপসটির জন্য ধন্যবাদ!
বিল কারভিন

4

আইডিইতে ডিবাগের বিকল্প হিসাবে আপনি পিএইচপি লাইব্রেরির সাথে দুর্দান্ত গুগল ক্রোম এক্সটেনশন পিএইচপি কনসোল চেষ্টা করতে পারেন যা এর অনুমতি দেয়:

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

3

আমি প্রায় 20 বছর ধরে বিকাশ করি না, তবে আমি দেখতে পাচ্ছি যে কোনও আইডিই / ডিবাগার ব্যবহার করে আমি করতে পারি:

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

ভাল দিক! অবশ্যই এগুলি "সম্পাদনা, পুনরায় সংযোগ, চালনা" এর পুনরাবৃত্তি হ্রাস করতে পারে।
বিল কারভিন 9'09

2

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

  • শর্তযুক্ত ব্রেকপয়েন্টগুলি সংজ্ঞায়িত করুন (কেবল শর্ত পূরণ হলেই বিরতি দিন, অথবা কেবলমাত্র ব্রেক-পয়েন্টে বিবৃতি কার্যকর করা হবে)
  • একটি unhandled ব্যতিক্রম বা যখনই একটি (নির্দিষ্ট) এক্সেক্সশন নিক্ষেপ করা হবে বিরতি
  • ডিবাগ করার সময় পরিবর্তনশীল পরিবর্তন করুন
  • পরবর্তী লাইনটি কার্যকর করতে হবে সেট করে কোডের একটি অংশ পুনরাবৃত্তি করছে
  • প্রভৃতি

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


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

ডিবাগ কোড অপসারণের কাজটি বৈধ, যদিও আমি প্রায়শই এটি থেকে মুক্তি পেতে কেবল "এসএনএন রিভার্ট" করতে পারি।
বিল কারভিন

#ifdef DEBUG প্রিন্টফ ("ভেরিয়েবল যা এখন% d \ n", var); fflush (stdout- এ); # এন্ডিফ
আর্থার ক্যালিয়োকস্কি

@ এম 4 এন, কেবল একটি সংস্করণ পুনরুদ্ধার করা খুব সহজ
পেসারিয়ার

2

একটি জিনিস যা আমি অবাক করে দিয়েছি আমি অন্য উত্তরে দেখিনি তা হ'ল 2 ডিবাগিং পদ্ধতি পারস্পরিক একচেটিয়া নয়

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

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


অন্য একটি উত্তরে পারস্পরিক-একচেটিয়া বিন্দুটি অন্তর্ভুক্ত ছিল তবে এটি ভালভাবে গ্রহণ করা হয়েছে।
বিল কারভিন

2

আমার অভিজ্ঞতায়, সহজ মুদ্রণগুলির একটি বিশাল সুবিধা রয়েছে যা কেউ উল্লেখ করার মতো বলে মনে হয় না।

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

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

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

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

কৌশলগুলি সর্বাধিক উপযুক্ত হয় তা হ'ল সর্বোত্তম জিনিস হ'ল উদাহরণস্বরূপ কিছু বাগ পাওয়ার জন্য লগিং / প্রিন্টআউটগুলি ব্যবহার করুন এবং এমন একটি ব্রেকপয়েন্টে বিরতি দিন যেখানে আমাদের বর্তমান অবস্থা আরও বিশদভাবে অনুসন্ধান করতে হবে।

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


1

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

দুর্ভাগ্যক্রমে মানব মস্তিষ্কগুলি কেবল একক থ্রেডযুক্ত।


হ্যাঁ, কেউ থ্রেড নম্বর বা কিছু দিয়ে স্ট্রিং প্রিন্ট করতে পারে বা কলামগুলিতে থ্রেড দ্বারা ফরম্যাট করতে পারে (যদি না খুব বেশি থাকে)। তবে আমি আপনার বক্তব্য পেতে।
বিল কারভিন

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

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

1

যেহেতু আপনি বইগুলির জন্য পয়েন্টার চেয়েছিলেন ... উইন্ডোজ ডিবাগিং যতদূর যায়, জন রবিনসের উইন্ডোজ ডিবাগিংয়ে ভাল বইয়ের বেশ কয়েকটি সংস্করণ রয়েছে:

মাইক্রোসফ্ট। নেট এবং মাইক্রোসফ্ট উইন্ডোজের জন্য ডিবাগিং অ্যাপ্লিকেশন

মনে রাখবেন যে সর্বাধিক সাম্প্রতিক সংস্করণ ( ডিবাগিং মাইক্রোসফ্ট। নেট 2.0 অ্যাপ্লিকেশনগুলি ) শুধুমাত্র নেট। তাই আপনি যদি কোনও নেটিভ কোড ডিবাগিং চান (তবে এটি নেট এবং নেটিভ উভয়ই অন্তর্ভুক্ত) চাইলে আপনি কোনও পুরানো চান (প্রথম লিঙ্কের মতো) might


বই টিপস জন্য ধন্যবাদ! আমি খুব কমই মাইক্রোসফ্ট প্ল্যাটফর্মের সাথে বিকাশ ব্যবহার করি তবে আমি উল্লেখগুলি প্রশংসা করি।
বিল কারভিন

1

আমি ব্যক্তিগতভাবে উত্তরটি এতটা সহজ বলে অনুভব করি যেহেতু "একটি সংহত ডিবাগার / আইডিই আপনাকে কমান্ডগুলিতে খোঁচা দেওয়ার প্রয়োজন ছাড়াই দ্রুত বিভিন্ন তথ্যের একটি ধনী দেয় what তথ্যটি আপনার সামনে উপস্থিত হয় আপনি কী না তা না জানিয়ে জানান তোমাকে দেখাও.

তথ্য যে স্বাচ্ছন্দ্যে পুনরুদ্ধার করা যায় তা হ'ল যা কেবল কমান্ড-লাইন ডিবাগিং বা "প্রিন্টফ" ডিবাগিংয়ের চেয়ে আরও ভাল করে তোলে।


এটি একটি ভাল সংক্ষিপ্ত বিবরণ বা সাধারণ বিবৃতি, সরবরাহ করা অন্যান্য অনেক উত্তর নির্দিষ্ট উদাহরণগুলির সাথে মেলে।
বিল কারভিন

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

1

একটি প্রিন্টফের উপর কোনও ডিবাগারের সুবিধা ( কোনও আইডিই ডিবাগার নয় তবে কোনও ডিবাগার নোট করুন )

  1. ওয়াচপয়েন্টস সেট করতে পারেন। এটি মেমোরির বিশৃঙ্খলা খুঁজে পাওয়ার আমার অন্যতম প্রিয় উপায়

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

  3. বাইনারি ডিবাগ করতে পারে যা পুনরায় সংযোগ করতে দীর্ঘ সময় নেয়

  4. ফ্লাইতে ভেরিয়েবল পরিবর্তন করতে পারে

  5. ফ্লাই ফাংশন কল করতে পারেন

  6. যেখানে ডিবাগ স্টেটমিনেটগুলি ফ্লাশ করা হয় না এবং তাই সময়সীমার সমস্যাটি তাত্ক্ষণিকভাবে ডিবাগ করা যায় না এমন সমস্যা নেই

  7. ডিবাগারগুলি মূল ডাম্পগুলিতে সহায়তা করে, মুদ্রণ বিবৃতি প্রেরণা দেয় না '


1

এটিই আমি ভিএস.এনইটি ডিবাগিং উইন্ডোতে সর্বাধিক ব্যবহার করি:

  • কল স্ট্যাক, যা অন্য কারও কোড খুঁজে বের করার এক দুর্দান্ত উপায়
  • স্থানীয় এবং ঘড়ি
  • তাত্ক্ষণিক উইন্ডো, যা মূলত একটি সি # কনসোল এবং এটি আমাকে ভেরিয়েবল সামগ্রীগুলি পরিবর্তন করতে, স্টাফ আরম্ভ করতে দেয় etc.
  • একটি লাইন এড়িয়ে যাওয়ার ক্ষমতা, পরবর্তী বিবৃতিটি অন্য কোথাও কার্যকর করার জন্য সেট করুন।
  • ভেরিয়েবলের ওপরে ওঠার ক্ষমতা এবং একটি সরঞ্জাম-টিপ আমাকে তাদের মানগুলি দেখায়।

সংক্ষেপে, এটি আমাকে একটি ছোট উইন্ডো নয়, আমার এক্সিকিউটিভ কোডের রাজ্যের একটি 360 ডিগ্রি ভিউ দেয়।

এই ধরণের জিনিসগুলি শেখানোর জন্য কোনও বই কখনও খুঁজে পান নি তবে আবার এটি খুব সহজ বলে মনে হচ্ছে এটি WYSIWYG pretty


কমপক্ষে আরও জানতে সংস্থান সম্পর্কে আমার প্রশ্নের অংশটি সম্বোধনের জন্য +1
বিল কারভিন

0
  • একটি ডিবাগার চলমান প্রক্রিয়াতে সংযুক্ত করতে পারে

  • কোনও ডিবাগার থেকে থ্রেড কোড ডিবাগ করা প্রায়শই সহজ


0

আইডিই ডিবাগারের সাহায্যে আপনি যখনই এক্সিকিউশনটি থামিয়ে দেন বর্তমান স্কোপ (সমস্ত উপায়ে কল স্ট্যাক) তে সমস্ত ভেরিয়েবলের মানগুলি দেখতে পাবেন।

মুদ্রণ বিবৃতি দুর্দান্ত হতে পারে তবে কোনও নির্দিষ্ট জায়গায় স্ক্রিনে এত বেশি তথ্য ফেলে দেওয়া পুরো উত্পাদন করতে পারে মুদ্রণ বিবৃতি ।

এছাড়াও, অনেক আইডিই ডিবাগার আপনাকে পদ্ধতিগুলি টাইপ এবং মূল্যায়ন করতে দেয় এবং আপনাকে থামানো অবস্থায় সদস্যদের মূল্যায়ন করতে দেয়, এটি আপনাকে প্রিন্ট বিবৃতিগুলির পরিমাণ আরও বাড়িয়ে তোলে।

আমি মনে করি যে ডিবাগারগুলি অন্য ভাষার চেয়ে কিছু ভাষার পক্ষে ভাল ...

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

আমি যখন জাভা ডেভেলপমেন্ট করি তখন আমি ইন্টেলিজ আইডিইএতে ডিবাগারটি একেবারে পছন্দ করি। আমি যখন পাইথন ব্যবহার করি তখন আমি কেবল মুদ্রণ বিবৃতি ব্যবহার করি।


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

0

যেমন কেউ উপরে বলেছেন: ডিবাগার! = আইডিই।

gdb এবং (ফিরে এসেছিল) টার্বো ডেবুগার (একা একা) তারা যে ভাষাগুলি সমর্থন করে তার জন্য ঠিক কাজ করে [সম্পাদনা], আপনাকে ধন্যবাদ thank (বা আরও পুরানো প্রযুক্তি: এক্সপ্লাজাল এক্সিকিউটেবল নিজেই লিঙ্কযুক্ত ক্লিপার ডিবাগার) - এর কোনওটিরও আইডিই প্রয়োজন

এছাড়াও, যদিও সি / ++ কোডিং বেশি বিরল, প্রিন্টফ স্টেটমেন্টগুলি কখনও কখনও আপনি যে বাগটি সন্ধান করার চেষ্টা করছেন তা বন্ধ করে দেয়! (স্ট্যাকের অটো ওয়ার্সে সূচনা সমস্যা, উদাহরণস্বরূপ, বা মেমরি বরাদ্দ / প্রান্তিককরণ)

অবশেষে, অন্যরা যেমন বলেছে, আপনি উভয়ই ব্যবহার করতে পারেন। কিছু রিয়েল-টাইম-ইশ সমস্যাগুলির জন্য প্রায় একটি মুদ্রণের প্রয়োজন হয়, বা কমপক্ষে একটি বিচার্য "* ভিডিও_ডিবিজি = (is_good? '+': '-');" কোথাও ভিডিও মেমরি into আমার বয়স দেখায়, এটি ডস এর অধীনে ছিল :-)

TMTOWTDI


0

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

যতক্ষণ শেখার সংস্থান রয়েছে, আমি কোনও ব্যবহার করি নি - আমি কেবল সমস্ত মেনু এবং বিকল্পগুলি অন্বেষণ করি।


0

এটি কি বাস্তব প্রোগ্রামার থেকে বাস্তব প্রশ্ন?

যে কেউ প্রিন্ট স্টেটমেন্ট দিয়ে ডিবাগ করতে এবং আইডিই দিয়ে ডিবাগ করে এমনকি 5 মিনিটও ব্যয় করেছে - এটি জিজ্ঞাসা না করেই তার / তার কাছে ওসিকিউর হবে!


"অ্যানন" এর একজন মনিকারের সাথে কারও কাছ থেকে আসা এটি একটি মজার প্রশ্ন।
বিল কারভিন

তোমাদের মধ্যে তিনিই জ্ঞানী, যিনি জানেন যে তাঁর প্রজ্ঞাটি মোটেই মূল্যহীন নয়। (সক্রেটিস)
জ্যাকস ডি হুজে

0

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


0

আইডিইতে কনসোল ডিবাগার বনাম প্রিন্টফ এবং বনাম ডিবাগারের একটি দরকারী বৈশিষ্ট্য সবেমাত্র উল্লেখ করতে চেয়েছিলেন।

আপনি একটি দূরবর্তী অ্যাপ্লিকেশন (স্বতঃস্ফূর্তভাবে, DEBUG মোডে সংকলিত) সাথে সংযুক্ত করতে পারেন এবং এর অবস্থা POSIX teeইউটিলিটি ব্যবহার করে কোনও ফাইলে ডিবাগার আউটপুট ডাম্পিংয়ের পরীক্ষা করতে পারেন । প্রিন্টফের তুলনায় আপনি রান-টাইমে স্টেট আউটপুট কোথায় বেছে নিতে পারেন।

আগ্রাসী পরিবেশে মোতায়েন করা অ্যাডোব ফ্ল্যাশ অ্যাপ্লিকেশনগুলি ডিবাগ করার সময় এটি আমাকে অনেক সহায়তা করেছিল । আপনাকে কেবল কয়েকটি ক্রিয়া সংজ্ঞায়িত করতে হবে যা প্রতিটি ব্রেকআপপয়েন্টে প্রয়োজনীয় স্টেট প্রিন্ট করে, কনসোল ডিবাগার দিয়ে শুরু করেfdb | tee output.log এবং কিছু ব্রেকপয়েন্টগুলিতে যেতে পারে। এর পরে আপনি বিভিন্ন ব্রেকপয়েন্টে রাজ্যের সম্পূর্ণ তুলনা করে লগটি মুদ্রণ করতে এবং তথ্য বিশ্লেষণ করতে পারেন।

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

যাইহোক, আমার মতামতটি হ'ল কোনও ডিবাগারটি স্টার করার আগে কোথায় এবং কোনটি ডিবাগ করা উচিত তা পরিকল্পনা করা উচিত।


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

@ বিল কারভিন: আমি বলতে চাইছি কোনও ফাইলের লগ ইন করার ক্ষমতা =)
নিউটওভার

0

ঠিক আছে আরেকটি বিষয় আপনি যদি কোনও নতুন পুরানো প্রকল্পে যোগদান করেন এবং কোডটি কী করছে তা সত্যিই কেউ জানে না, তবে আপনি ভেরিয়েবল / অবজেক্ট / ... বি / সি প্রতিধ্বনি করে ডিবাগ করতে পারবেন না কোড কী তা আপনার কোনও ধারণা নেই মৃত্যুদণ্ড কার্যকর করা।

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

শুভেচ্ছান্তে

Raffael


0

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

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


0

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


0

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


0

ওয়াও, আমি কি এই প্রশ্নটি পছন্দ করি? আমি এটা পোজ করার সাহস পাইনি ...

দেখে মনে হয় যে মানুষের কাজ করার বিভিন্ন উপায় রয়েছে। আমার জন্য সবচেয়ে ভাল কাজ করে তা:

  • মেমরি পরিচালনা সহ আমার কোডের দৃ mind় মনের মডেল Having
  • যা ঘটছে তা অনুসরণ করতে উপকরণ ব্যবহার করুন (মুদ্রণ বিবৃতিগুলির মতো)।

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

আমি বলছি না যে ভাল। আমি খারাপ বলি না। আমি শুধু এটি ভাগ করতে চান।


1
আপনি কেন এটি একটি ভাল উত্তর বলে মনে করেন? এবং আপনি কি মনে করেন এটি স্ট্যাকওভারফ্লোয়ের জন্য একটি ভাল প্রশ্ন?
ডেভিডজি

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

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

আপনি কি এমন কোনও (উচ্চমানের) ফোরা (বা সম্ভবত কোনও ট্যাগ) এর সম্পর্কে জানেন যেখানে এই জাতীয় প্রশ্নটি ভালভাবে স্থাপন করা হবে?
জ্যাকস ডি হুগ

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

-2

এটি কেবল ডিবাগিং নয়। একটি IDE আপনাকে বিভিন্ন উপায়ে দ্রুততর উন্নত সফ্টওয়্যার তৈরি করতে সহায়তা করে:

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

আমি যেতে পারে।


2
ভুল ... এটা প্রশ্ন ছিল না।
vmarquez

2
এগুলি আইডিই'র খুব ভাল বৈশিষ্ট্য, তবে তাদের বেশিরভাগেরই "স্মার্ট সম্পাদনা" হিসাবে অভিহিত হতে পারে do আমি স্মার্ট সম্পাদকটির মূল্য বুঝতে পারি, তবে ভিজ্যুয়াল ডিবাগিংটি আমি যা জিজ্ঞাসা করতে চাইছিলাম তা।
বিল কারভিন

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