Java Run ve Debug nedir?

1Beyefendi

Picopat
Katılım
25 Haziran 2023
Mesajlar
315
VS Code ile çalıştırınca run ve Debug diye iki şey çıkıyor hangisini seçmeliyim?

Sytem. Out. Printin yazınca içine verdiğim değer X oluyor neden?
 

Dosya Ekleri

  • IMG_20230808_125943.jpg
    IMG_20230808_125943.jpg
    45,1 KB · Görüntüleme: 46
  • IMG_20230808_125943.jpg
    IMG_20230808_125943.jpg
    45,1 KB · Görüntüleme: 44
VS Code ile çalıştırınca run ve Debug diye iki şey çıkıyor hangisini seçmeliyim?

Sytem. Out. Printin yazınca içine verdiğim değer X oluyor neden?

X: Kısmını silmeniz lazim yanlış kullanım yapıyorsunuz ve şu an run demeniz lazim ve birkaç video izleyin. Run kodu çalıştırmak içindir Debug ise program da herhangi bir bug bulmak için kullanilan araçtır. Şu an siz run demeniz lazim sadece print kodu olduğu için.
 
Run programın derlenip çalıştırılması. Debug programın derlenip hata ayıklama araçlarıyla çalıştırılması.

Hata ayıklama araçları programda gerçekleşen anormallikleri tespit edip hangi satırdan kaynaklandığını anlamamızı sağlayan araçlar bütünü. Örneğin bellek sızıntısını anlamak için memory profiling (bellek profilleme), belli bir noktada alınan segmentasyon hatası için line by line execute ve local variable tespiti gibi özellikler sunabilir. Breakpointler ile programın belli nokta(lar)da ki hali incelenebilir.

x: kısmını senin yazmadığını varsayıyorum. VS Code üzerinde hiç java geliştirmesi yapmamıştım ama Rust analyzer'dan gördüğüm ve bir kaç extension'un (örneğin C için clangd*) daha sunduğu parametre ve type göstergesi. Bir fonksiyonu kullandığınızda verdiğiniz parametre hangi sembolde alınmışı gösteriyor. Muhtemelen o olabilir.

*clangd örneği;
1691489895561.png

*rust-analyzer örneği;
1691490106199.png


Ekleme; Düşündüğüm gibiymiş.
1691490278753.png
 
Şu kodları telefon kamerası ile çekmekten vazgeçin artık. Ekran görüntüsü de atmayın. Kod ekleme özelliğimiz var. Oradan ekleyebilirsiniz.

Konuya gelelim.

Run dediğimiz işlem adı gibi çalıştırmayı sağlar.

Debug işlemi ise kod üzerinde hata olup olmadığını anlamamızı sağlayan işlemdir. Eğer Debug işlemi sırasında hata meydana gelmezde otomatik programı Run yapabilir. Tabii bu programdan programa değişir.
 
Cok fazla teknik detay vermesem de biraz verecegim.

Run senin yazdigin kodun execute edilmesi islemidir. Artik neyi calistiriyorsan bunun executable hale donusme sureci degisir.

Debug uzerinde calistigin islemciye ve OS'ye gore degismekle birlikte calisan process'e baglanir ( genelde TCP ) ve islemci uzerinde Trap flag acilir. ( Trap flag - Wikipedia )

Bu sayede her islem execute edilmeden once execute edilen segmenti ve baglandigi process'e ait memory allokasyonlarini inceleyebilir. Bir nevi super guc gibi.

Sen "break point" koydugunda aslinda trap edilen execution'lar arasinda durmak istedigin notaya geldiginde process suspend edilir ( multi-thread uygulamalarda istersen tum threadleri suspend edersin)
ve inceleme yapma sansi elde edersin.

Tahmin edebilecegin uzere run ettiginde program daha hizli calisacaktir cunku trap yoktur. Ayrica high level dillerde bu surec daha sancilidir cunku tek satir islemin arka planda tonlarca farkli execution istegi olusur. Python'da hizli debug edebilmek icin bu yuzden farkli komponentler kurmak isteyebilirsin.

Teknik olmayan basit aciklamasi ise su -> run calistirir; debug satir satir ( satir tam dogru kavram olmasa da ) kodun isleyisi irdelenebilir modda calistirir.
 

Geri
Yukarı