|
| Makaleler |
| Toplam Makale |
3330 |
| Yayında |
3150 |
| Bekleyenler |
180 |
| Görüntüleme |
13322987 |
|
|
|
|
PHP'de hata bulma tekniklerine yaklasim ve basit bir hata-avlama yazilimi
Konu: PHP Yazar: Serkan Tarih: 01/04/02
Programlamada Hata Tipleri:
Yazim Hatalari
Calisma Zamani Hatalari
Mantik Hatalari
Yazim Hatalari
Konusma dillerinde oldugu gibi programlama dillerinde de bazi yazim kurallari ve yapilar vardir.Her programlama dillinde oldugu gibi PHP icerisinde de daha onceden belirlenmis komut yapilari ve yazim teknikleri vardir.Konusma dillerinde hata yapsaniz dahi karsinizdaki sizin ne dediginizi anlayabilir,fakat programlama dillerinde yapacaginiz kucuk bir yanlis hata mesajinin ekrana gelmesini saglar.
Yazim kurallarina ornek PHP de her satirin bitiminde noktali virgul isaretinin kullanilmasi gosterilebilir.Bir baska ornek ise degikene bir duzyazi tipinde veri atarken mutlaka veriyi tirnak isaretlerinin arasina yazmalisiniz...
Yazim hatasi olusturmak icin asagidaki gibi bir program yazin.program toplam uc satirdan olusuyor ve ikinci satirinda asil isi yapan komut var :
Ornek 1 :
Boyle bir kodun ciktisi asagidaki gibi olur : Parse error: parse error in c:\nusphere\apache\nsdocs\pro_hatasi1.php on line 2 Goruldugu gibi ikinci satirda bir hata mesyadana geldigi acikca belirtilmektedir.
Simdi de ayni kodu asagidaki gibi degistirin :
Simdi program ciktisi asagidaki gibi olacaktir : Parse error: parse error in c:\nusphere\apache\nsdocs\pro_hatasi2.php on line 4 Su anda hatanin dorduncu satirda oldugu soylenmektedir.Bu nasil olur? Cunku program zaten hepsi uc satirdan olusuyor.
Eger bir komutta bu sekilde bir tirank hatasi yaparsaniz ve tum programiniz 1000 satirdan olusuyorsa buyuk ihtimmalle asagidaki gibi bir hata alirsiniz ve zamaninizin cogu bu hatayi hangi satirda aradiginizi yapmakla gecer :) Parse error: parse error in c:\nusphere\apache\nsdocs\pro_hatasi2.php on line 1001 Sonuc olarak yazim hatalari en kolay bulunup yok edilen hatalar olarak degerlendirilir.
Calisma Zamani Hatalari
Konuyu anlatabilmek icin hemen giriste bir ornek veriyorum.Tahmin ediyorum hepiniz ornege bakarak bu tip hatalar ile neyi kastettigimizi anlayacaksiniz :
Evet yukaridaki kod parcasi yuzde yuz hatasiz olmasina ragmen calisma zamaninda ilgili dosya yerinde bulunamaz ise cok basit bir hata mesajinin uretilemsine neden olabilir : Warning: Failed opening 'dosyaadi.php' for inclusion (include_path='') in c:\nusphere\apache\nsdocs\pro_hatasi3.php on line 2 Yukaridaki "include" komutu ile bazi dosyalar komple programin icine eklenebilmektedir.Eger eklenecek program yerinde bulunmazsa bir hata mesaji ueretilir.
Bir baska calisma zamani hatasi ornegi "sifira bolunme" olayidir.Matematikte bir sayinin sifira bolunmesi tanimsizdir.Bu nedenle eger programda bir sayiyiy sifira bolmeye tessebbus ederseniz hata mesaji uretilir :
Yaratilacak hata mesaji asagidaki gibidir : Warning: Division by zero in c:\nusphere\apache\nsdocs\pro_hatasi4.php on line 4
Mantik Hatalari
Mantik hatalari bulunmasi en zor programcilik hatalaridir.yazim veya yapi olarak dogru oldugu halde programcinin istedigi gorev yerine baska islevler yerine getiren kod parcalari bunlara ornek verilebilir.Tarihte yapilan butun buyuk yazilim hatalari bu cesit hatalardir.
Ornek :
Evet kodun kendisinde hata olmamasina ragmen (PHP yukaridaki kod ile ilgili herhangi bir sikayette bulunmaz.) kod istenilen sekilde davranmayacaktir.Dikkat ederseniz PHP deki yazim kuralini uygulayrak her biten satira bir noktali virgul ekledim.Bu sebeple dongunun "echo" komutunun oldugu satirla olan baglantisini kesmis oldum.Boyle bir programin ciktisi asagidaki sekilde olacaktir : Bu bir deneme mesajidir
Aslinda asagidaki gibi bir ciktinin ekrana gelmesi istenmektedir : Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Bu bir deneme mesajidir Hata bulma tekniklerinde bir degiskenin, programin belirli bir kisminda sahip oldugu degerini bilmek gercekten cok onemlidir.Boylece programin sizin istediginiz sekilde calisip,calismadigini kontrol etme firsatiniz dogar.
Bu anafikirden hareketle sayfamiza gelen degiskenlerin tasidigi degerleri HTML sayfasinda yorum haline getirip yazacak (Boylece gercekten sayafada goruntulenmedigi halde sayfanin HTML kodunda yer alacak.) kucuk bir hizmet/hata bulma yazilimi hazirlayalim : \n\n";
echo "\n"; echo "\n";
echo "\n"; echo "\n";
echo "\n"; echo "\n";
echo "\n"; echo "\n";
echo "Bu sayafaya gonderilen degisken isimlerini ve degerlerini gormek icin \n"; echo "sayfanin HTML kaynak kodunu goruntuleyiniz."; /* degerleri_goster fonksiyonu argument olarak bir dizi ismi almaktadir.
boylece fonksiyona gecirilen dizideki tum elementler teker teker indis-deger ikilisi seklinde listelenmektedir.Bizler bu fonksiyonun ciktisindan o dizi ile ilgili tum bilgileri sayfanin icinde bir HTML yorumu olarak gorebilmekteyiz.
*/
function degerleri_goster($array) { if (is_array($array)) { $eleman_sayisi = count($array); $cikti = " "; if ($eleman_sayisi) { $sayac = 0; $cikti .="{ "; //Her elementin indis ve degerini ciktiya ekle.
foreach ($array as $var => $deger) { $cikti .= "$var = $deger"; if ($sayac++ < ($eleman_sayisi-1)) { $cikti .= ", "; } } $cikti .= "}"; } return $cikti; } else { //Eger dizi degilse, return $array; } }
?> Ornek Dosyalar
http://www.turk-php.com/ornekler/hataya_ayiklama_ornek.php
http://www.turk-php.com/ornekler/hata_ayiklama.php
http://www.turk-php.com/ornekler/hataya_ayiklama_ornek.phps
http://www.turk-php.com/ornekler/hata_ayiklama.phps
http://www.turk-php.com/ornekler/pro_hatasi1.php
http://www.turk-php.com/ornekler/pro_hatasi2.php
http://www.turk-php.com/ornekler/pro_hatasi3.php
http://www.turk-php.com/ornekler/pro_hatasi4.php
http://www.turk-php.com/ornekler/pro_hatasi5.php
Serkan Hadi Ceylani serkan@turk-php.com
Program: http://www.turk-php.com/ornekler/hataya_ayiklama_ornek.php
Bu makale hakkında ek bilgi eklemek için buraya tıklayınız
Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.
Eklenme tarihi: 3-2-2006 Okunma: 3448
|
| Bu Makaleye Verilen Puan: |
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
İlgili Dökümanlar
|
|
|