Break pointin önemi nedir?

Jupiter Parliyor

Femtopat
Katılım
31 Temmuz 2023
Mesajlar
195
Çözümler
1
Arkadaşlar genelde IDE hata verince hata verdigi sinifi, satiri ve stunu gosteriyor (yani o satirda hangi harften itibaren).

Ben de oraya hata yakalamalik durum var ise try-catche ya da duzeltebiliyorsam hatayi duzeltiyorum.

Break pointin burada rolu nedir?
 
Son düzenleyen: Moderatör:
Break point genelde kodun durması için konulan bir noktadır. Break varsa kod o break de durur ve ileri gitmez. While veya Switch-Case yapılarında bu işe yarıyor en azından.
 
Durumu incelemek için güzel bir şey.

Diyelim ki bazı sayıları input olarak alıyorsunuz a, b, c diye.
Kodunuzu çalıştırdınız ve patladı. Nerede patladığını söyledi size ide, arithmetic exception, divide by zero diyor.
Baktınız, patladığı yerde 1 / (a*b*c) diye bir işlem var. O noktada breakpoint koyup debug ederseniz, kodunuz çalışınca bu a, b ve c sayılarından hangisinin/hangilerinin 0 olduğunu bulabilirsiniz. Breakpoint koymamakta inat ederseniz her biri için if(a == 0) { ekrana "A SIFIR GELİYOO" yazdır; } if(b==0) "B SIFIR GELİYOO".. ... diye hatayı outputta okumak için saçma işlere girmeniz gerekir.

Hata alınmayan durumlar da olabilir. Mesela üstteki gibi bir hata oluşmadı, 1 / (a*b*c) işlemi 0.1 değeri döndü. Ama siz 0.5 değeri gelecek diye umuyordunuz. Breakpointler yardımıyla hangi sayıya hangi değer geliyor, hangisi beklediğiniz gibi gelmiyor, nerede işlem hatası, input hatası vb. inceleyebilirsiniz. Debug yaparken baktınız ki a ve b sayıları düzgün geliyor, c sayısı ise sizin umduğunuz değer gelmiyor da başka bir değer olarak geliyor. C sayısının ilk atandığı yere breakpoint koyabilirsiniz ya da c sayısının değerini c sayısı üzerinde her işlem yapıldığı yere breakpoint koyup debug edebilirsiniz. Bu sayede koddaki hatayı bulursunuz, mesela c değerini endpointC den alacağınız yerde copy paste yaparken endpointA dan almış olduğunuzu fark edebilirsiniz ya da gözünüzden kaçan, unuttuğunuz c = c/5 gibi bir işlemi fark edebilirsiniz.

Debug işlemi hatalardan ayıklamak anlamına geliyor zaten, run edip hata almak debug değil teste girer. Nispeten büyük projelerde sorunu tespit etmek ya da kodunun tamamını sizin yazmadığınız projelerde değişkenleri takip etmek breakpointsiz çok zordur.

Eğer bunları bir döngü için yapacaksanız olacaktır. While döngüsünde zaten sürekli tekrar etmesin diye kullanılıyor. Break'e geldiği anda kod sonlanıyor.
Breakpoint ile break i karıştırıyorsunuz sanırım, döngüde kodu sonlandıran break.
 
Son düzenleme:
Durumu incelemek için güzel bir şey.

Diyelim ki bazı sayıları input olarak alıyorsunuz a, b, c diye.
Kodunuzu çalıştırdınız ve patladı. Nerede patladığını söyledi size ide, arithmetic exception, divide by zero diyor.
Baktınız, patladığı yerde 1 / (a*b*c) diye bir işlem var. O noktada breakpoint koyup debug ederseniz, kodunuz çalışınca bu a, b ve c sayılarından hangisinin/hangilerinin 0 olduğunu bulabilirsiniz. Breakpoint koymamakta inat ederseniz her biri için if(a == 0) { ekrana "A SIFIR GELİYOO" yazdır; } if(b==0) "B SIFIR GELİYOO".. ... diye hatayı outputta okumak için saçma işlere girmeniz gerekir.

Hata alınmayan durumlar da olabilir. Mesela üstteki gibi bir hata oluşmadı, 1 / (a*b*c) işlemi 0.1 değeri döndü. Ama siz 0.5 değeri gelecek diye umuyordunuz. Breakpointler yardımıyla hangi sayıya hangi değer geliyor, hangisi beklediğiniz gibi gelmiyor, nerede işlem hatası, input hatası vb. inceleyebilirsiniz. Debug yaparken baktınız ki a ve b sayıları düzgün geliyor, c sayısı ise sizin umduğunuz değer gelmiyor da başka bir değer olarak geliyor. C sayısının ilk atandığı yere breakpoint koyabilirsiniz ya da c sayısının değerini c sayısı üzerinde her işlem yapıldığı yere breakpoint koyup debug edebilirsiniz. Bu sayede koddaki hatayı bulursunuz, mesela c değerini endpointC den alacağınız yerde copy paste yaparken endpointA dan almış olduğunuzu fark edebilirsiniz ya da gözünüzden kaçan, unuttuğunuz c = c/5 gibi bir işlemi fark edebilirsiniz.

Debug işlemi hatalardan ayıklamak anlamına geliyor zaten, run edip hata almak debug değil teste girer. Nispeten büyük projelerde sorunu tespit etmek ya da kodunun tamamını sizin yazmadığınız projelerde değişkenleri takip etmek breakpointsiz çok zordur.


Breakpoint ile break i karıştırıyorsunuz sanırım, döngüde kodu sonlandıran break.
Debug etmek zorlayici bir surec oluyor. IDE bize yerini gosteriyor mesela, orayi cozum surecine kavustursak dogrudan. Break point'e cok ihtiyac olur mu?
 
Arkadaşlar genelde IDE hata verince hata verdigi sinifi, satiri ve stunu gosteriyor (yani o satirda hangi harften itibaren).

Ben de oraya hata yakalamalik durum var ise try-catche ya da duzeltebiliyorsam hatayi duzeltiyorum.

Break pointin burada rolu nedir?
Hata her zaman exception olmuyor. Gönderdiğin veri ve aldığın arasında ki farklılık, beklenmeyen bir davranış da hatadır. Break point programı durdurup o anki durumunu incelemene yardımcı olur.
 
Debug ederken performans dususu oluyor. Ben bir kac orta capli projede denedim. Break point kurup takip etmek zorlastirmaz mi?
Debugdaki performans düşüşü niye sorun olsun ki, önemli olan hata ayıklamak. Debug işlemini programın çalışır hale gelmesinden öncesi olarak düşünmelisin, programını yeterince hatalarından ayıkladıktan sonra tamam işim bitti, alın size düzgün çalışan program dersin.

Şu basit örneği düşün, performanssız çalışan bir kodun var, 1 saniyede çalışıp işini bitirmesini bekliyorsun ama 10 saniyede güç bela çalışıyor. Debug yaparsan sorunu bulabilirsin.

Mesela debug yaparak kodunu yavaşlatan yeri tespit ettin.

int a = 0;
if(uzunHesaplamaYapanIslem() > 5 )
{
a = 5;
}
else
{
a = uzunHesaplamaYapanIslem();
}

böyle bir kod yazmışsın, hatanı fark edip iyileştirme yapabilirsin.

int a = uzunHesaplamaYapanIslem();
if (a>5)
{
a = 5;
}

uzunHesaplamaYapanIslem'in ikinci defa gereksiz yere çağrıldığı yeri tespit ettin. Debuga harcadığın 5 dakika sana kodunun çok daha performanslı çalışması olarak geri döndü, hele bir de bunun bir döngü içinde ya da çok sık çağrılan bir methodda, multi threadli bir yapıda vb. olduğunu düşün, çok kötü bir durum. Bundan sonra ise programın çatır çatır çalışacak.
 

Technopat Haberler

Yeni konular

Geri
Yukarı