রিয়েল প্রোগ্রামাররা ডিবাগার ব্যবহার করেন? [বন্ধ]


15

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


14
এটি জিজ্ঞাসার মতো যে যদি অভিজ্ঞ প্রোগ্রামাররা কীবোর্ড ব্যবহার করে থাকে ... তবে অভিজ্ঞতার সাথে এর কী করার আছে তা আমি বুঝতে পারি না - আপনি কি মনে করেন যে তারা Godশ্বর এবং প্রথম থেকেই ত্রুটি ছাড়াই নিখুঁত-কার্য কোড তৈরি করে? এমনকি যদি এটির আপনার অর্থ কী - আপনি যখন প্রয়োজন তখন ডিবিগার ব্যবহার বন্ধ করবেন এবং এই বলে স্টার করে: "আমি ডিবাগারটি ব্যবহার করি না তাই আমি রিয়া প্রোগ্রামার" ... :) বিটিডাব্লু। আমি সন্দেহ করি যে কোনও পেশাদার এই জাতীয় প্রশ্নের উত্তর দেবে ...

3
@ উবল: প্রাথমিক অভিজ্ঞতা "অভিজ্ঞ প্রোগ্রামাররা ডিবাগারগুলি ব্যবহার করেন" একটি ভাল প্রশ্ন। এটি আমাকে অবাক করে দিয়েছিল যে এটি একটি ছোট পবিত্র যুদ্ধ শুরু করেছিল।
কেভিন

19
বাস্তব প্রোগ্রামারগণ অবশ্যই প্রজাপতিগুলি
রেন হেনরিচস 21:48

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

7
অভিজ্ঞ প্রোগ্রামাররা যারা "ডিবাগারগুলি ব্যবহার করেন না" সম্ভবত জিডিবি / সফটওয়াইস হিসাবে বিবেচনা করছেন এবং প্রকৃত সংহত-ডিবাগারটি কখনও ব্যবহার করেন নি (এবং সম্ভবত এটির জন্য কোনও আইডিই ব্যবহার করবেন না)। তারা বেদনাদায়ক সময়ের চেয়ে অনেক পিছনে রয়েছে।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

উত্তর:


44

আমি বলব যে ডিবাগার ব্যবহার না করা অনভিজ্ঞতার লক্ষণ। কোড লাইনে পা দিয়ে রেখার মাধ্যমে নির্বাহের প্রবাহটি সনাক্ত করার সর্বোত্তম উপায়।


30
আশ্চর্যজনক যে পরে এসেম্বলার, ফরট্রান, সি, সি ++ ইত্যাদি ইত্যাদিতে 30 বছরেরও বেশি প্রোগ্রামিংয়ের পরেও আমি এটি ব্যবহার করার কোনও ইচ্ছা অনুভব করি না।

59
দীর্ঘ সময় ধরে কিছু করা আপনার পক্ষে এটির পক্ষে ভাল নয়।
সিজেজোজ

31
ডিবাগারটি ব্যবহার করতে সক্ষম না হওয়াই অভিজ্ঞতার লক্ষণ। কেবল কোড পড়ার দ্বারা কোনও প্রোগ্রামের প্রবাহ বোঝা যায় না। অবশ্যই, অভিজ্ঞ প্রোগ্রামারদের একবারে একবারে ডিবাগারের প্রয়োজন হবে, তবে আপনি কোডটি পড়তে পারেন, প্রয়োজন নেই এবং এটি কোনও দ্রুত ডিবাগিংয়ের প্রক্রিয়া তৈরি করবে না।
গোলেজট্রোল

10
@ কার্ল বিলেফেল্ট: আমাকে প্রোগ্রামারদের কয়েকটি বিখ্যাত উদাহরণের নাম দিন যারা ডিবাগিংয়ের জন্য ডিবাগার ব্যবহার করেন না। লিনাক্স টরভাল্ডস, লিনাক্সের লেখক। পার্লের লেখক ল্যারি ওয়াল। আপনার জন্য জটিল যথেষ্ট সফ্টওয়্যার?
btilly

9
@ নীল: আপনার নিজের কোডটিতে আপনি কতটা সময় ব্যয় করেন এবং অন্যান্য লোকেরা কতটা রক্ষণাবেক্ষণ কোড লিখেছেন? এবং বিশেষত, অন্যান্য লোকদের দ্বারা লিখিত কোড রক্ষণাবেক্ষণের কতটুকু প্রোগ্রামিং ভাষার কাছাকাছি কোথাও অনুমতি দেওয়া উচিত হয়নি?
কারসন 63000

28

আমি প্রায়শই ডিবাগারটি ব্যবহার করি কারণ আমি একটি বড় সিস্টেমে কাজ করি এবং তাই আমি স্তন্যপান করি। http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html

আপনার কোডটি কত সংক্ষিপ্ত এবং ঘন ঘন পঠনযোগ্য তা বিবেচনা করা না কেন, এতে সর্বদা ব্যাগ থাকার সম্ভাবনা থাকে। http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

ত্রুটিযুক্ত হওয়াই মানবিক এবং কেউ কখনই প্রমাণ করতে পারে না যে কোনও প্রোগ্রামটি সঠিক, তাই কেন এই কঠিন ব্যবসায়টিতে নিজেদের সহায়তা করার জন্য ডিবাগার / স্বয়ংক্রিয় পরীক্ষার মতো সরঞ্জাম ব্যবহার করবেন না?

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

তো, কখন আমার কোনও ডিবাগার লাগবে না?

আমি বুদ্ধিমান কোডার বা সবচেয়ে অভিজ্ঞ নই, তবুও, কখনও কখনও আমার ডিবাগারটি ব্যবহার করার প্রয়োজন হয় না। ওটা যখন:

  • কোডটি আমার বা ভাল-লিখিত এবং
  • এটি একটি পঠনযোগ্য ভাষায় এবং এন্ডে লেখা হয়েছে
  • সামগ্রিক প্রকল্পটি ছোট।

আমি কখন একটি ডিবাগারের উপর নির্ভর করি?

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

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

"রিয়েল" প্রোগ্রামারটিকে কীভাবে সংজ্ঞায়িত করা যায়? এক যে দ্রুত? বুদ্ধিমান? অ্যালগরিদমে ভাল? ভাল ডকুমেন্টেশন লিখেছেন? ঠিক কখন একজন এই নতুন উপাধিতে স্নাতক হয়? কেউ কখন যাদুকরী রেখাটি অতিক্রম করে?

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

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

...

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


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

আপনি পুরো জিনিস পড়তে পারে খুশি।
কাজ

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

1
"কেউ কখনই প্রমাণ করতে পারে না যে একটি প্রোগ্রাম সঠিক" এটি সত্য নয়।
GManNickG

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

17

"আমি ডিবাগারগুলিকে পছন্দ করি না Never কখনও কখনও হবে না, সম্ভবত কখনও করবে না।" - লিনাস টরভাল্ডস

অন্যদিকে, তার কোনও স্ট্যাক ওভারফ্লো অ্যাকাউন্ট নেই, সুতরাং আপনি তার মতামত নিয়ে আগ্রহী কিনা তা নিশ্চিত নই :)


3
আমাদের মধ্যে অনেকেই লিনাস টোরভাল্ডস নন, আমাদের বাকী নিছক মানুষদের জন্য আমাদের ডিবাগার দরকার।
নোডি দি নোড গাই

7
কার্নেলগুলি ডিবাগারগুলিতে ভাল ঝোঁক থাকে না।

7
হ্যাঁ, কার্নেল প্রোগ্রামিং ইউজারস্পেস প্রোগ্রামিংয়ের চেয়ে আলাদা ক্ষেত্র। আমি সাধারণত ইউনস্পেসের বিষয়ে লিনাসের মতামতের সাথে একমত নই, তবে কার্নেলস্পেসের সাথে কাজ করার সময় তারা অবশ্যই সম্মানজনক।
বিকল্প

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

6
এটি লিনাস টোরভাল্ডসের মতো মনে হয় এবং আমি কখনই কোনও বিষয়ে একমত হই না।
ব্লুরাজা - ড্যানি পিফ্লুঘুফ্ট

11

সুতরাং আমার নির্দিষ্ট উত্তরযোগ্য প্রশ্নটি কোন পরিস্থিতিতে আপনি একজন অভিজ্ঞ প্রোগ্রামার হিসাবে একজন ডিবাগার ব্যবহার করবেন?

  • যখন আপনি "ডিবাগ" করতে পারবেন না পড়া আপনার কোড।
  • যখন আপনি কি ভবিষ্যদ্বাণী করা করতে ব্যর্থ হয়েছেন সে মান নির্দিষ্ট ভেরিয়েবল একটি একটি প্রদত্ত সময় আছে।
  • যখন আপনার কোডটির মানসিক মডেল আপনার কোড দ্বারা প্রদত্ত আউটপুট ফিট করে না

সম্পাদনা:

আমার প্রোগ্রামিং যাত্রায় কোনও ডিবাগার কীভাবে ব্যবহার করতে হয় তা না জানার ভাগ্য / দুর্ভাগ্য আমার ছিল। অতীতে অতীতে আমি কোনও ডিবাগার ছাড়াই ডিবাগ করতে বাধ্য হয়েছিলাম। তবে একটি ডিবাগার ব্যবহার করতে শেখার পরে -> আমি বাগগুলি খুঁজে পেতে আরও 100 গুণ বেশি উত্পাদনশীল হয়েছি ।


"যখন আপনার কোডটির মানসিক মডেলটি আপনার কোড দ্বারা প্রদত্ত আউটপুট ফিট করে না"
ব্যবহারকারী

8

বর্তমান উত্তরগুলি থেকে কিছুটা ভিন্ন দৃষ্টিভঙ্গি দেওয়া; এমন একটি এম্বেডড সফটওয়্যার ইঞ্জিনিয়ার হিসাবে যে সিস্টেমে প্রায়শই রিয়েল-টাইম উপাদান থাকে আমি খুব কমই একটি ডিবাগার ব্যবহার করি।

উপলক্ষ্যে একটি ডিবাগার একটি আশ্চর্যজনক সরঞ্জাম হতে পারে এবং যখনই আমি কোনও ডেস্কটপে কোড তৈরি করতে এবং চালাতে সক্ষম হই তখন আমি সর্বদা একটি ডিবাগারটি ব্যবহার করতাম।

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


1
আপনি হার্ডওয়ার-ভিত্তিক ডিবাগার বোর্ডগুলি তদন্ত করতে চাইতে পারেন
স্টিভেন এ। লো

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

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

7

আমি মনে করি অভিজ্ঞ প্রোগ্রামাররা প্রায় একচেটিয়াভাবে ডিবাগারগুলি ব্যবহার করেন, যখন তাদের প্রয়োজন হয়। কোডটির বাস্তবায়ন অনুসরণের চেয়ে কোনও বাগ চিহ্নিত করার আরও ভাল উপায় ...

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

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


4
ঠিক আছে, আমি যা অনুসন্ধানের চেষ্টা করছি ঠিক এটি - আমি একজন অত্যন্ত অভিজ্ঞ প্রোগ্রামার এবং আমি কখনই এটি ব্যবহার করি না।

5
@ নিল, সম্ভবত আপনার কোনও প্রয়োজন নেই। আশ্বাস দিন, সময় আসবে যেখানে
ডিবাগারটি

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

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

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

4

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


যদি এটি আরও স্পষ্ট করে, আমি অনেক জাভা প্রোগ্রামার জানি যা ডিবাগার ব্যবহার করে। তারা বেশিরভাগই ঠিক স্কুল থেকে বাইরে।
কেভিন

1
স্ট্যাকট্রেসগুলি ডেটা দেখায় না - আপনাকে অবশ্যই সেই তথ্যটি যুক্ত করতে হবে - তবে সেগুলি খাঁটি সোনার।

1
@ থরবজর্ন: তারা ডেটা প্রদর্শন করতে পারে , প্রকৃতপক্ষে: উদাহরণস্বরূপ পাইথনের সিজিটিবি মডিউলটি দেখুন। (নামটির সিজিআই বেশিরভাগ ক্ষেত্রে তদন্তযোগ্য, কোনও সিজিআই ক্র্যাশ হওয়ার পরে মডিউলটির মূল উদ্দেশ্যটি ব্যবহারযোগ্য স্ট্যাকের চিহ্নগুলি উপস্থাপন করা ছিল)) অবশ্যই, আপনি কখনও কখনও এতগুলি ডেটা পান যে স্ট্যাকটিতে চলাচল করা কঠিন হয়ে পড়ে Of আগ্রহের ফ্রেম আমি cgitb.enable(format='text')যাই হোক না কেন ভালবাসি ।
স্যামবি

আমি সত্যিই ডিবাগার ব্যবহার করি না এবং আমি সি ++ ব্যবহার করি ..
নিককো

@ সাম্ব কেভিন জাভা সম্পর্কে কথা বলেছেন, যা তা করতে পারে না

3

কদাচ।

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

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


3
এই থ্রেডে কিছু বাস্তব বিদ্বেষী নুব রয়েছে ...

2
এটিকে ভোট দেওয়ার কোনও কারণ নেই - তিনি ঠিক বলেছেন।
ওয়াডসওয়ার্ল্ড

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

2
-1: "আপনার পদ্ধতিগুলি ছোট / যথেষ্ট আকারের হওয়া উচিত যা আপনার মন দ্বারা সংকলিত এবং চালিত হতে পারে" বাস্তবতা থেকে সংযুক্ত। এটি এমন একটি ফাংশন বলার মতো যা 20 লাইনের চেয়ে বেশি দীর্ঘ। ছাইপাঁশ.
জন ডিবলিং

3

স্মলটাল্কে, আমি প্রায় পুরোপুরি ডিবাগারে বিকাশ করি :

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

3

কে পাত্তা দেয়? আমি যা জানতে চাইছি এটি কি একটি ডিবাগার ব্যবহার করা আমাকে দীর্ঘমেয়াদে আরও ভাল প্রোগ্রামার হওয়া থেকে বিরত রাখবে? অনেক অভিজ্ঞ বিকাশকারী শুরু করার সাথে সাথে ডিবাগারগুলি নিম্নমানের ছিল তাই তারা বাধা ছিল। এটি কি ক্রাচ যা গভীর বোঝার প্রতিরোধ করে?

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


2

আমার যখন প্রয়োজন হবে তখন আমি একটি ডিবাগার ব্যবহার করি। এটি প্রতিদিন নয়, তবে এটি মাঝে মধ্যে ঘটে occur ঠিক কী ঘটে তা দেখতে কখনও কখনও কোডের মাধ্যমে পদক্ষেপ নেওয়া ভাল।

আমি স্বীকার করতে হবে যে আমি কম কম ডিবাগার ব্যবহার করি। আমি 10 বছরেরও বেশি সময় ধরে ডেলফিতে বিকাশ করছি। আমি পিএল / এসকিউএল-তে সঞ্চিত পদ্ধতিও লিখি। কয়েক মাস ধরে আমি পিএইচপি বিকাশকারীও।

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

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

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


2

আমি মাঝেমধ্যে কোনও ডিবাগার না দিয়ে কোড করি, তবে কেবল যখন বন্দুক পয়েন্টে বাধ্য হয় তখন। লিগ্যাসি একটি 8051 বা জেড 80 এ এম্বেড করা বন্দুক।

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

অ্যাপলিকাগুলি যেভাবে লিখেছেন সে অনুযায়ী ঠিকঠাক কাজ করছে এমন একটি সিস্টেম ত্রুটিতে একটি ডিবাগার সাহায্য করতে পারে না তবে কিছু বিরতিপ্রাপ্ত কমস প্রোটোকল ত্রুটির কারণে সিস্টেম এখনও কাজ করে না।

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

আমার দু'জনেরই থাকতে হবে - আমার পেতে পারে এমন সমস্ত সহায়তা দরকার!


2
ডিবিগারদের জন্য z80 যথেষ্ট বড়। সিপি / এম এর জেডএসআইডি ছিল।

1

এই পদক্ষেপগুলি ব্যর্থ হলে আমি কেবল একটি ডিবাগার ব্যবহার করি:

  1. ত্রুটিটি পুনরুত্পাদনযোগ্য পান। চিন্তা করুন। এটি প্রায়শই প্রয়োজন হয়।
  2. কোনও স্ট্যাক ট্রেস এবং লগগুলি পরীক্ষা করুন।
  3. আপত্তিকর কোডের চারপাশে আরও লগিং যুক্ত করুন।

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

সুতরাং যুক্তিযুক্তভাবে স্থাপন লগিং বিবৃতি একটি দীর্ঘ পথ যায়।


1

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

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


0

এটি ব্যক্তিগত পছন্দের প্রশ্ন।

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

কোনও ডিবাগারের প্রাথমিক ইউটিলিটি হ'ল প্রোগ্রামটি নিজেকে থামানোর জন্য তৈরি করা ছাড়া কোনও প্রোগ্রাম থামানো হয়: এই বৈশিষ্ট্যটি বেশ গুরুত্বপূর্ণ।

এই 2 টি বৈশিষ্ট্য বাদে, আমি মনে করি না যে কোনও ডিবাগারটি সত্যই প্রয়োজনীয়; আপনার যে কোনও জটিল প্রোগ্রামের জন্য কিছু প্রকারের "ভার্বোজ" মোড থাকা উচিত, অর্থাত এটি প্রিন্টফ বা স্টাডি :: কাউট দিয়ে কী করছে, এটি কী পছন্দ করেছে এবং অন্যান্য অনেকগুলি পরামিতি বলে telling

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

ডিবাগারগুলি আপনার গাড়ির জন্য বৈদ্যুতিক স্টিয়ারিংয়ের মতো: এটি থাকা আরও স্বাচ্ছন্দ্যজনক তবে এটি আপনার ড্রাইভকে আরও ভাল করে তুলবে না।

প্রোগ্রামিং ডিজাইন এবং যুক্তি সম্পর্কে, সরঞ্জামগুলি ট্র্যাকিংয়ে আপনাকে যেভাবে সহায়তা করতে পারে তা আপনাকে আরও ভাল প্রোগ্রামার করে না।

সংকলিত ভাষার জন্য প্লাস ডিবাগারগুলি কার্যকর, তাত্পর্যযুক্ত ভাষার জন্য খুব কম।


2
বনাম সংকলিত এর সাথে কী করা আছে তা সংকলিত বুঝতে পারছি না।
মাইকেল বুড়

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