16 Mart 2015 Pazartesi

Pdb ile Python Debugging

Pdb, Python scriptleri üzerinde debug işlemi yapabilmenize olanak sağlayan bir kütüphanedir. Bu yazıda çok basit bir şekilde kullanımından bahsedeceğiz.
Yazdığımız bir python scriptini debug etmek için komut satırından şu şekilde çalıştırabiliriz.
python -m pdb t.py 
Bu şekilde çalıştırıldığında script debug işlemi kodların en başından başlayacaktır.
Gördüğünüz gibi scripti çalıştırdığımızda bizi doğrudan pdb kabuğuna düşürdü. Burada artık debug işlemimize başlayabiliriz. Tabi bu işlem ile gördüğünüz gibi ilk satırdan itibaren debug işlemine başlamış olduk. Bu şekil de kullanmak yerine herhangi bir satırda bu işlemin başlamısını isteyebiliriz. Bunun için ise script içerisinde herhangi bir satıra şu kodu yazabiliriz.
import pdb; pdb.set_trace()
Bu kodu yazdığımız satıra kadar programımız yorumlanacak ve bu satırdan sonra bizi Pdb kabuğuna düşürecektir. Şimdi yazdığımız basit kodu şu hale getiriyoruz ve ardından komut satırından normal bir şekilde - pdb kullanmadan - çalıştırıyoruz.
def deneme(a):
 print "Bu bir fonksiyon"

print "Pdb'den once"
import pdb; pdb.set_trace()
print "Fonksiyon cagirilmadan once"
deneme(5)
print "Fonskiyon cagirildiktan sonra"
Gördüğünüz gibi program pdb satırına gelene kadar normal bir şekilde yorumlandı ve o satıra geldikten sonra bizi pdb kabuğuna düşürdü. Debug işlemi için yapmamız gereken bu kadar. Şimdi Pdb kabuğuna düştükten sonra neler yapabileceğimize bakalım. Daha önceden dikkatinizi çeti ise l ifadesini kullandım.
  • l(ist) : Yazdığımız kodu listelememizi sağlar.
  • w(here) : Programın olduğu satırı yazar.
  • c(ontinue : Programın kaldığı yerden yorumlanmaya devam etmesini sağlar.
  • b(reak) SatirNumarasi : Satır Numarasına Break Point koyar.
  • tbreak SatirNumarasi : Geçici olarak break point koyar. Birinci işlemden sonra break point silinir.
  • q(uit) : Debug işleminden çıkar.
  • c(lear) : Break pointleri temizlemek için kullanılır. Sorulan soruya y(es) cevabı verilirse break pointler silinir.
  • commands BreakPointNumarasi Girilen Break Point numarasına gidilirken istenilen komutlarında çalışmasını sağlar. Kullanılışı şu şekildedir. Command'ten çıkmak için end ifadesi kullanılır.
  • s(tep) : Bir sonraki satıra geçer.
  • n(ext) : Bir sonraki satıra geçer.
  • İkisi arasındaki fark; Step ile bir fonksiyona girildiği zaman adım adım işlerken n(ext) fonksiyonu işler ve çıkar.
  • j(ump) SatirNumarasi : Yazılan satır numarasına atlar.
  • a(rgs) : Varsayılan fonksiyonun argümanlarını verir.
  • p a : a değişkenin değerini ekrana yazdırır.
  • run : Debug edilen programı yeniden başlatır.

0 yorum :

Yorum Gönder