Python'da debug ederken çok işe yarayan bir teknik

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
26,025
Bu sıralar python öğreniyorum. Bunun için de kendime basit olmayan, hatta ileri seviye bile sayılabilecek bir proje buldum. Proje, bir web sitesinin test edilmesi için otomasyon. Sadece test de değil, örneğin bir sitede düzenli olarak bir işi yapman lazım, bunu manuel olarak kendin girip yapacağına, python senin yerine giriş yapıp bütün gereken navigasyonu yapıp sonuç alıyor. Tırmalattırıyor, ama çok şey de öğreniyorum.

Neyse, bu projeyle uğraşırken hep karşılaştığım senaryo şu. Bir dizi manuel işlem adımını gerçekleşiriyorum ve sonunda benim yazmakta olduğum fonksiyondaki breakpoint'da program duruyor. Adım adım çalıştırıyorum ve bir hata görüyorum. Diyeceksiniz ki "tamam işte, programı durdur, hatayı düzelt, ve tekrar çalıştır". Tamam da, öyle yaparsan, yukarıda bahsettiğim bütün manuel işlemleri teker teker yeniden yapmam lazım. Bazı işlemler uzun sürüyor ve kesinlikle otomasyonu mümkün değil. Yani bütün işlemleri tekrar yap, tekrar breakpoint'a geldik, tüh, bir hata daha gördün, hadi bakalım tekrar ... Eğer bu projeyi fazla yaşlanmadan, daha elim ayağım tutarken bitirmek istiyorsam, daha farklı bir metoda ihtiyacım vardı ...

En sonunda şöyle bir metot kullanmaya başladım: İlgili fonksiyonu ayrı bir modül içerisine yerleştirdim. Sonra da ana programdan, bu modülü "reload" etme seçeneği ekledim. Böylece kod üzerinde değişiklik yapıp, reload etme şansım oldu. Ama bu yeterli olmuyor. Geliştirilen fonksiyonda tam hatayı yakaladığın anda, artık fonksiyonun devam etmesini istemiyorsun. Tekrar fonksiyonun çağrıldığı yere geri dönüp baştan denemek istiyorsun. Yoksa fonksiyonu devam ettirsen, buglar ve sorunlar üst üste binecek, kod ya topallayarak sona gelecek ve return edecek, yada hiç return edemeyecek ve takılacak. Orada da şu metodu kullanıyorum. Program zaten sorun olan kodda durmuş vaziyette iken, python "debug console" üzerinden bir exception ürettiriryoum:

Python:
raise AbortOperation("Aborted")

Bunu yaptığın anda, program doğrudan bu exception'in yakalandığı yere gidiyor. Fonksiyonu değiştirip reload ediyorum, sonra tekrar debug :)
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
8,357
Mesajlar
137,201
Üyeler
3,314
Son üye
tarık bektaş

Son kaynaklar

Son profil mesajları

mechanic ayhanarican mechanic wrote on ayhanarican's profile.
https://www.allmystery.de almanca biliyorsan burada araştır. Yapay zekada çeviriyor gerçi.
Almanların matematik bilgisi daha iyi oluyor.
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Back
Top