Biri debug mi dedi :) yok yok ben print kullaniyorum

🙂 Evet zaten birsey yazabildigimiz yok birde yalandan debug edecegiz diye dosyayi acip oraya print yok bu fonksiyonu cagirmis obur dosyaya print, cok cilgin oluyor : )

Diyeceksiniz ki IDE lerde zaten var bu is , yukaridan debug dugmesine tikliyorsunuz , sonra sol a iki top koyuyorsunuz , alta bir console geliyor muthis ama sunucu tarafinda birde sizin olmayan kodu , script’leri debug etmek istiyorsaniz Python Debugger -pdb- cok guzel …

Su anda en favori komutum su ; -m parametresi ile pdb modulunu yukluyoruz ve birinci satirdan itibaren adim adim ilermeye baslayabiliriz.


vahric:self_class vahricmuhtaryan$ python -m pdb file1.py 
> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(7)<module>()
-> class Eskiversionclass:
(Pdb) 

Istenir ise ayni seyi su sekilde yapmakta mumkun , ilgili modulu kod icersine ekleyip birde debug etmeye hangi satirdan baslayacagimizi belirtebiliriz bunun icin  pdb.set_trace() satirini baslamak istediginiz yere koyun ;


import pdb

class Eskiversionclass:
    # pass burada ne yazicagimizi bilmedigimizden kod hata vermesin diye
    # kullanilan placeholder
    def  __init__(self,isim,soyad):
        print self.__dict__
        self.isim = isim
        self.soyad = soyad
        self.aciklama = "Bir GS olarak BJK basarilar dilerim 11 Nisan 2016"

pdb.set_trace()

class Yeniversion(object):
    pass

Yukardaki kodu calistirdigimizda , simdi farkli bir yerden basladik debug etmeye


vahric:self_class vahricmuhtaryan$ python file1.py 
> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(16)<module>()
-> class Yeniversion(object):
(Pdb) 

Simdi bundan sonra klavyedeki ok tuslari gibi asagi yukari ilerlememiz gerekiyor , once yillar once oyun konsolllari yokken klavyeden PES oynarmis gibi tuslari bir ogrenelim ;

Once cikmayi ve yardim almayi deneyelim 

q –> cikis

h –> yadim


 

l –> list , 10 satir 10 satir listeleyecek

l 7,20 –> 7 ile 20 ci satir arasini bize listeleyecek

l 20,7 –> 20 satidan itibaren 7 satir listeleyecek


 

vahric:self_class vahricmuhtaryan$ python -m pdb file1.py

> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(5)<module>()

-> class Eskiversionclass:

(Pdb) l

1

2  #import file3

3  #import pdb

4

5  -> class Eskiversionclass:

6      # pass burada ne yazicagimizi bilmedigimizden kod hata vermesin diye

7      # kullanilan placeholder

8      def  __init__(self,isim,soyad):

9          print self.__dict__

10          self.isim = isim

11          self.soyad = soyad

(Pdb)


 

s –> ilgili satiri calistirir ve dururabilecegi ilk yerde durur


 

n –> next line

vahric:self_class vahricmuhtaryan$ python -m pdb file1.py

> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(5)<module>()

-> class Eskiversionclass:

(Pdb) n

> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(16)<module>()

-> class Yeniversion(object):

(Pdb) dir()

[‘Eskiversionclass’, ‘__builtins__’, ‘__file__’, ‘__name__’]

 


b 20 –> 20. satira breakpoint koy

c –> devam et, ta ki breakpoint e kadar


 

a –> iste en guzel karakter , fonksiyon/class icersindeki argumentleri cagirir.

(Pdb) s

–Call–

> /Users/vahricmuhtaryan/PycharmProjects/self_class/file1.py(8)__init__()

-> def  __init__(self,isim,soyad):

(Pdb) a

self = <__main__.Eskiversionclass instance at 0x101a2d7e8>

isim = Vahric

soyad = Muhtaryan


 

Bu kadar isimi goruyor, daha fazlasi icin https://docs.python.org/2/library/pdb.html

Bunla beraber ilgili kod icersinde import edilmis farkli moduller ve kod icersinde bu modullerden cagrilmis class veya fonksiyonlar olabilir , bu tip durumlarda merak etmeyin pdb ilgili her modulu , class/fonksiyonu geziyor

VM

Posted on 16/04/2016, in Python and tagged , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: