Debugging in python

က်ြန္ေတာ္တုိ့ဒီေန့ေတာ့ python programတစ္ပုဒ္မွာ error ေတြ ဘယ္လုိ debug လုပ္သင့္တယ္ဆုိတဲ့ နည္းေလးေတြကုိျပေပးသြားပါမယ္။က်ြန္ေတာ္တုိ့ အျမဲ codeေတြေရးၾကတယ္ ERROR ၾကည့္ခ်င္ရင္ print() နဲ့ထုတ္ၾကည့္ၾကတာမ်ားတယ္  စေလ့လာတဲ့အခါမွာ။တကယ္ေတာ့ မေကာင္းတဲ့ အက်င့္ထဲမွာ ပါတယ္လုိ့လဲ ေျပာလုိ့မရပါဘူး။ဒါေပမဲ့ ဒီလုိေလးေတြ လုပ္မယ္ဆုိ ပိုေကာင္းတယ္လုိ့ ေျပာခ်င္တာပါ။

အဲ့ေတာ့ က်ြန္ေတာ္တုိ့စလုိက္ရေအာင္

Logging

က်ြန္ေတာ္တုိ့ logging ကေတာ့ မ်ိုးစုံသုံးလုိ့ရပါတယ္။ဒီမွာေတာ့ Error ျပခ်င္တဲ့အခါ ဘယ္လုိသုံးမလဲဆုိတာကုိ ေလ့လာရေအာင္။

က်ြန္ေတာ္တုိ့ logging မွာေတာ့ message အမ်ိုဳးမ်ိဳးထုတ္လုိ့ရတယ္ဆုိတာ အေပါ္က example ကုိၾကည့္ရင္ေတြ့မွာပါ။အဲ့ေတာ့ က်ြန္ေတာ္တုိ့ error message ေတြကုိ ေတာ့ logging.error ကုိသုံးျပီးျပပါတယ္။

က်ြန္ေတာ္တုိ့ logging ရဲ့အားသာခ်က္က configuration လုပ္လုိ့ရျပီး error message ေတြကုိေပါ္ေစခ်င္သလုိျဖစ္ေစ file ထဲကုိ ေရးထည့္တာမ်ိဳးကုိ အလြယ္လုပ္လုိ့ရတာပါပဲ။logging ရဲံ config syntax ကိုၾကည့္မယ္ဆုိေအာက္ကတုိင္းပါပဲ။

logging.basicConfig() ထဲမွာ က်ြန္ေတာ္တုိ့ configuration ခ်ခ်င္တာေတြကုိထည့္ေပးက်ပါတယ္။ဒီေနရာမွာေတာ့ levelနဲ့format ကေတာ့ ေပါ္ခ်င္တဲ့ပုံစံပါ။အေပါ္က exampleကိုrunလုိက္မယ္ဆုိ

format ခ်ထားတာေၾကာင့္ အဲ့လုိပုံစံေလးေပါ္လာပါတယ္။ဒါဆုိက်ြန္ေတာ္ေျပာထားတဲ့ fileထဲကုိေရးထည့္မယ္ဆုိတဲ့ကိစလာပါျပီ။

က်ြန္ေတ္ာတုိ့ filename ေလး သတ္မွတ္ေပးလိုက္ယံုပါပဲ။ဒါေလးပါပဲ။က်ြန္ေတ္ာတုိ့ output file ကိုၾကည့္လုိက္မယ္ဆုိရင္ေတာ့

က်ြန္ေတာ္တုိ့ exception handler ေတြနဲ့ေရးမယ္ဆုိလဲ

က်ြန္ေတ္ာတုိ့မရွိတဲ့ filename ကိုေရးထည့္ျပီး ဖတ္ၾကည့္ပါတယ္။ေသခ်ာError တတ္မွာပါ။ဘယ္လုိသုံးလုိ့ရတယ္ဆုိတာေလးျပခ်င္လုိ့ပါ။

က်ြန္ေတာ္တုိ့ run လုိက္ေတာ့ အေပါ္ကတုိင္းေတြ့ရမွာပါ။ဆက္ျပီးတျခားပုံစံေတြေလ့လာရေအာင္။

Raise KeyWord

raise keyword သုံးတာကေတာ့ ရုိးရွင္းပါတယ္။ေရးပုံကေတာ့

ဒါမ်ိဳးပုံစံေလးပါပဲ။Example အေနနဲ့ေတာ့

က်ြန္ေတာ္တုိ့ ေအာက္ဆုံးက raise လုိ့ေရးေပးလုိက္တာနဲ့ အေပါ္က exception ကုိထုတ္ျပပါတယ္။outputကေတာ့

handler မသုံးဘူးဆုိလဲ ရုိးရုိးေလးေရးယံုပါပဲ။

Assert

က်ြန္ေတာ္တုိ့ assert ကိုေတာ့ true false ပုံစံမ်ိုးနဲ့ စစ္ျပီးသုံးၾကပါတယ္။ဥပမာ မိတ္ေဆြရဲ့ programတစ္ခုမွာ စားတဲ့ function ရွိတယ္ဆုိပါေတာ့စားတဲ့ေကာင္ ပုိင္းေျခက zeroျဖစ္လုိ့မရတာမ်ိဳး အဲ့အခါက် zero ျဖစ္ေနရင္ error ထုတ္ျပျပီး zeroမျဖစ္မွဆက္လုပ္ေစတဲ့ပုံစံမ်ိုးေတြမွာသုံးပါတယ္။

assert ကေတာ့ ေအာက္ပါတုိင္းေရးပါတယ္

assert က conditionပဲေရးလုိ့ရေပမယ့္ error messageကိုထည့္ေစခ်င္လုိ့ ျပလုိက္တာပါ။က်ြန္ေတာ္တုိ့ ၆ဘာသာေပါင္းေပးတဲ့ function ေလးေရးၾကည့္ရေအာင္

အဲ့ေတာ့ len(marks) == 6 ဆုိတဲ့ condition သာမေျပလည္ဘူးဆုိ ေနာက္က Error message ကုိထုတ္ျပမွာပါ။ဒီမွာ က်ြန္ေတာ္တုိ့ list မွာ ၄ဘာသာ ပဲထည့္ထားတာေတြ့မွာပါ။အဲ့ေတာ့ Error ကတတ္မွာပါပဲ။

len(marks) == 6

အကယ္လုိ့ ၆ဘာသာလုံးထည္ေ့ပးလုိက္မယ္ဆုိရင္ေတာ့ ဆက္ျပီးအလုပ္လုပ္ေစပါတယ္။

Output

က်ြန္ေတာ္ အားလုံးကုိနားလည္မယ္လို့ ယံုၾကည္ပါတယ္။ေက်းဇူးတင္ပါတယ္။

Share:
Tags:

Leave a Reply