Visual C++ Derleyicisinde Debugger Nasıl Kullanılır?
Bugun yeni bir konu ile karşınızdayım. Fonksiyon yazımı ile ilgili derslere baslayacagımız icin ek olarak boyle bir konu anlatmayı uygun gordum. Cunku derleyicide debuger (hata ayıklayıcı) kullanımını iyi bilmek sorunları daha hızlı cozmeye yarar sağlar. O yuzden burada tek dersten oluşan Visual C++ Debugger Kullanımı Hakkında Bilgi Vermek İstiyorum. Derleyicilerde Debugger kodunuzda yolunda gitmeyen durumları size bildirmek icin kullanılan bir uygulamadır. Yaptığınız sozdizimi hataları veya uyarılar. Projenizi Build ederken kontrol edilir ve eğer ki bir yanlışlık varsa debugger penceresine bunu yazar. Siz de buradaki hata acıklamalarını gorerek nerde hata var bunu gorup gerekli duzeltmeleri yapabilirsiniz. Bir cok arkadaş bir yerden misal bir kod alıyor ve akabinde şoyle bir soru soruyor. Ben bu kodu derlemeye calıştım ama bissuru hata verdi? Gibisinden sozlere cok şahit oldum. Ve bunun olmaması icin boyle bir yazı yazma gereği duydum. Şimdi bir kod ormeği yazalım ve bunun neresinde hata var uyarı var debugger kullanarak gorelim.
[IMG]http://img143.**************/img143/3336/11uo1.jpg[/IMG]
Yukarıdaki kodu aynen buraya yazıyorum.
void main()
return 0;
}
Şimdi bu kodlara dokundmadan derleme işlemini gercekleştirelim.
[IMG]http://img143.**************/img143/5063/29vx.jpg[/IMG]
Bakın bi dunya hata ve uyarı var. Şimdi bunların kaynağı neresi bunları tek tek bulalım. Hata kaynağını bulmak icin description yani acıklamanın ustune cift tıklayın hatanın kaynaklandığı yeri derleyici bize gosterecek. Resimde de gorelim.
[IMG]http://img140.**************/img140/7648/34qw.jpg[/IMG]
İlk satırdaki acılmaya tıkladık ve bizi cin>>sifre; satırına goturdu. Hatanın descriptionuna baktığımızda bize cin ifadesinin porgram kodlarında deklare edilmediğini soyluyor. Aceba bu nedemek?. Bu şu demek oluyor. Biz cin ifadesinin tanımlı olduğu header dosyasını include etmemişiz. Bunu declare etmemiz lazım. Bunu koda deklare edip tekrar bir projeyi build edelim.
[IMG]http://img143.**************/img143/5421/42vh.jpg[/IMG]
Cin in bulunduğu header dosyasını include ettik. Ve tekrardan build dedik. Ama hata ve uyarılar bitmedi. Ama yukardaki şekilde de gorulduğu gibi hatalar bitmemiş. Şimdi yine ilk sıradaki satıra cift tıklayalım. Ve hata nerdeymiş gorelim.
[IMG]http://img140.**************/img140/7513/55at.jpg[/IMG]
Bizi goturduğu yer int sifre; satırı ama biz bakıyoruz bakıyoruz. Satırda hata yok. Peki neden burayı işaret etti. Acıklamada bize syntax hatası verdi. Ve kodun ; (noktalı virgul) ile devam etmesini soyledi. Burada eğer gosterilen satırda hata yoksa hatayı bu satırdan onceki satırda arayacağız. Derleyici bazen ornekte de olduğu gibi hata yerini tam işaret etmedi bu da biraz sizi duşunmeye zorluyor. Satırdan onceki satıra baktığımızda bool durum ifadesinde ; (noktalı virgul) un kullanılmadığı goruluyor. Demekki hatayı burada yapmışız. Hemen noktalı virgulu ekleyelim ve projeyi tekrar derleyelim.
[IMG]http://img143.**************/img143/8218/68ax.jpg[/IMG]
Derleme yapılırken yine bir hata karşımıza cıktı. O da if else bloğunun doğru kullanılmadığı ile ilgili. Aceba nerde hatamız var. Şunu bildiğimizi varsayarsak. İf den sonra gelen birden fazla komut blokları arasında olmalıdır. Biz koda bakıyoruz ve if den sonraki iki satırın bloları arasında olmadığını goruyoruz. Hemen ilgili duzeltmeleri yapıyoruz ve tekrardan bir derleme daha yapıyoruz. Ama aiağıdaki gibi bir hata daha var.
[IMG]http://img140.**************/img140/8105/77ny.jpg[/IMG]
Bize hatada void tipli bir fonksiyonun değer dondermeye calıştığını soyluyor. Biz biliyoruz ki void tipli bri fonksiyon değer dondermez. O halde kod duzeltelim yani return 0; satırını kaldırıp derleyelim.
[IMG]http://img140.**************/img140/623/80up.jpg[/IMG]
Evet kodumuz başarılı bir şekilde derlendi. Yani temiz bir koda sahip olduk. Ama baktım da uyarı demişim ama uyarıya ait bir şekilde kodu yazmamışım onu bari şimdi yapalım temzi kodumuzu şu şekilde değiştiriyorum.
[IMG]http://img103.**************/img103/3909/90ax.jpg[/IMG]
Bu değişikliği yapıp derliyoruz. Karşımıza debugger penceresi cıktı. Bu uyarılar programın derlenmesine engel değildir. Sadece sizi uyarma mahiyetindedir. Burada bizi şu şekilde uyardı. Deger ve oylesine isimli değişkenler tanımlanmış fakat programda bir Allah’ın kulu gelip de bunu kullanmamış. Siz bunu isterseniz kaldırabilirsiniz. İsterseniz de oylece durabilir. Bir zararı yok. Daha ornek verecek olursak int tipinde fonksyionu tanımlayıp değer dondermediğimiz zaman da uyarı alabiliriz. C++ a ait bir anahtar sozcuğu değişken olarak tanımlamışsak haa alabiliriz misal.
int for; veya int break; gibi gerci syntax renkelndirmesi sayesinde bu gibi hatalara duşmek biraz zor ama olsun.
__________________
C++ de Debugger Kullanımı
Android & IOS Uygulama Geliştirme0 Mesaj
●28 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Android & IOS Uygulama Geliştirme
- C++ de Debugger Kullanımı