উত্তর:
হ্যাঁ! একটি পাইথন ডিবাগার আছে pdb
কেবল এটি করার জন্য!
বা pdb
ব্যবহার করে আপনি পাইথন প্রোগ্রাম চালু করতে পারেন ।pdb myscript.py
python -m pdb myscript.py
তারপরে কয়েকটি কমান্ড রয়েছে যা আপনি ইস্যু করতে পারবেন যা pdb
পৃষ্ঠায় নথিবদ্ধ ।
কিছু দরকারী মনে রাখবেন:
b
: একটি ব্রেকপয়েন্ট নির্ধারণ করুনc
: আপনি ব্রেকপয়েন্টে চাপ না দেওয়া পর্যন্ত ডিবাগিং চালিয়ে যানs
: কোড দিয়ে পদক্ষেপn
: কোড পরবর্তী লাইনে যেতেl
: বর্তমান ফাইলের জন্য উত্স কোডের তালিকা তৈরি করুন (ডিফল্ট: 11 টি লাইন কার্যকর করা হচ্ছে সহ)u
: একটি স্ট্যাক ফ্রেম নেভিগেটd
: একটি স্ট্যাক ফ্রেম নেভিগেটp
: বর্তমান প্রসঙ্গে একটি অভিব্যক্তির মান মুদ্রণ করতেআপনি যদি কমান্ড লাইন ডিবাগারটি ব্যবহার করতে না চান, পাইদেব , উইং আইডিই বা পাইচার্মের মতো কিছু আইডিইতে জিইউআই ডিবাগার রয়েছে। উইং এবং পাইচার্ম বাণিজ্যিক পণ্য, তবে উইংয়ের একটি বিনামূল্যে "ব্যক্তিগত" সংস্করণ রয়েছে এবং পাইচার্মের একটি মুক্ত সম্প্রদায় সংস্করণ রয়েছে।
pudb
জন্য দুর্দান্ত। এছাড়াওpydev
pdb
একটি কমান্ড লাইন সরঞ্জাম নয়। এটি ব্যবহার করতে, ব্যবহার করুন python -m pdb your_script.py
।
প্রথম পদক্ষেপটি ডিবাগিং মোডে প্রবেশ করার জন্য পাইথন দোভাষী তৈরি করা।
উ: কমান্ড লাইন থেকে
পাইথন ইন্টারপ্রেটারের কমান্ড লাইন থেকে চলমান বেশ সোজা পথ forward
$ python -m pdb scriptName.py
> .../pdb_script.py(7)<module>()
-> """
(Pdb)
বি। দোভাষীর মধ্যে
মডিউলগুলির প্রারম্ভিক সংস্করণগুলি বিকাশ করার সময় এবং এটি আরও পুনরাবৃত্তভাবে পরীক্ষা করার জন্য।
$ python
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdb_script
>>> import pdb
>>> pdb.run('pdb_script.MyObj(5).go()')
> <string>(1)<module>()
(Pdb)
সি আপনার প্রোগ্রামের মধ্যে থেকে
একটি বড় প্রকল্প এবং দীর্ঘ-চলমান মডিউলটির জন্য, আমদানি পিডিবি এবং সেট_ট্রেস () এর ব্যবহার করে প্রোগ্রামের অভ্যন্তর থেকে ডিবাগিং শুরু করতে পারেন :
#!/usr/bin/env python
# encoding: utf-8
#
import pdb
class MyObj(object):
count = 5
def __init__(self):
self.count= 9
def go(self):
for i in range(self.count):
pdb.set_trace()
print i
return
if __name__ == '__main__':
MyObj(5).go()
আরও অভ্যন্তরীণ দিকে যেতে ধাপে ধাপে ডিবাগিং
পরবর্তী বিবৃতিটি "এন" (পরবর্তী) দিয়ে কার্যকর করুন
ENTER দিয়ে… শেষ ডিবাগিং কমান্ডটি পুনরাবৃত্তি করা হচ্ছে
"কিউ" দিয়ে (প্রস্থান করুন) সব ছেড়ে চলেছে
ভেরিয়েবলের মান মুদ্রণ করা হচ্ছে ... "পি" দিয়ে (মুদ্রণ)
ক) প
(পিডিবি) প্রম্পটটি বন্ধ করা হচ্ছে ... সাথে "সি" (চালিয়ে যান)
"এল" (তালিকা) সহ আপনি কোথায় আছেন তা দেখে
সাবরুটাইনগুলিতে পদক্ষেপ … "গুলি" দিয়ে (পদক্ষেপে)
অবিরত ... তবে কেবলমাত্র বর্তমান সাবরুটিনের শেষে ... "আর" দিয়ে (প্রত্যাবর্তন)
একটি নতুন মান নির্ধারণ করুন
ক) ! খ = "বি"
একটি ব্রেকপয়েন্ট সেট করুন
ক) ব্রেক লিনেনবার
খ) বিরতি ফাংশন নাম
গ) ফাইলের নাম বিরতি: লিনেনম্বার
অস্থায়ী ব্রেকপয়েন্ট
ক) ট্রিব্রাক লিনেনম্বার
শর্তাধীন ব্রেকপয়েন্ট
ক) ভাঙ্গা লিনেনমার, শর্ত
দ্রষ্টব্য: ** এই সমস্ত কমান্ডগুলি ** পিডিবি থেকে কার্যকর করা উচিত
গভীর জ্ঞানের জন্য, দেখুন: -
https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
পাইথনে 'পিডিবি' নামে একটি মডিউল রয়েছে। আপনার অজগর স্ক্রিপ্টের শীর্ষে do
import pdb
pdb.set_trace()
এবং আপনি ডিবাগিং মোডে প্রবেশ করবেন। আপনি 'জিডিবি' ডিবাগারটি কী করবেন তার অনুরূপ পরবর্তী পংক্তিতে 's', পদক্ষেপে 'এন' ব্যবহার করতে পারেন।
পাইথন ৩.7 থেকে শুরু করে, আপনি breakpoint()
ডিবাগারে প্রবেশের জন্য বিল্ট-ইন ফাংশনটি ব্যবহার করতে পারেন :
foo()
breakpoint() # drop into the debugger at this point
bar()
ডিফল্টরূপে, breakpoint()
আমদানি করে pdb
এবং কল করবে pdb.set_trace()
। তবে আপনি sys.breakpointhook()
পরিবেশের পরিবর্তনশীলের মাধ্যমে এবং ডিবাগিং আচরণটি নিয়ন্ত্রণ করতে পারেন PYTHONBREAKPOINT
।
আরও তথ্যের জন্য পিইপি 553 দেখুন ।
breakpoint
আমি উত্তেজিত ছিলাম। তবে আমি শিখেছি যে এটি মূলত কেবল একটি শর্টকাট import pdb; pdb.set_trace()
এবং এটি আমাকে দু: খিত করে। পাইথন ডেভস: অনুগ্রহ করে প্রাসঙ্গিক লাইন,
ipdb নিম্নলিখিত আইডিথ উন্নততা প্রদান করে আইপিথন কার্যকারিতা যুক্ত করে:
অনেকটা পিডিজির মতো, জিডিবির তুলনায় আইপিডিবি নিখুঁত এবং সম্পূর্ণ প্রাথমিক থেকে এখনও অনেক দূরে, তবে এটি ইতিমধ্যে পিডিবি-র তুলনায় একটি বিশাল উন্নতি।
ব্যবহারের সাথে সাদৃশ্য রয়েছে pdb
, কেবল এটির সাথে এটি ইনস্টল করুন:
python3 -m pip install --user ipdb
এবং তারপরে যে লাইন থেকে আপনি ডিবাগটি সরিয়ে নিতে চান তাতে যুক্ত করুন:
__import__('ipdb').set_trace(context=21)
আপনি সম্ভবত আপনার সম্পাদক থেকে এর জন্য একটি শর্টকাট যুক্ত করতে চান, যেমন আমার কাছে থাকা ভিম স্নিপমেট :
snippet ipd
__import__('ipdb').set_trace(context=21)
সুতরাং আমি ঠিক টাইপ করতে পারি ipd<tab>
এবং এটি ব্রেকপয়েন্টে প্রসারিত হয়। তারপরে এটি মুছে ফেলা সহজ dd
কারণ যেহেতু সবকিছুই একটি লাইনে থাকে।
context=21
এখানে বর্ণিত প্রসঙ্গে লাইনের সংখ্যা বৃদ্ধি করে: আমি কীভাবে আইপিডিবিকে ডিবাগ করার সময় প্রসঙ্গের আরও লাইন দেখাতে পারি?
বিকল্পভাবে, আপনি শুরু থেকে প্রোগ্রামগুলি ডিবাগ করতে পারেন:
ipdb3 main.py
তবে আপনি সাধারণত এটি করতে চান না কারণ:
অথবা বিকল্প হিসাবে, কাঁচা পিডিবি ৩.২+ এর মতো আপনি কমান্ড লাইন থেকে কিছু ব্রেকপয়েন্ট সেট করতে পারেন:
ipdb3 -c 'b 12' -c 'b myfunc' ~/test/a.py
যদিও -c c
কোনও কারণে ভেঙে গেছে: https://github.com/gotcha/ipdb/issues/156
python -m module
ডিবাগিং এ জিজ্ঞাসা করা হয়েছে: কমান্ড লাইন থেকে পাইথন-এম দিয়ে চালিত পাইথন মডিউলটি কীভাবে ডিবাগ করবেন? এবং পাইথন যেহেতু 3.7 এর মাধ্যমে করা যায়:
python -m pdb -m my_module
জিডিবির তুলনায় পিডিবি এবং আইপিডিবি উভয়ের গুরুতর অনুপস্থিত বৈশিষ্ট্য:
আইপিডিবি নির্দিষ্ট বিরক্তি:
উবুন্টু 16.04, আইপিডিবি == 0.11, পাইথন 3.5.3।
breakpoint()
আজকাল পদ্ধতি রয়েছে , যা প্রতিস্থাপন করে import pdb; pdb.set_trace()
।
এছাড়া রয়েছে বেশ কিছু নতুন বৈশিষ্ট্য যেমন সম্ভব এনভায়রনমেন্ট ভেরিয়েবল হিসেবে।
আপনি যদি ইন্টিগ্রেটেড ডিবাগার সহ কোনও আইডিই চান তবে পাইস্ক্রিপ্টারটি চেষ্টা করুন ।
https://wiki.python.org/moin/PythonDebuggingTools
pdb পিডিবির জন্য একটি ভাল ড্রপ-ইন প্রতিস্থাপন
পাইথন টিউটর একটি অনলাইন একক-পদক্ষেপযুক্ত ডিবাগার যা নতুনদের জন্য বোঝানো হয়। আপনি সম্পাদনা পৃষ্ঠায় কোড রাখতে পারেন এবং এটি চালু করতে "ভিজ্যুয়ালাইজ এক্সিকিউশন" ক্লিক করুন।
অন্যান্য জিনিসগুলির মধ্যে এটি সমর্থন করে:
তবে এটি অনেক কিছুই সমর্থন করে না , উদাহরণস্বরূপ:
io.StringIO
এবং io.BytesIO
পরিবর্তে: ডেমোঅজগর কোডের মাধ্যমে প্রোগ্রামগতভাবে পদক্ষেপ এবং ট্রেসিং সম্ভব (এবং এটি সহজ!)। এ sys.settrace () আরো বিস্তারিত জানার জন্য ডকুমেন্টেশন। এছাড়াও এখানে একটি টিউটোরিয়াল আপনাকে শুরু করতে হয়।
PTVS সঙ্গে ভিসুয়াল স্টুডিও আপনার জন্য একটি বিকল্প হতে পারে: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
পাইচর্ম পাইথনের আইডিই যা একটি ডিবাগারকে অন্তর্ভুক্ত করে। কোডের মাধ্যমে পদক্ষেপে পাইচার্মের ডিবাগারটি ব্যবহার করার বিষয়ে একটি পরিচিতির জন্য এই ইউটিউব ভিডিওটি দেখুন।
পাইচার্ম টিউটোরিয়াল - পাইচর্ম ব্যবহার করে পাইগন কোডটি ডিবাগ করুন
দ্রষ্টব্য: এটি সমর্থন বা পর্যালোচনা করার উদ্দেশ্যে নয়। পাইচার্ম একটি বাণিজ্যিক পণ্য যার জন্য একের জন্য অর্থ প্রদান করা প্রয়োজন, তবে সংস্থাটি শিক্ষার্থী এবং শিক্ষকদের একটি বিনামূল্যে লাইসেন্স প্রদান করে, পাশাপাশি একটি "লাইটওয়েট" সম্প্রদায় সংস্করণ যা নিখরচায় এবং মুক্ত-উত্স।