আমি নিম্নলিখিত রুবি কোডটি ইন্টারনেট থেকে অনুলিপি করেছি এবং কয়েকটি পরিবর্তন করেছি তবে এটি কার্যকর হয় না।
নিজে থেকে প্রোগ্রামটি ডিবাগ করতে আমি কী করতে পারি?
আমি নিম্নলিখিত রুবি কোডটি ইন্টারনেট থেকে অনুলিপি করেছি এবং কয়েকটি পরিবর্তন করেছি তবে এটি কার্যকর হয় না।
নিজে থেকে প্রোগ্রামটি ডিবাগ করতে আমি কী করতে পারি?
উত্তর:
প্রাই ( গিটহাব ) ব্যবহার করুন ।
এর মাধ্যমে ইনস্টল করুন:
$ gem install pry
$ pry
তারপর যোগ:
require 'pry'; binding.pry
আপনার প্রোগ্রামের মধ্যে।
এর মতো pry
0.12.2 তবে, কোন গৌণ যেমন কমান্ড হয় next
, break
ইত্যাদি অন্যান্য বেশ কয়েকটি রত্ন অতিরিক্ত এই প্রদান, উদাহরণস্বরূপ দেখুন pry-byedebug
।
binding.pry
। এটি রঙিন সমাপ্তি, ডকুমেন্টেশন সন্ধান, এবং কোনও পদ্ধতি গতিশীলভাবে সম্পাদনা এবং পুনরায় লোড করার সম্ভাবনা সহ আসে ..
Pry
/ byebug
দুর্দান্ত, তবে ডিবাগ করার সময় আপনার প্রথম পদক্ষেপ হিসাবে নয়। বেশিরভাগ ক্ষেত্রে, একটি ব্যতিক্রম উত্থাপন raise object.inspect
কোনও আইআরবি সেশন খোলার চেয়ে আপনার সমস্যাটি দ্রুত সমাধান করবে। আমি কেবলমাত্র কনসোল ডিবাগারগুলি ব্যবহার করার পরামর্শ দিই যে আরও একবার ব্যতিক্রম উত্থাপনের মতো সহজ সমাধানগুলি আপনার সমস্যার সমাধান করতে অক্ষম।
pry
কী উপায় আছে ? কীভাবে করব তা আমি খুঁজে পেলাম না; এবং এটিই আমি একটি ডিবাগারের প্রত্যাশা করি।
রুবিতে:
ruby -rdebug myscript.rb
তারপর,
b <line>
: ব্রেক ব্রেক পয়েন্ট n(ext)
বা s(tep)
এবংc(ontinue)
p(uts)
প্রদর্শনের জন্য(পার্ল ডিবাগের মতো)
কারাগারে: এর সাথে সার্ভারটি চালু করুন
script/server --debugger
এবং debugger
কোড যুক্ত করুন।
-r debug
এটি আবর্জনা বলছেন ?
facets
রত্নের প্রয়োজনীয়তার নির্দিষ্ট সংস্করণ সহ একটি রেলস ২.২ অ্যাপ্লিকেশনটিতে চালানোর জন্য প্রাইয়ের একটি প্রাচীন সংস্করণ সন্ধানের জন্য এক ঘন্টা সময় ব্যয় করেছি এবং এটি ব্যর্থ হয়েছিল। প্রাচীন রেল অ্যাপসের ruby-debug
জন্য কিছুটা কদর্য হলেও কাজটি হয়ে যায়।
হিসাবে সুপারিশ সুপারিশ: ব্যবহার pry! আমি কেবল এই বিষয়ে একমত হতে পারি।
পিআরএব আইআরব চেয়ে অনেক ভাল repl।
আপনি যোগ করা প্রয়োজন
require 'pry'
আপনার উত্স ফাইলটিতে এবং তারপরে যোগ করে আপনার উত্স কোডে একটি ব্রেকপয়েন্ট .োকান
binding.pry
যে জায়গাগুলিতে আপনি জিনিসগুলি দেখতে চান সেই স্থানে (এটি ক্লাসিক আইডিই পরিবেশে ব্রেকপয়েন্টটি ট্রিগার করার মতো)
আপনার প্রোগ্রাম একবার হিট
binding.pry
লাইন, আপনার ডানদিকে আপনার প্রোগ্রামের সমস্ত প্রসঙ্গের সাথে ডানদিকে সরাসরি প্রাইপ রিপ্লেলে ফেলে দেওয়া হবে, যাতে আপনি কেবল চারপাশের সমস্ত কিছু অন্বেষণ করতে পারবেন, সমস্ত বিষয়গুলি তদন্ত করতে পারবেন, রাষ্ট্র পরিবর্তন করতে পারবেন এবং এমনকি ফ্লাইতে কোড পরিবর্তন করতে পারবেন।
আমি বিশ্বাস করি আপনি বর্তমানে যে পদ্ধতিতে রয়েছেন তার কোডটি আপনি পরিবর্তন করতে পারবেন না, তাই দুঃখের সাথে আপনি পরের লাইনটি কার্যকর করতে পারবেন না। তবে ভাল রুবি কোড যেভাবেই একক লাইন হয়ে থাকে ;-)
ব্যতিক্রম উত্থাপন দ্বারা ডিবাগ হয় অনেক সহজ মাধ্যমে অক্ষিবিকূর্ণন চেয়েprint
লগ বিবৃতি, এবং সবচেয়ে বাগগুলির জন্য তার সাধারণত অনেক দ্রুত মতো irb ডিবাগার খোলার আপ চেয়েpry
বাbyebug
। এই সরঞ্জামগুলি সর্বদা আপনার প্রথম পদক্ষেপ হওয়া উচিত নয়।
Exception
তারপরে এবং .inspect
এর ফলাফল উত্থাপন করুনদ্রুততম ডিবাগ পথে রুবি (বিশেষ করে পাগল) কোড হয় raise
যখন কলিং আপনার কোড সঞ্চালনের পথ বরাবর একটি ব্যতিক্রম .inspect
পদ্ধতি বা বস্তুর (যেমন উপর foo
):
raise foo.inspect
উপরের কোডে, এমন raise
একটি ট্রিগার করে Exception
যা আপনার কোডটির সম্পাদন বন্ধ করে দেয় এবং এমন একটি ত্রুটি বার্তা দেয় যা আপনি ডিবাগ করার চেষ্টা করছেন সেই লাইনে .inspect
অবজেক্ট / পদ্ধতি (ie foo
) সম্পর্কে সহজেই তথ্য রয়েছে contains
এই কৌশলটি কোনও অবজেক্ট বা পদ্ধতিটি দ্রুত পরীক্ষা করার জন্য ( উদাহরণস্বরূপ এটি nil
কি? ) এবং তাৎক্ষণিকভাবে নিশ্চিত করার জন্য কোডের একটি লাইন কোনও নির্দিষ্ট প্রসঙ্গে পুরোপুরি কার্যকর করা হচ্ছে কিনা।
byebug
বা ব্যবহার করুনpry
আপনার কোডগুলি কার্যকর করার প্রবাহের অবস্থা সম্পর্কে আপনার কেবলমাত্র কোনও রুবি রত্ন আইআরবি ডিবাগারের দিকে যাওয়ার বিষয়ে বিবেচনা করা উচিত pry
বা byebug
আপনি যেখানে মৃত্যুদন্ড কার্যকর করার পথের মধ্যে অবজেক্টগুলির স্থানে আরও গভীরভাবে আবিষ্কার করতে পারেন।
আপনি যখন কোনও সমস্যা ডিবাগ করার চেষ্টা করছেন, তখন সর্বদা ভাল পরামর্শটি হ'ল: @ # $ ত্রুটি বার্তাটি পড়ুন (আরটিএফএম)
এর অর্থ হ'ল ত্রুটি বার্তাগুলি সাবধানতার সাথে এবং সম্পূর্ণরূপে অভিনয়ের আগে পড়া যাতে আপনি বুঝতে চান এটি আপনাকে কী বলার চেষ্টা করছে। আপনি যখন ডিবাগ করেন, ত্রুটি বার্তাটি পড়ার সময় এই ক্রমে নিম্নলিখিত মানসিক প্রশ্নগুলি জিজ্ঞাসা করুন :
nil
? ) স্ট্যাক ট্রেসগুলিতে আপনার প্রকল্প থেকে আগত কোডের লাইনগুলিতে বিশেষ মনোযোগ দিন (উদাহরণস্বরূপ লাইনগুলি app/...
যদি আপনি রিয়েলগুলি ব্যবহার করছেন তবে শুরু হয় )। 99% সময় আপনার নিজের কোড নিয়েই থাকে।
এই ক্রমের ব্যাখ্যা কেন গুরুত্বপূর্ণ তা চিত্রিত করার জন্য ...
আপনি কোডটি কার্যকর করেন যা কোনও সময় এইরূপে কার্যকর হয়:
@foo = Foo.new
...
@foo.bar
এবং আপনি একটি ত্রুটি পাবেন যা জানিয়েছে:
undefined method "bar" for Nil:nilClass
নতুনদের এই ত্রুটি দেখতে এবং মনে যে পদ্ধতি bar
হয় অনির্দিষ্ট । এটা না। এই ত্রুটিতে গুরুত্বপূর্ণ বিষয়টি হ'ল:
for Nil:nilClass
for Nil:nilClass
মানে @foo
নীল! @foo
একটি নয় Foo
উদাহরণস্বরূপ পরিবর্তনশীল! আপনার একটি জিনিস যা তা Nil
। আপনি যখন এই ত্রুটিটি দেখেন, কেবল রুবি আপনাকে জানাতে চেষ্টা করে যে bar
ক্লাসের অবজেক্টগুলির জন্য পদ্ধতিটি বিদ্যমান নেই Nil
। (ভাল ভাল! যেহেতু আমরা ক্লাসের কোনও অবজেক্টের জন্য কোনও পদ্ধতি ব্যবহারের চেষ্টা করছি Foo
না Nil
)।
দুর্ভাগ্যক্রমে, কীভাবে এই ত্রুটিটি লিখিত হয় ( undefined method "bar" for Nil:nilClass
) এর কারণে এই ত্রুটিটি থাকার সাথে জড়িত bar
হওয়া ভেবে ভ্রান্ত হয়ে পড়ে undefined
। সাবধানে না পড়লে এই ত্রুটিটি প্রাথমিকভাবে ভুলটির সাথে bar
পদ্ধতিটির বিশদটি খনন করতে বাধ্য করে Foo
, ত্রুটির অংশটি পুরোপুরি অনুপস্থিত যা ইঙ্গিত দেয় যে বস্তুটি ভুল শ্রেণীর (এই ক্ষেত্রে: শূন্য)। এটি সম্পূর্ণরূপে ত্রুটি বার্তাগুলি পড়ে সহজেই এড়ানো যায় এমন একটি ভুল।
সারসংক্ষেপ:
কোনও ডিবাগিং শুরু করার আগে সর্বদা সতর্কতার সাথে পুরো ত্রুটি বার্তাটি পড়ুন । এর অর্থ: সর্বদা ত্রুটি বার্তায় কোনও শ্রেণীর শ্রেণীর ধরণটি প্রথমে পরীক্ষা করুন , তারপরে এর পদ্ধতিগুলি , আপনি কোনও স্ট্যাকট্রেস বা কোডের লাইনটিতে স্যুথিং শুরু করার আগে যেখানে আপনার মনে হয় ত্রুটি ঘটতে পারে। এই 5 সেকেন্ড আপনাকে হতাশার 5 ঘন্টা বাঁচাতে পারে।
tl; dr: মুদ্রণ লগগুলিতে স্কুইন্ট করবেন না: ব্যতিক্রম বাড়াতে বা পরিবর্তে একটি আইআরবি ডিবাগার ব্যবহার করুন। ডিবাগ করার আগে সাবধানে ত্রুটিগুলি পড়ে খরগোশের গর্তগুলি এড়িয়ে চলুন।
যখনই সম্ভব ভেরিয়েবলগুলি মুদ্রণ করুন। (একে প্রিন্টফ ডিবাগিং বলা হয়) আপনি এটি চালিয়ে করতে পারেন
STDERR.puts x.inspect
অথবা
STDERR.puts "Variable x is #{x.inspect}"
আপনি যদি এটিকে টাইপ করা সহজ করতে চান তবে আপনি উদাহরণ রত্নটি ব্যবহার করতে পারেন ।
সতর্কতা চালু করুন। আপনি যদি দৌড়তে থাকেন ruby
তবে এটি -w
সুইচ দিয়ে চালান (উদাঃ ruby -w script.rb
)। যদি আপনি এটি আইআরবি থেকে চালাচ্ছেন, এবং আপনি ১.৯.২০ এর আগে রুবীর একটি সংস্করণ ব্যবহার করছেন $VERBOSE = true
তবে আপনার সেশনটির শুরুতে টাইপ করুন। আপনি যদি কোনও উদাহরণ ভেরিয়েবলের ভুল বানান করে থাকেন, একবার সতর্কতা শুরু হলে আপনি পাবেন
সতর্কতা: দৃষ্টান্ত পরিবর্তনশীল
@valeus
আরম্ভ হয় না
বাইনারি চপের ধারণাটি বুঝুন (নিম্নোক্ত উক্তিটি একটি এগ্রিল ডেভেলপারের অনুশীলনসমূহ থেকে )
সমস্যার জায়গাকে অর্ধেক ভাগ করুন এবং দেখুন কোন অর্ধেকটিতে সমস্যা রয়েছে contains তারপরে সেই অর্ধেকটি আবার ভাগ করুন এবং পুনরাবৃত্তি করুন।
আপনি যদি বাইনারি চপ দিয়ে সফল হন তবে আপনি দেখতে পাবেন যে একটি একক লাইন রয়েছে যা আপনি যা আশা করেন তা করেন না। উদাহরণ স্বরূপ
[1, 2, 3].include?([1,2])
false
আপনি যদি ভাবেন যে এটি ফিরে আসবে তার একটি মান দেয় true
। সেক্ষেত্রে আপনি ডকুমেন্টেশনটি দেখতে চাইতে পারেন। ডকুমেন্টেশনের জন্য ওয়েবসাইটগুলিতে রুবি ডক.অর্গ.অর্গ বা এপিআইডক অন্তর্ভুক্ত রয়েছে । পরেরটির ক্ষেত্রে, আপনি টাইপ চাই include?
উপরের ডান দিকের কোণায় কাছাকাছি বিবর্ধক কাচ পাশে চয়ন include?
যা হয়েছে Array
তা নীচে (আপনি কোন ক্লাসে জানি না যদি [1, 2, 3]
, প্রকার [1, 2, 3].class
irb মধ্যে), এবং আপনার সাথে যোগাযোগ অন্তর্ভুক্ত? (অ্যারে) , যা এটি কী করে তা বর্ণনা করে।
তবে, যদি ডকুমেন্টেশনটি সহায়তা না করে, আপনি একটি নির্দিষ্ট লাইন কীভাবে করা উচিত নয় সে বিষয়ে কোনও প্রশ্ন জিজ্ঞাসা করতে পারেন তবে পুরো স্ক্রিপ্টটি কী করছে না তার চেয়ে আপনি খুব ভাল উত্তর পেতে পারেন more এটা করা উচিত।
সমস্ত জিনিস মুছে দেয়
2017 ^ _ ^ এ আপনাকে স্বাগতম ^
ঠিক আছে, সুতরাং আপনি যদি নতুন আইডিই চেষ্টা করার বিরোধিতা না করেন তবে নিচের দিকে নিখরচায় করতে পারেন ।
launch.json
ব্যবহার করতে "cwd"
এবং এবং "program"
ক্ষেত্র ব্যবহার {workspaceRoot}
ম্যাক্রো"showDebuggerOutput"
এবং সেট করুনtrue
"debug.allowBreakpointsEverywhere": true
vscode
; এটি ভিজ্যুয়াল স্টুডিওর মতো নয় । এটি বিনামূল্যে, হালকা ওজন এবং সাধারণভাবে ইতিবাচকভাবে বিবেচিত।View->Extensions
.vscode
এবং সেখানে আমরা একটি ফাইল করব launch.json
যেখানে আমরা কিছু কনফিগার বিকল্পগুলি সংরক্ষণ করব।
launch.json
সামগ্রী
{
"version": "0.2.0",
"configurations":
[
{
"name": "Debug Local File",
"type":"Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "{workspaceRoot}/../script_name.rb",
"args": [],
"showDebuggerOutput": true
}
]
}
File->Preferences->Settings
(বা Ctrl,) নির্বাচন করব এবং আপনি Debug
বিভাগে পৌঁছা পর্যন্ত স্ক্রোল করব । এটি প্রসারিত করুন এবং নামক একটি ক্ষেত্রটি সন্ধান "debug.allowBreakpointsEverywhere"
করুন - সেই ক্ষেত্রটি নির্বাচন করুন এবং ছোট পেন্সিল দেখাচ্ছে আইকনে ক্লিক করুন এবং সেট করুন true
।এই সমস্ত মজাদার স্টাফ করার পরে, আপনার 2017 সালের মাঝামাঝি এবং গাer় থিমের জন্য অনুরূপ একটি মেনুতে ব্রেকপয়েন্টগুলি সেট করতে এবং ডিবাগ করতে সক্ষম হওয়া উচিত: আপনার কল স্ট্যাক, ভেরিয়েবল ভিউয়ার ইত্যাদির মতো সমস্ত মজাদার জিনিস সহ break
বৃহত্তম পিআইটিএ হ'ল 1) প্রাক-রিক্স ইনস্টল করা এবং 2) .vscode\launch.json
ফাইলটি কনফিগার করার জন্য মনে রাখা । কেবলমাত্র # 2 এর ভবিষ্যতের প্রকল্পগুলিতে কোনও লাগেজ যুক্ত করা উচিত এবং আপনি উপরের তালিকাভুক্ত জেনেরিক পর্যায়ে কনফিগার করতে পারবেন। সম্ভবত আরও সাধারণ কনফিগারেশন অবস্থান রয়েছে, তবে আমি আমার মাথার উপরের অংশটি জানি না।
আমাদের কোডটি ডিবাগ করার জন্য এই মুহুর্তে সঠিক সরঞ্জামটি বাছাই করার জন্য, আমি এই ভিডিওটিকে দৃ strongly়ভাবে প্রস্তাব দিচ্ছি।
https://www.youtube.com/watch?v=GwgF8GcynV0
ব্যক্তিগতভাবে, আমি এই ভিডিওতে দুটি বড় বিষয় হাইলাইট করব।
এটাই আমার দুই সেন্ট!
অন্যান্য সমস্ত উত্তর ইতিমধ্যে প্রায় সমস্ত কিছু দেয় ... কেবলমাত্র একটি সামান্য সংযোজন।
আপনি যদি আরও কিছু আইডিই-জাতীয় ডিবাগার (নন-সিএমআই) চান এবং ভিমকে সম্পাদক হিসাবে ব্যবহার করতে ভয় পান না, তবে আমি এর জন্য ভিম রুবি ডিবাগার প্লাগইনটি প্রস্তাব করছি।
এর ডকুমেন্টেশনটি বেশ সোজা, সুতরাং লিঙ্কটি অনুসরণ করুন এবং দেখুন। সংক্ষেপে, এটি আপনাকে সম্পাদকের বর্তমান লাইনে ব্রেকপয়েন্ট নির্ধারণ করতে, বিরতিতে নিফটি উইন্ডোতে স্থানীয় ভেরিয়েবলগুলি দেখতে, উপরে / উপরে পদক্ষেপ - প্রায় সমস্ত সাধারণ ডিবাগার বৈশিষ্ট্যগুলিকে অনুমতি দেয়।
আমার কাছে রেলস অ্যাপটি ডিবাগ করার জন্য এই ভিআইএম ডিবাগারটি ব্যবহার করা বেশ উপভোগ্য ছিল যদিও রেলের সমৃদ্ধ লগার ক্ষমতাগুলি এর প্রয়োজনীয়তা প্রায় শেষ করে দেয়।
আমি সবেমাত্র এই রত্নটি আবিষ্কার করেছি (এমআরআই রুবি ২.০++ এর জন্য প্রাইকে একটি ডিবাগারে পরিণত করে)
https://github.com/deivid-rodriguez/pry-byebug
এর সাথে ইনস্টল করুন:
gem install pry-byebug
তারপরে ঠিক মতো ব্যবহার করুন pry
, আপনি যে রেখাটি ভাঙতে চান তাতে চিহ্নিত করুন:
require 'pry'; binding.pry
ভিন্ন ভ্যানিলা কিছুর মধ্যে উঁকি মারা যাইহোক, এই মণি যেমন কিছু কি, GDB মত গৌণ কমান্ড রয়েছে next
, step
এবং break
:
break SomeClass#run # Break at the start of `SomeClass#run`.
break Foo#bar if baz? # Break at `Foo#bar` only if `baz?`.
break app/models/user.rb:15 # Break at line 15 in user.rb.
break 14 # Break at line 14 in the current file.
-w
(সতর্কতা) পতাকাটি চালু করুনirb
এটি একটি দুর্দান্ত শুরুর জায়গা যুক্ত করব। ছোট প্রশ্নবিদ্ধ অংশগুলির সাথে আইআরবি ব্যবহার করার চেষ্টা করুন। আমি রুবি-ডিবাগ (রুবি ১.৯++ এর জন্য রুবি-ডিবাগ ১৯) পছন্দ করি কারণ এটি চলমান প্রোগ্রামটি থামানো, ভেরিয়েবলগুলি পরীক্ষা করে নেওয়া, আইআরবিতে ফেলে রাখা এবং তারপরে চালিয়ে যাওয়া সহজ করে তোলে।
রুবি শেল স্ক্রিপ্টটি সহজেই ডিবাগ করতে, এর প্রথম লাইনটি এখান থেকে পরিবর্তন করুন:
#!/usr/bin/env ruby
প্রতি:
#!/usr/bin/env ruby -rdebug
তারপরে প্রতিবার যখন ডিবাগার কনসোল প্রদর্শিত হয়, আপনি চয়ন করতে পারেন:
c
চালিয়ে যাও (পরবর্তী ব্যতিক্রম, ব্রেকপয়েন্ট বা এর সাথে লাইন debugger
:),n
পরবর্তী লাইনের জন্য,w
/ where
ফ্রেম প্রদর্শন / কল স্ট্যাক,l
বর্তমান কোডটি দেখাতে,cat
ক্যাপপয়েন্টগুলি দেখানোর জন্য।h
আরও সাহায্যের জন্য।আরও দেখুন: রুবি-ডিবাগের সাথে ডিবাগিং , রুবি-ডিবাগ রত্নের কী শর্টকাট ।
স্ক্রিপ্টটি কেবল স্তব্ধ হয়ে যায় এবং আপনার একটি ব্যাকট্রেস প্রয়োজন হলে lldb
/ ব্যবহার করার চেষ্টা করুন gdb
:
echo 'call (void)rb_backtrace()' | lldb -p $(pgrep -nf ruby)
এবং তারপরে আপনার প্রক্রিয়াটির অগ্রভাগ পরীক্ষা করুন।
আরও ভাল কাজ করে lldb
সঙ্গে প্রতিস্থাপন gdb
। sudo
অ-মালিকানাধীন প্রক্রিয়াটি ডিবাগ করতে প্রিফিক্স ।
রুবি ২.৪.০ অনুসারে, যে কোনও রুবি প্রোগ্রামের মাঝখানে আইআরবি রিপল অধিবেশন শুরু করা সহজ। আপনি যে প্রোগ্রামটি ডিবাগ করতে চান সেই বিন্দুতে এই লাইনগুলি রাখুন:
require 'irb'
binding.irb
আপনি রুবি কোড চালাতে এবং স্থানীয় ভেরিয়েবলগুলি মুদ্রণ করতে পারেন। quit
সিআরটিএল + ডি টাইপ করুন বা আরপিএল শেষ করতে এবং রুবি প্রোগ্রামটি চালিয়ে যেতে দিন।
এছাড়াও আপনি ব্যবহার করতে পারেন puts
এবং p
আপনার প্রোগ্রাম থেকে মানগুলি প্রিন্ট আউট করতে যেমন চলছে।
আপনি যদি রুবিমাইন ব্যবহার করছেন , রুবি স্ক্রিপ্টগুলি ডিবাগ করা সহজ এবং সোজা।
মনে করুন আপনার কাছে একটি রুবি স্ক্রিপ্ট হ্যালো_ওয়ার্ল্ড.আরবি রয়েছে
নীচের মত 6 লাইনে একটি ব্রেকপয়েন্ট সেট করুন।
এখন আপনি স্ক্রিপ্টটি চালাতে ডিবাগারটি শুরু করতে পারেন:
তারপরে যখন এক্সিকিউশন কোনও ব্রেকপয়েন্টে হিট হয়, আপনি ভেরিয়েবল ইত্যাদি পরিদর্শন করতে সক্ষম হবেন
প্রিন্টফ ডিবাগিং
ডিবাগিং কৌশলগুলি নিয়ে সর্বদা একটি বিতর্ক ছিল, কিছু লোক মুদ্রণ বিবৃতি দিয়ে ডিবাগ করতে পছন্দ করে, আবার কেউ কেউ ডিবাগারের সাথে গভীর খনন করতে পছন্দ করে।
আমি আপনাকে উভয় পদ্ধতির চেষ্টা করার পরামর্শ দিচ্ছি।
প্রকৃতপক্ষে পুরানো ইউনিক্সের একজন সম্প্রতি বলেছিলেন, প্রিন্টফ ডিবাগিংটি তার জন্য কিছু পর্যায়ে যাওয়ার দ্রুততর উপায় ছিল।
তবে আপনি যদি কোনও চাকরিতে নতুন হন এবং কোডের একটি বড় অঙ্ক বুঝতে হবে তবে সেখানে কিছুটা ব্রেকপয়েন্ট রেখে এখানে কীভাবে এটি কাজ করে তা চালিয়ে যাওয়া সত্যই কার্যকর।
কোডটি বুনা কীভাবে তা আপনাকে কিছুটা বোঝার দরকার।
আপনি যদি কিছু অন্যান্য লোকের সফ্টওয়্যার থেকে নতুন হন তবে এটি আপনাকে সেখান থেকে পা রাখতে সহায়তা করতে পারে।
তারা এটিকে চালাক উপায়ে সাজিয়েছে কিনা তা আপনি খুব শীঘ্রই খুঁজে পাবেন বা যদি তা কেবল বিষ্ঠা।
ঠিক আছে, রুবি স্ট্যান্ডার্ড লিবিবের একটি সহজে জিডিবি -র মতো কনসোল ডিবাগার ব্যবহার করা যায়: http://ruby-doc.org/stdlib-2.1.0/libdoc/debug/rdoc/DEBUGGER__.html কোনও অতিরিক্ত রত্ন ইনস্টল করার দরকার নেই। রেল স্ক্রিপ্টগুলিও সেভাবে ডিবাগ করা যায়।
যেমন
def say(word)
require 'debug'
puts word
end
সমস্ত ডিবাগারের মা প্লেইন পুরানো প্রিন্ট স্ক্রিন। বেশিরভাগ সময়, আপনি সম্ভবত কিছু সাধারণ বিষয়গুলিই পরিদর্শন করতে চান, একটি দ্রুত এবং সহজ উপায় এরকম:
@result = fetch_result
p "--------------------------"
p @result
এটি সহজ শনাক্তকরণের জন্য সামনে একটি লাইনের সাহায্যে @ ফলাফলের সামগ্রীগুলি মুদ্রণ করবে।
বোনাস যদি আপনি রেলের মতো অটোল্যাড / পুনরায় লোড সক্ষম কাঠামো ব্যবহার করেন তবে আপনাকে নিজের অ্যাপ্লিকেশনটি পুনরায় আরম্ভ করার প্রয়োজন হবে না। (ফ্রেমওয়ার্ক নির্দিষ্ট সেটিংসের কারণে আপনি যে ডিবাগিং করছেন কোডটি পুনরায় লোড করা হয়নি)
আমি এটি আমার জন্য ব্যবহারের 90% ক্ষেত্রে কাজ করে দেখি। আপনি রুবি-ডিবাগও ব্যবহার করতে পারেন, তবে আমি এটি বেশিরভাগ সময় ওভারকিলকে পাই।
বিভিন্ন বৈশিষ্ট্যযুক্ত অনেকগুলি ডিবাগার রয়েছে যার ভিত্তিতে আপনি পছন্দ করেন। আমার অগ্রাধিকারগুলি পিআর-মুভসে সন্তুষ্ট ছিল যা ছিল: