PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine Kogemused Kuidas oma koodi debug'da
Autor Abi Postitus Abi

fax
Upsakas kontoritarve

Postitusi: 1195
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
Kuidas oma koodi debug'da

Sul kood ei tööta korralikult ?

Panen siinkohal kirja mõned näpunäited, kuidas oma koodi vigadest aru saada ja neid ka parandada:
Koodi parandamisel on alati sinu sõpradeks print_r() ja echo funktsioonid.
Võttes aluseks siin ühe postituse, analüüsiks lähemalt kui kohe silmaga viga ei märka. Kood ise järgmine:
PHP kood:

<?php 

for($i 10$i100$i++) 

$pilt file_get_contents('http://aadress.ee/preview/.$i/01.jpg'); 
$f fopen('pilt-'.$i.'.jpg''w'); 
fwrite($f$pilt); 
fclose($f); 


?> 


Kodaniku probleem, et salvestatakse maha tühi pildifail.

Millest siis alustada vea jälitamist ? Esmalt kontrolli kas maha salvestatatav muutuja ikka omab sisu, selleks aitab lihtne echo $pilt ennem fwrite funktsiooni (see funktsioon salvestab pildi kettale), kui nähtavale ei ilmu miskit suvlist binaar läbu, siis järelikulton muutuja tühi, seega tasuks vaadata koodis ülesse poole natukene. Kuna $pilt saab oma väärduse file_get_contents() funktsioonil ja see on tühi siis tasuks kontrollida, edasi, mis on viimati mainitud funktsiooni sulgude vahel. Taaskord tuleb appi funktsioon nimega echo ehk siis:
PHP kood:

echo 'http://aadress.ee/preview/.$i/01.jpg';

mille lisad siis ennem või peale seda file_get_content() rida ja veendud, et etteantud parameeter on ikka õige.
Nüüd siis sama jutt ilma näideteta.. Kust alustada koodi kontrollimist? Koodi kontrolli tuleks alustada veidrate käitumiste puhul sealt, kus viga ilmneb. Kasutades echo funktsiooni ühemõõtmeliste muutjuate puhul ja print_r() mitmemõõtmeliste muutujate (massiivide = array) puhul. Liigu koodis ülesse poole järjest muutujatpidi ja vaata kus kohast hakkab kood valesti toimima. Juhul kui sul ei vaata seal vastu tehe $a=$a+2, ja tegelt peaks see olema $a=$a+3, siis tasub uurida rida lähemalt -- tõenäoliselt on sul seal mingi funktsioon, mis väljastab oma parameetreid etteantud parameetrite järgi.. Edasi tasub välja echoda ka need parameetrid, mis sellele funktsioonile ette antakse, väga tõenäoline on, et lihtsalt vormindad paramaaterid valesti ja tulemuseks on soovitud "/kamm/kala/lest/saba" asemel "/kamm/kala/$muutuja/saba"

Hetkel said küll mõtted ots aga täiendan seda omaltpoolt ja loodan et keegi veel viitsib täiendada seda teemat.

___________________________________________________
Kui olete saanud täna hommikul hakkama 6 võimatu asjaga, miks siis mitte lisada sellele veel programmeerimine ?

30.01.2007 00:18:06 Vajutades siia näed kasutaja fax profiili

uugu21

Postitusi: 380
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10Administratiivhinnang: 9/10
RE: Kuidas oma koodi debug'da

Olen ise paar korda juba üsna äärepeal olnud, et sama sisuga asja hakata kirjutama aga laiskus on ikka võitu saanud. Kirjutise võiks vist "kogemuste" alla tõsta (ja samalaadseid juurde kirjutada ;-)).

igatahes - aplaus autorile.

05.02.2007 13:06:34 Vajutades siia näed kasutaja uugu21 profiili

tobre
Asjamees


Postitusi: 1393
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Kuidas oma koodi debug'da

Kopeerin siis enda debugimise funktsiooni ka siia. Midagi erilist ei ole, kuid ehk kellelgi on hea kasutada.

PHP kood:


/**
 *    Prints debug information
 *    
 *    @date Created: 27-07-2005
 *    @date Modified: 07-12-2006
 *    
 *    @author T6nis Tobre <tobre at bitboard dot ee>
 *    @param mixed $var
 *    @param string $comment optional parameter for better understanding
 *    @param int $type 0-regular debugging, 1-JavaScript alert debugging
 *    @param boolean $die true - terminates script
 */

function debug($var$comment null$type 0$die false)
{
    
$result print_r($vartrue);
    switch (
$type)
    {
        case 
0:
            echo 
'<pre><font color="red"><b>Debug'.(!is_null($comment)?' </b>
<font color="green"><i>('
.$comment.')</i></font><b>':'').': </b></font>'.$result.'</pre>';
            break;
        case 
1:
            echo 
'<script>alert("Debug information!!\n\n'.str_replace("\n"'\n'$result).'");</script>';
            break;
    }
    
$die && die();
}



Teema liigutatud "Kogemuste" alla.

Seda postitust on muudetud 3 korda (viimati muudeti 2007-02-05 23:20:22 tobre poolt)

___________________________________________________
Tõnis Tobre · MSN  · E-Post

05.02.2007 15:29:31 Vajutades siia näed kasutaja tobre profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Kuidas oma koodi debug'da

Ei saa kuidagi koera saba kergitamata jätta: http://php.center.ee/opetused.php?id=94

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

05.02.2007 16:28:39 Vajutades siia näed kasutaja muidumeez profiili

teadjamees


Postitusi: 492
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10
RE: Kuidas oma koodi debug'da

Minu versioon:
PHP kood:


  /**
    * Displays a variable of any type for debugging
    *
    * @param mixed $variable Variable to dump
    * @param string $title Title of the debug data
    * @param string $file Filename where the data is coming
    * @param int $line Line where the data is coming
    * @param string $method Method where the data is coming
    * @return void
    */
    
static public function display($variable$title 'Debug'$file null$line null$method null)
    {
        if(
is_scalar($variable))
        {
            
$output htmlspecialchars($variable);
        }
        else
        {
            
$output str_replace("\t"'&nbsp;&nbsp;&nbsp;&nbsp;'htmlspecialchars(print_r($variabletrue)));
        }
        
        echo 
'<p><fieldset><legend> <b>'.$title.'</b> ['.gettype($variable).']'.(isset($file) ? ' ['.$file.'] ' :
 
'').''.(isset($line) ? ' ['.$line.'] ' '').''.(isset($method) ? ' ['.$method.'()] ' '').'</legend><pre>'.$output.'</pre></fieldset></p>';
    }



Seda postitust on muudetud 5 korda (viimati muudeti 2007-02-06 13:42:24 teadjamees poolt)

05.02.2007 19:35:12 Vajutades siia näed kasutaja teadjamees profiili

nene
putukas


Postitusi: 303
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Kuidas oma koodi debug'da

Muide, Teadjamees ja Tobre võiksid oma koodi natukene kohandada - nõnda et nad ei kandideeriks kõige laiema positituse tiitlile.

EDIT: Sorry, Tobre postitusel pole tegelt nii palju häda - lihtsalt tänu minu isiklukule PHP-Centerile määratud stiililehele näeb asi tiba laiem välja.

05.02.2007 22:56:27 Vajutades siia näed kasutaja nene profiili

teadjamees


Postitusi: 492
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10
RE: Kuidas oma koodi debug'da

Proovisin lisada pikale reale tühikut vahele, aga foorum ei pidanud sellegipoolest vajalikuks sealt uut rida alustada. Õnneks pole postituste tabelid omavahel seotud, nii et pole väga hullu

06.02.2007 13:43:32 Vajutades siia näed kasutaja teadjamees profiili

hellbender

Postitusi: 437
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Kuidas oma koodi debug'da

Ei tasuks unustada ka funktsiooni debug_backtrace, mis tagastab väga kasulikku informatsiooni...

06.02.2007 17:46:38 Vajutades siia näed kasutaja hellbender profiili

teadjamees


Postitusi: 492
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10
RE: Kuidas oma koodi debug'da

Tihti abiks ka debug_print_backtrace(), mille infot on mõnusam jälgida kui viimases postituses nimetatud funktsiooni oma

07.02.2007 15:57:36 Vajutades siia näed kasutaja teadjamees profiili

skycat


Postitusi: 1
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Kuidas oma koodi debug'da

zend arenduskeskonda on sisse ehitatud muidu php debuger
väga mugav kasutada, lase kasvõi kood rida-rea kaupa läbi

04.04.2007 16:33:26 Vajutades siia näed kasutaja skycat profiili

hellbender

Postitusi: 437
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Kuidas oma koodi debug'da

Tsiteeritud tekst:
zend arenduskeskonda on sisse ehitatud muidu php debuger
väga mugav kasutada, lase kasvõi kood rida-rea kaupa läbi

Seda tõesti, kuid nagu me teame, siis maksab see tarkvaratükk üpris mõnusa summa...


04.04.2007 21:35:18 Vajutades siia näed kasutaja hellbender profiili
Kokku: 25949 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on laupäev, 19. oktoober 2019. Kell on 00:12.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.