পাইথন লাইব্রেরির 'ট্রেস' মডিউলের ফাংশন প্রোগ্রাম এক্সিকিউশনের ট্রেস এবং টীকাযুক্ত স্টেটমেন্ট কভারেজ তৈরি করে। এটিতে কলার সম্পর্ক তৈরি করে চালানোর সময় কল করা ফাংশনগুলি তালিকাভুক্ত করার ফাংশন রয়েছে৷
নিম্নলিখিত দুটি পাইথন স্ক্রিপ্ট ট্রেস মডিউলের বৈশিষ্ট্যগুলি প্রদর্শনের জন্য একটি উদাহরণ হিসাবে ব্যবহার করা হয়৷
#myfunctions.pyimport mathdef এলাকা(x):a =math.pi*math.pow(x,2) রিটার্ন adef ফ্যাক্টোরিয়াল(x):যদি x==1:রিটার্ন 1 else:রিটার্ন x*ফ্যাক্টোরিয়াল(x) -1)
#mymain.pyimport myfunctionsdef main():x =5 প্রিন্ট ('area=',myfunctions.area(x)) প্রিন্ট ('factorial=',myfunctions.factorial(x)) if __name__=='__main__' :main()
'ট্রেস' মডিউলটির একটি কমান্ড লাইন ইন্টারফেস রয়েছে। মডিউলের সমস্ত ফাংশন কমান্ড লাইন সুইচ ব্যবহার করে কল করা যেতে পারে। সবচেয়ে গুরুত্বপূর্ণ বিকল্প হল --trace যা চালানোর সাথে সাথে প্রোগ্রাম লাইনগুলি প্রদর্শন করে। নিম্নলিখিত উদাহরণে আরেকটি বিকল্প --ignore-dir ব্যবহৃত হয়. এটি ট্রেস তৈরি করার সময় নির্দিষ্ট ডিরেক্টরিগুলিকে উপেক্ষা করে৷
E:\python37>python -m ট্রেস --ignore-dir=../lib --trace mymain.py
আউটপুট
mymain.py(2):def main():mymain.py(7):if __name__=='__main__':mymain.py(8):main()--- modulename:mymain, funcname:mainmymain .py(3):x=5mymain.py(4):প্রিন্ট ('area=',myfunctions.area(x))--- মডিউলের নাম:myfunctions, funcname:areamyfunctions.py(3):a=math.pi *math.pow(x,2)myfunctions.py(4):রিটার্ন aarea=78.53981633974483mymain.py(5):প্রিন্ট ('factorial=',myfunctions.factorial(x))--- মডিউলের নাম:myfunctions, funcname:factorialmyfunctions.py(6):if x==1:myfunctions.py(9):রিটার্ন x*factorial(x-1)--- মডিউলের নাম:myfunctions, funcname:factorialmyfunctions.py(6):if x==1 :myfunctions.py(9):রিটার্ন x*factorial(x-1)--- মডিউলের নাম:myfunctions, funcname:factorialmyfunctions.py(6):যদি x==1:myfunctions.py(9):রিটার্ন x*ফ্যাক্টোরিয়াল (x-1)--- মডিউলের নাম:myfunctions, funcname:factorialmyfunctions.py(6):if x==1:myfunctions.py(9):রিটার্ন x*factorial(x-1)--- মডিউলের নাম:myfunctions, ফাংশনের নাম:factorialmyfunctions.py(6):if x==1:myfunctions.py(7):রিটার্ন 1factorial=120
--count বিকল্পটি কভার এক্সটেনশনের সাথে ব্যবহৃত প্রতিটি মডিউলের জন্য একটি ফাইল তৈরি করে।
E:\python37>python -m ট্রেস --count mymain.pyarea=78.53981633974483factorial =120
myfunctions.cover
1:import math1:def area(x):1:a =math.pi*math.pow(x,2)1:রিটার্ন a1:def ফ্যাক্টোরিয়াল(x):5:if x==1:1 :রিটার্ন 1 else:4:রিটার্ন x*ফ্যাক্টোরিয়াল(x-1)
mymain.cover
1:import myfunctions1:def main():1:x =51:print ('area=',myfunctions.area(x))1:print ('factorial=',myfunctions.factorial(x))1 :যদি __name__=='__main__':1:main()
--সারাংশ যদি –count বিকল্পটিও ব্যবহার করা হয় তাহলে বিকল্প একটি সংক্ষিপ্ত সারাংশ প্রদর্শন করে।
E:\python37>python -m ট্রেস --count --summary mymain.pyarea =78.53981633974483factorial =120lines cov% মডিউল (পাথ) 8 100% myfunctions (E:\python37\myfunctions%0)myfunctions. (mymain.py)
--ফাইল বিকল্পটি ফাইলের নাম উল্লেখ করে যেখানে একাধিক ট্রেসিং রানের উপর গণনা জমা হয়।
E:\python37>python -m trace --count --file report.txt mymain.pyarea =78.53981633974483factorial =120 Skipping counts file 'report.txt':[Errno 2] এরকম কোনো ফাইল বা ডিরেক্টরি নেই:'report। txt'E:\python37>python -m trace --count --file report.txt mymain.pyarea=78.53981633974483factorial=120
--listfuncs অপশন প্রোগ্রাম চালানোর সময় কল ফাংশন প্রদর্শন করে।
E:\python37>python -m ট্রেস --listfunc mymain.py | findstr -v importlibarea=78.53981633974483factorial=120 ফাংশন যাকে বলা হয়:ফাইলের নাম:E:\python37\lib\encodings\cp1252.py, মডিউলের নাম:cp1252, ফাংশনের নাম:ইনক্রিমেন্টাল কোড\ফিনকশন 3, ফাংশন নাম:ইকোডের নাম:ইঙ্কোডাউন, ইকোডের নাম, ইকোডের নাম। :filename:E:\python37\myfunctions.py, মডিউলের নাম:myfunctions, funcname:areafilename:E:\python37\myfunctions.py, মডিউলের নাম:myfunctions, funcname:factorialfilename:mymain.py, modulec, funname:mymain ফাইলের নাম:mymain.py, মডিউলের নাম:mymain, funcname:main
--ট্র্যাককল -লিস্ট ফাঙ্কস বিকল্পের সাথে বিকল্পটি ব্যবহার করা হয়। এটি কলিং সম্পর্ক তৈরি করে।
E:\python37>python -m trace --listfunc --trackcalls mymain.py | findstr -v importlibarea=78.53981633974483factorial=120কলিং সম্পর্ক:-> E:\python37\myfunctions.py*** E:\python37\lib\trace.py ***--> mymain.pytrace.Trace.runctx -> mymain.*** E:\python37\myfunctions.py ***myfunctions.factorial -> myfunctions.factorial** mymain.py ***mymain. -> mymain.main--> E :\python37\lib\encodings\cp1252.pymymain.main -> cp1252.IncrementalEncoder.encode--> E:\python37\myfunctions.pymymain.main -> myfunctions.areamymain.main -> myfunctions.