Feilsøking av WordPress-temaer og plugins med Eclipse og Xdebug

Feilsøking av PHP med en tekstredigerer og en kombinasjon av ekko, print_r og exit-samtaler er tilstrekkelig når det gjelder enkel kode. Men når din killer WordPress plugin vokser til flere tusen linjer som spenner over flere filer, vil denne metoden raskt bli kjedelig og feilaktig. Når du treffer det punktet, vil det være på tide å oppgradere til en ekstern feilsøking, slik at du raskt og enkelt kan gå gjennom hver linje med kode for å finne problemer.


En ekstern debugger er et program installert på server siden som avskjærer alle kjører PHP-kode. Blant andre funksjoner har den muligheten til å slutte å kjøre kode midt gjennomføring og sende informasjon til en ekstern klient, for eksempel et integrert utviklingsmiljø (IDE). Denne opplæringen vil dekke hvordan du bruker xdebug fjernkontrollen debugger og åpen kildekode Eclipse IDE sammen for å gå gjennom WordPress-kode for å feilsøke feil.


Trinn 1 Opprett ditt utviklingsmiljø

Jeg antar at du allerede har Apache / PHP / MySQL og et fungerende WordPress-installasjon som kjører på din lokale arbeidsstasjon. Hvis ikke, les vår veiledning om hvordan du konfigurerer et WordPress-utviklingsmiljø for Windows.

Installer Xdebug

De mest oppdaterte instruksjonene finnes på xdebug-nettsiden.

Hvis du er på Windows med XAMPP for utvikling, er xdebug-binæret allerede inkludert, og du kan fortsette å konfigurere PHP.

Hvis du er på Mac OS X, anbefaler jeg at du compilerer fra kilde eller bruker PECL til å installere.

Hvis du er på Linux, kan du kanskje installere ved hjelp av distribusjonspakken din, eller du kan kompilere fra kilde / bruk PECL.

Konfigurer PHP for å laste Xdebug

Du må legge disse to linjene til php.ini-filen din (som kan leve på /etc/php.ini eller c: \ xampp \ php \ php.ini eller et annet sted avhengig av plattformen din):

 zend_extension = "/ absolute / path / to / xdebug.so" xdebug.remote_enable = 1

Når det er gjort, start på nytt Apache-serveren. Det er mange andre alternativer du kan konfigurere senere som forklares i xdebug-dokumentasjonen, men det bør være nok til å komme i gang.

Bekreft Xdebug

Opprett en side som heter test.php i nettrotsmappen din, og legg til et anrop til phpinfo () -funksjonen:

Søk etter xdebug, og du bør finne en seksjon nederst på siden som ser slik ut:

Installer Eclipse og PDT

Last ned Eclipse Classic fra Eclipse nedlastingssiden, pakke ut, kopier den til programkatalogen din, og start deretter.

Klikk på Hjelp-menyen, og installer deretter Programvare. Velg alternativet "Indigo" under "Arbeid med" -alternativet. Merk av i en av funksjonene "PHP Development Tools (PDT) Feature" og klikk deretter "Next".

Klikk gjennom de gjenværende trinnene i veiviseren for å fullføre installasjonen, og start omstart av Eclipse når du blir bedt om det.

Sett opp Eclipse for å lytte til Xdebug

Aktiver PHP-perspektivet ved å klikke på Åpne perspektiv-knappen i øverste høyre hjørne:

Velg deretter alternativet "Annet", velg PHP, og klikk deretter "OK":

Klikk på PHP-knappen for å gå til PHP-perspektivet:

Deretter går du til "File -> New -> PHP Project." Dette vil hente vinduet "Ny PHP-prosjekt". Du kan skrive inn "wordpress" eller hva du vil for prosjektnavnet ditt. Du bør velge "Opprett prosjekt på eksisterende sted (fra eksisterende kilde)" under "Innhold" og bla til WordPress-rotkatalogen. La standardene stå for de andre seksjonene, og klikk deretter på "Fullfør" -knappen.

Gå til "Window -> Preferences -> PHP -> Debug" og endre "PHP Debugger" -innstillingen fra Zend til XDebug.

Deretter går du til "Window -> Preferences -> PHP -> Debug -> Installed Debuggers" og dobbeltklikk XDebug. Endre alternativet "Godta eksternt økt (JIT)" fra "av" til "localhost" og klikk "OK".

Trinn 2 Feilsøk koden din

Angi brytepunkter

Et bruddpunkt er en markør som forteller debuggeren å stoppe et programs utførelse på en bestemt linje med kode slik at du kan inspisere hva som skjer.

Dette er enkelt. Bare åpne filen som inneholder koden du vil inspisere (for eksempel index.php-filen i et tema du utvikler). Deretter dobbeltklikk på det grå området til venstre for linjen på venstre side av filvinduet. En blå prikk skal vises som den gjør på linje 20 i eksemplet nedenfor (index.php fra twentlyeleven-temaet).

Start en Xdebug-sesjon

Når du har satt inn et brytepunkt, åpner du en nettleser og går til ditt lokale WordPress-område, og legger til spørringsstrengen XDEBUG_SESSION_START = wordpress som dette:

 http: // localhost / sti / til / wordpress / XDEBUG_SESSION_START = wordpress

Dette vil fortelle xdebug å sette en cookie som den vil se etter på påfølgende sidelast. Hvis alt er konfigurert riktig, bør du se et varsel om at Eclipse har mottatt en innkommende økt. Klikk på "OK" for å godta, og så skal debug-visningen åpne på den første linjen i index.php.

Du kan inspisere variabler som for tiden er i bruk ved hjelp av vinduet "Variabler" -inspektør på høyre side. I eksemplet ovenfor er det ingen lokale variabler å se på, bare de globale $ _COOKIE-, $ _ENV-, $ _FILES-, $ _GET-, $ _POST-, $ _REQUEST-, $ _SERVER- og $ GLOBALS-variablene.

Trinn gjennom kode

For å se et eksempel på mer nyttig informasjon, må du gå gjennom noen linjer med kode for å komme til The Loop. Eclipse "Debug" -vinduet har flere kontroller du bør forstå:

  1. Fjern alle avsluttede lanseringer - Slett tidligere økter
  2. Gjenoppta - Gjenoppretter kjøring av kode. Hvis du ikke har noen andre brytpunkter satt, vil programmet fullføres normalt.
  3. Henge - Gjelder ikke for PHP-feilsøking.
  4. Terminere - Stopp utførelsen av programmet og feilsøking.
  5. Koble fra - Stopp feilsøking, men fortsett å utføre programmet.
  6. Gå inn i - Følg koden som den kjører line-by-line, inkludert å gå inn i funksjonsanrop. Dette er nyttig for å feilsøke en bestemt funksjon.
  7. Tråkke over - Hopp over visning av utførelse av et bestemt funksjonsanrop. Gjennomføring vil fortsette på neste linje.
  8. Trinn tilbake - Hvis det er inne i en funksjon, vil dette hoppe til hvor det kommer tilbake.
  9. Slip til ramme - Gjelder ikke for PHP-feilsøking.
  10. Bruk trinnfiltre - Ikke støttet i Eclipse PDT

Klikk på "Fortsett" -knappen en gang. Eclipse debug-klienten bør neste pause på breakpointet du angir i temaets index.php-fil.

Klikk på "Step Into" -knappen. Dette vil ta deg inn i WordPress "have_posts" -funksjonen. Klikk på "Step Into" igjen, og du vil se den globale $ wp_query-variabelen vises i vinduet "Variabler".

Klikk "Step Return" for å avslutte funksjonen "have_posts", og du kommer tilbake i index.php-filen. I eksemplet vil dette etterlate deg ved en samtale til funksjonen "twentyeleven_content_nav". Du kan enten gå inn i den for å se hva som skjer hvis du er interessert, eller gå over den hvis du ikke er det.

Ved å klikke på "Step Over" tar du deg til anropet til The Loop. Stepping into "the_post" vil lære deg mye om hvordan WordPress henter data og skriver den til siden under The Loop. Hold øye med vinduet "Variabler" for å overvåke hvordan lokale og globale variabler endres når funksjonen utføres.

Du kan også gå gjennom din egen kode på samme måte for å se hvordan variabler blir manipulert ettersom koden kjører.

Når du har sett alt du vil se, klikker du på "Fortsett" -knappen, og bloggen din blir ferdig lastet som vanlig.

Hvis du klikker en kobling til en annen nettleserside, merk at debuggeren vil laste igjen, selv om XDEBUG_SESSION_START spørringsstrengen ikke legges til slutten av nettadressen.

Lukker feilsøkingssesjonen din

Når du ikke lenger vil at Eclipse skal gå inn i feilsøkingsmodus når en side lastes på din lokale blogg, skriv bare inn et URL-anrop som ser slik ut i nettleseren din:

 http: // localhost / sti / til / wordpress / XDEBUG_SESSION_STOP

Det vil slette xdebug-cookien, og sidene dine lastes normalt til du åpner en annen xdebug-økt.

Bruker du Eclipse og Xdebug for hardcore WordPress utvikling? Hvis ja, har du noen ekstra tips? Hvis ikke, hva hindrer deg fra dykking i?