Visa Kopu

Visa Kopun blogi mielenkiintoisista asioista.

PHP-koodin etädebuggausta

Debugger-sovelluksen käyttäminen on olennainen osa ohjelmistovirheiden etsintää. Debuggerin avulla ohjelman suorittaminen voidaan keskeyttää halutussa kohdassa (eli kohdassa johon on laitettu breakpoint), tutkia ohjelman sen hetkistä tilaa ja edetä koodissa askel kerrallaan. Mutta kun kyseessä on websovellus, jota käytetään erillisellä ohjelmalla eli www-selaimella, debuggaus on hankalampaa. Usein virheitä etsitään vain laittamalla koodiin komentoja, jotka printtaavat tietoja sovelluksen tilasta joko sivulle tai erilliseen lokiin. Etädebuggauksen (remote debugging) ansiosta myös websovelluksen voi keskeyttää ja käyttää hyväkseen debuggerin ominaisuuksia virheen etsinnässä.

Töissä olen kehittämässä Java-pohjaista websovellusta ja kehitysympäristönä on Eclipse. Ajan sovellusta lokaalisti omalla koneella Jetty-palvelimella, joka JettyLauncherin avulla nivoutuu osaksi Eclipseä. Sovelluksen voi käynnistää debug-tilassa suoraan Eclipsestä ja kun sivua ladatessa tulee vastaan breakpoint, Eclipse hyppää automaattisesti esiin ja näyttää koodirivin, johon pysähdyttiin.

Harrastusprojekteissa olen käyttänyt PHP:tä ja koodannut BBEditillä. Varsinkin isompien PHP-sovellusten kanssa BBEdit on alkanut tuntua liian köykäiseltä, koska siinä ei ole koodin ennakointia, debuggerista puhumattakaan. Lisäksi laajan koodimäärän hallinointi BBEditillä on vaikeaa, koska ainoa tapa löytää tiedosto, jossa jokin funktio on määritelty on tehdä haku kansion tiedostojen sisällöstä.

PHP:n kehityksestä osittain vastaava yritys Zend teki maaliskuussa yhteistyösopimuksen Eclipsen kanssa. Zend on mukana kehittämässä Eclipseen PDT-laajennusta (PHP Development Tool). Zend tarjoaa paketissa myös omaa Zend Debuggeria, mutta tietääkseni se ei tue etädebuggausta vaan ainoastaan PHP-skriptien ajamisen debug-tilassa Eclipsen sisällä. Se varmastikin riittää joissakin tilanteissa, mutta minä ainakin heti törmäsin ongelmiin MySQL-yhteyksien kanssa.

Onneksi vaihtoehtona on Xdebug, joka asennetaan laajennukseksi PHP:hen. John VanDykin ohjeilla Xdebugin asentaminen Intel-Maciin kävi helposti. Ohjeissa neuvotaan myös, kuinka Xdebug otetaan käyttöön Komodo-ohjelmointiympäristössä. Kokeilin Komodoa, mutta Eclipsestä poiketen se on maksullinen ja jostain kumman syystä se laittaa automaattisesti breakpointin jokaisen sivun alkuun. Komodon valmistajan blogissa kyseltiin miten ominaisuuden saa pois päältä, mutta kukaan ei ollut muutaman kuukauden aikana vastannut. Samoilla ohjeilla saa kuitenkin asennettua Xdebugin myös Eclipseä varten.

Eclipse ja PDT eivät virallisesti tue Xdebugia, mutta Dave Kelsey IBM:ltä on tehnyt PDT:tä varten tarvittavat muutokset ja laittanut tiedostot jakoon Eclipsen bugiraportointijärjestelmään. Vaikka koodi on tehty Windowsille, se tuntui pikatestauksella toimivan mainiosti myös Macilla.

Yritän kirjoittaa aiheesta lisää, kun olen käyttänyt Xdebugia ja PDT:tä vähän enemmän.

Tämä on vanha sivusto. Löydät minut esimerkiksi täältä: Roxeteer Media Oy, Instagram ja Twitter.