Debugging — Error တွေကို ဖတ်ပြီး ဖြေရှင်းနည်း
Debugging ဆိုတာ Code ထဲမှာ ဘာမှားနေသလဲဆိုတာကို ရှာဖွေပြီး ပြင်ဆင်တဲ့ လုပ်ငန်းစဉ်ပါ။ Programmer တိုင်းဟာ Error တွေနဲ့ ကြုံတွေ့ရမြဲပါ — ကွာခြားသွားတာကတော့ Error ကို ဘယ်လောက်မြန်မြန်ဆန်ဆန် ဖြေရှင်းနိုင်သလဲ ဆိုတာပါပဲ။
Python Error Traceback ကို ဖတ်နည်း
Section titled “Python Error Traceback ကို ဖတ်နည်း”Error တက်တဲ့အခါ Python က Traceback ဆိုတဲ့ Error Report ကို ပေးပါတယ်။ ဒါကို ကောင်းကောင်း ဖတ်တတ်ဖို့က အလွန် အရေးကြီးပါတယ်:
def calculate(a, b): return a / b
result = calculate(10, 0)print(result)Traceback (most recent call last): File "main.py", line 4, in <module> result = calculate(10, 0) File "main.py", line 2, in calculate return a / bZeroDivisionError: division by zeroဖတ်နည်း:
- အောက်ဆုံး Line ကို အရင်ဆုံး ကြည့်ပါ →
ZeroDivisionError: division by zero← ဒါက Error ရဲ့ အမျိုးအစားနဲ့ အကြောင်းရင်းပါ။ - File name နဲ့ Line number ကို ကြည့်ပါ →
File "main.py", line 2← ဒါက Error တက်သွားတဲ့ နေရာပါ။ - Error ဖြစ်သွားတဲ့ Code ကို ကြည့်ပါ →
return a / b← ဒါက ပြဿနာ ဖြစ်သွားစေတဲ့ Code ပါ။
အဖြစ်များသော Error ၆ မျိုး
Section titled “အဖြစ်များသော Error ၆ မျိုး”၁. SyntaxError — Code ရေးပုံ မှားနေသည်
Section titled “၁. SyntaxError — Code ရေးပုံ မှားနေသည်”# Errorprint("မင်္ဂလာပါ" # Closing ) မပါဘူး
# SyntaxError: '(' was never closedဖြေရှင်းနည်း: Error Line ကိုသွားပြီး Bracket, Quote, Colon (:), Indentation တွေကို သေချာ စစ်ဆေးပါ။
၂. NameError — Variable / Function မသိ
Section titled “၂. NameError — Variable / Function မသိ”print(massage) # message ကို massage လို့ မှားရိုက်မိတယ်# NameError: name 'massage' is not definedဖြေရှင်းနည်း: Variable နာမည် မှန်၊ မမှန် စစ်ဆေးပါ။ Python က Case-sensitive ဖြစ်တာကြောင့် Name နဲ့ name ဟာ မတူညီပါဘူး။
၃. TypeError — Data Type မကိုက်ညီ
Section titled “၃. TypeError — Data Type မကိုက်ညီ”age = "20"print(age + 1)# TypeError: can only concatenate str (not "int") to strဖြေရှင်းနည်း: Data Type ကို စစ်ဆေးပြီး လိုအပ်ရင် int(age) / str(age) စသဖြင့် ပြောင်းလဲပေးပါ။
၄. IndexError — Index ကျော်နေသည်
Section titled “၄. IndexError — Index ကျော်နေသည်”fruits = ["Apple", "Banana"]print(fruits[5]) # Index 5 မရှိပါဘူး# IndexError: list index out of rangeဖြေရှင်းနည်း: len(fruits) ကိုစစ်ဆေးပြီး Index ဟာ 0 ကနေ len-1 အထိပဲ ရှိကြောင်း သတိပြုပါ။
၅. KeyError — Dictionary Key မရှိ
Section titled “၅. KeyError — Dictionary Key မရှိ”student = {"name": "Aung", "age": 20}print(student["phone"])# KeyError: 'phone'ဖြေရှင်းနည်း: မသေချာရင် .get("phone", "မရှိ") လိုမျိုး သုံးပြီး Default Value ထည့်ပေးပါ။
၆. ValueError — Value ပုံစံ မှားနေသည်
Section titled “၆. ValueError — Value ပုံစံ မှားနေသည်”age = int("hello")# ValueError: invalid literal for int() with base 10: 'hello'ဖြေရှင်းနည်း: User Input တွေဆိုရင် try/except ValueError နဲ့ သေချာ ထိန်းချုပ်ပေးပါ။
Print Debugging — အမြန်ဆုံး Debugging နည်း
Section titled “Print Debugging — အမြန်ဆုံး Debugging နည်း”Error က ရှင်းရှင်းလင်းလင်း မရှိရင် Code ရဲ့ သံသယရှိတဲ့ နေရာတွေမှာ print() ထည့်ပြီး Variable တန်ဖိုးတွေကို စစ်ဆေးတာဟာ Beginner Programmer တွေအတွက် အကောင်းဆုံးနဲ့ အလွယ်ဆုံး သုံးနိုင်တဲ့ နည်းလမ်းပါ:
def calculate_total(prices): print(f"DEBUG: prices = {prices}") # ← ဒီနေရာမှာ ဘာ Data တွေ ရောက်လာသလဲ?
total = 0 for price in prices: print(f"DEBUG: adding {price}, total so far = {total}") total += price
print(f"DEBUG: final total = {total}") return total
items = [100, 250, 75]result = calculate_total(items)print(f"Final: {result}")DEBUG: prices = [100, 250, 75]DEBUG: adding 100, total so far = 0DEBUG: adding 250, total so far = 100DEBUG: adding 75, total so far = 350DEBUG: final total = 425Final: 425Code ကို ပြင်ဆင်ပြီးသွားရင်တော့ DEBUG print တွေကို ဖြုတ်ပစ်ပါ (သို့မဟုတ်) # comment နဲ့ ပိတ်ထားလိုက်ပါ။
assert — မိမိကိုယ်ကို စစ်ဆေးခြင်း
Section titled “assert — မိမိကိုယ်ကို စစ်ဆေးခြင်း”assert ဟာ “ဒီအခြေအနေ မှန်ရမယ်” ဆိုပြီး Code ထဲမှာ Check Point တွေ ထည့်တဲ့ နည်းလမ်းပါ:
def divide(a, b): assert b != 0, "b ကို 0 နဲ့ စားလို့ မရပါဘူး!" return a / b
print(divide(10, 2)) # 5.0print(divide(10, 0)) # AssertionError: b ကို 0 နဲ့ စားလို့ မရပါဘူး!VS Code Debugger — Breakpoint သုံးနည်း
Section titled “VS Code Debugger — Breakpoint သုံးနည်း”VS Code မှာ Breakpoint တွေ ထည့်ပြီး Code ကို တစ်ကြောင်းချင်းစီ အေးအေးဆေးဆေး Run ကြည့်နိုင်ပါတယ်:
- VS Code မှာ Code Line ရဲ့ ဘယ်ဘက် Number နေရာကို နှိပ်ပြီး 🔴 (Red Dot) ထည့်ပါ — ဒါကို Breakpoint လို့ ခေါ်ပါတယ်။
- F5 ကို နှိပ်ပါ (သို့မဟုတ်) Run Menu ကနေ Start Debugging ကို ရွေးပါ။
- Code ဟာ Run လာပြီး ခင်ဗျား သတ်မှတ်ထားတဲ့ Breakpoint မှာ ရပ်သွားပါလိမ့်မယ်။
- F10 နှိပ်ရင် = တစ်ကြောင်းဆင်းမယ် (Step Over)
- F11 နှိပ်ရင် = Function ထဲကို ဝင်ကြည့်မယ် (Step Into)
- ဘယ်ဘက်က Variables Panel မှာ Variable တွေရဲ့ တန်ဖိုးတွေကို အချိန်နဲ့တပြေးညီ စစ်ဆေးနိုင်ပါတယ်။
Debugging Mindset (ပြဿနာ ဖြေရှင်းနည်း စိတ်ဓာတ်)
Section titled “Debugging Mindset (ပြဿနာ ဖြေရှင်းနည်း စိတ်ဓာတ်)”Error တွေ တွေ့ရင် ဒီ Steps တွေအတိုင်း လိုက်နာကြည့်ပါ:
- Error Message ကို ဖတ်ပါ — အားလုံးဖတ်စရာ မလိုပါဘူး၊ ပထမ ၂-၃ ကြောင်းကိုပဲ သေချာဖတ်ကြည့်ပြီး ဘာ Error လဲ နားလည်အောင် လုပ်ပါ။
- Line Number ကို ကြည့်ပါ — Error ဖြစ်သွားတဲ့ Line ကို ချက်ချင်း သွားပါ။
- Assumptions ကို စစ်ဆေးပါ — ကိုယ်ထင်ထားတဲ့အတိုင်း Variable တန်ဖိုးတွေ ဟုတ်မဟုတ်
print()ထုတ်ကြည့်ပါ။ - တစ်ကြိမ်မှာ တစ်ခုချင်းစီ ပြင်ပါ — အများကြီး တစ်ပြိုင်တည်း မပြင်ပါနဲ့၊ တစ်ကြိမ်မှာ တစ်ခုပဲ ပြင်ပြီး ပြန် Run ကြည့်ပါ။
- မဖြေရှင်းနိုင်ရင် — Error Message ကို Google မှာ Copy & Paste လုပ်ပြီး ရှာပါ (Stack Overflow မှာ အဖြေတွေ အများကြီး ရှိတတ်ပါတယ်)။