Sayfalar

3 Eylül 2010 Cuma

ve sıkıntılı anlar başlar :)

Olası Problemler:
Programcılık yaparken sıkıntı yaşayacağınız iki durum mevcuttur. Bunlardan birincisi derleme sırasında meydana gelen hatalardır ancak kod sistemini biliyorsanız çözümünüz kolaydır. İkinci probleminiz ise sıkıntı yaratacak bir durumdur ki o da derleme sonrası porgramın çökmesidir. Eğer ki bir de nerede çöktüğünden emin değilseniz o zaman işkence başlar. Bu duruma çözüm olarak şunu önerebilirim : "cout<< "\n\n\n BURADAYIM \n\n\n";" :) evet cout inanılmaz yardımcı bir fonksiyondur. Şöyle ki; Çöktüğünü düşündüğünüz yere yakın bir kod satırına cout ile bir uyarı metni yazın. Zira programınız derlemede sıkıntı yaratmayacağı için ilerleyecektir ancak program kaçarı yoktur yine çökecektir. Mühim olan bu metinden önce veya sonra çökmesi. Önce çökerse de sonra çökerse de birkaç kod satırı öncesine veya sonrasına bir cout daha ekleyerek hangi kos satırını uygulamakta sıkıntı yaşadığını görebilirsiniz. Örneğin;
cout<<"\n\n\n\n buradayim 01 \n\n\n\n";
planeEnt->setMaterialName("Examples/Rockwall-12345");
cout<<"\n\n\n\n buradayim 02 \n\n\n\n";

İlk cout çıktısı karşınıza çıkıyor ama ikincisi karşınıza çıkmıyorsa bunun nedeni aradaki satırda çökmesidir. Şimdi planeEnt, Entitiy sınıfından türetilmiş bir nesnedir. Bu Entity sınıfının içerisine bakarsanız "void setMaterialName(const String& name);" adlı fonksiyonu görebilrisiniz. Zaten kod yazmada hata olsaydı derleyici hatanın kaynağını gösterirdi. Bu fonksiyonun parametresi ile alakalı bir durumdur ki nedeni de "Examples/Rockwall-12345" isimli dosyanın kaplama matertalleri arasında mevcut olmamasından kaynaklıdır. Temelinde de bu dosya dışarıdan, derleme sonrasında çağrıldığı için bu problem gerçekleşmektedir. Eğer ki projeye include edilebilen bir dosya olsaydı zaten hatanın kaynağı ortaya çıkardı.

Diğer olası problemlere de "cfg" dosyalarına yanlış dosya ve dizinler verilmesinden kaynaklanabilir. Bunun çözümü için de log dosyasını takip etmeniz gerekmektedir. Çökmeden önceki kod satırında ne yazdığı önemlidir ve oradan tahmin etmeniz gerekir.

Başka olası bir neden de terrain.cfg ( nasıl kullanıldığına ve yapıldığına sonra değineceğim ) dosyasında gerçekleşmektedir. Ancak buradaki problem biraz daha farklılaşabilir. İsimlendirmeler olması gerektiği gibidir ancak program yine çökmektedir. Nedeni ise terrain.cfg dosyasının dışarıdan siyah-gri-beyaz tonlamasına sahip ( gri renk ölçeğine sahip ) png dosyası çağırmasından dolayıdır. Eğer ki bu PNG dosyası olması gerektiği pikselde veya gri renk ölçeğinde değilse bile çökmelere neden olabilir.

Çağrılan modellerin özelliklerinde bozukluk varsa çökmelere neden olabilir.

Nesnelerin isimlendirmesinde aynı isim kullanırlırsa çökmelere neden olabilir.

Dışarıdan çağrılan bir dosyanın ismi ile projenin içersinde bulunan bir dosyanın isminin aynı olması çökmeye neden olabilir.

Yani görebileceğiniz gibi çökmelerin asıl nedeni dışarıdan çağrılan dosyaların içerisiyle uyumsuzluğundan kaynaklanmaktadır. Gözden kaçabilecek ufak bir hata günlerinizi yemenize neden olur aman dikkat ne diyeyim :)

Hiç yorum yok:

Yorum Gönder