Anasayfa > Programlama > PHP > PHP'de hata bulma tekniklerine yaklasim ve basit bir hata-avlama yazilimi
Makaleye verilen puanlar

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.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 3-2-2006  Okunma: 3448

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Emlak Yorumlar Müzik estetik