11 februari, 2011
Debugger för Silverstripeprojekt
Som dotNetutvecklare som skulle ta steget över till att jobba med Silverstripe och därmed PHP hade jag lite svårt att hitta något verktyg jag gillade att koda i. Mest för att jag var så van vid, eller ska man kalla det bortskämd med att sitta och jobba i Microsofts IDE Visual Studio. För det ska sägas att jag har fortfarande inte hittat något verktyg/IDE som slår VS när det gäller enkelhet och användarvänlighet. Och kombinerar du det sedan med Resharper så har du en utvecklingsmiljö som slår det mesta när det gäller att hjälpa dig i ditt jobb som utvecklare.
Så med den bakgrunden är det kanske lätt att känna att ingenting annat duger då man ska ta steget över till PHP och välja ett annat verktyg att jobba i. Men efter lite testande med program som Aptana och Eclipse via mer vanliga texteditorer som Textmate hittade jag slutligen via en kollega fram till Netbeans. Och i alla fall för mina behov känns det som det bästa programmet för PHP-utveckling.
Men jag tänkte inte ägna det här inlägget så mycket åt jämförelser mellan olika program att använda för PHP-utveckling utan istället tipsa om hur du i Netbeans och ett Silverstripeprojekt kan få tillgång till en annan gammal VS-favorit, nämligen debuggern. För om det var något jag verkligen saknade då jag började koda PHP så var det debuggningsmöjligheterna i Visual Studio och det faktum att du alltid bara var ett klick ifrån att kunna se exakt vad som hände och när det hände i din dotNetkod. Visst i PHP kan man få ut fina stack-tracear och jobba med att skriva ut variabler och objekt i sidan för att se vad de innehåller. Men allvarligt talat, känns inte det lite nittiotal? Så om du har ledsnat på det tillvägagångssättet för att felsöka i koden eller om du som jag är van från någon annan miljö vid att kunna använda en debugger. Då tycker jag att du ska prova Netbeans och debuggern Xdebug.
Det finns en hel del information om hur man får igång Xdebug i Netbeans på nätet redan. Men kanske för att jag kör Mac och MAMP så hade jag lite problem med att få igång det. Så därför tänkte jag här dela med mig av hur mina inställningar ser ut ifall det är någon annan som också upplever problem med att få xdebug att fungera med den konfigurationen.
Gör såhär för att komma igång:
Ladda ner och installera MAMP och Netbeans på din Mac om du inte redan har det.
Konfigurera upp xdebug för användning med PHP 5.3
- Ta hem en förkompilerad version av Xdebug genom att ta ner PHP Remote Debugging Client, från Komodo IDE. Den version jag använder är 6.1.0.
- Packa upp filen och kopiera ”xdebug.so” från katalogen ”Komodo-PHPRemoteDebugging-6.1.0-60797-macosx/5.3/” till ”Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/”
- Konfigurera php för att använda xdebug: Öppna filen Applications/MAMP/conf/php5.3/php.ini och klistra in följande:
[xdebug]
zend_extension=”/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so”
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=”netbeans-xdebug”De två sista inställningarna ”remote_port” och ”idekey” hittar du om du öppnar Netbeans och går till ”Netbeans->Settings->PHP” och kollar under rubriken ”Debugging”. Kontrollera att du har samma värden där som i den bifogade konfigurationen. Ändra till de värden som står i din Netbeans om de inte är samma som ovan.
Den bifogade konfigurationen ovan är den minsta möjliga (som funkat för mig). Men det finns många andra inställningar och funktioner i xdebug man kan testa. En särskilt intressant är ”profiler” som hjälper dig att analysera din applikation för att hitta flaskhalsar och prestandaproblem. Om du vill prova den hittar du dokumentationen här: http://www.xdebug.org/docs/profiler.
- Xdebug fungerar inte med Zend. Så kommentera bort alla referenser till Zend i ”Applications/MAMP/conf/php5.3/php.ini”, dvs de som börjar med ”zend_”.
- Starta om MAMP och klicka på ”Open startpage” från MAMPs kontrollpanel och sedan på fliken phpInfo. Sök på ”xdebug” och se till så att att xdebug har registrerats.
- Gå in i Netbeans och ladda ditt Silverstripeprojekt. Högerklicka på projektet under ”Projects” och välj Properties. Klicka på ”Run Configuration” och fyll i ”Project URL”, tex: http://localhost/[sitenamn]/
- Öppna inställningarna igen (”Netbeans->Settings->PHP”) och klicka ur checkboxen ”Stop at first line” om den är iklickad. På det sättet ser du till att xdebug bara stannar på de av dig skapade breakpoints istället för att också stanna på den första raden kod i din applikation.
Nu är du klar. Sätt en breakpoint i en php-fil i din applikation genom att klicka på ett radnummer och testa debuggern genom att klicka på ”Debug project” uppe i Netbeans huvud-toolbar (eller använd cmd+F5).
Mer läsning
Netbeans information om konfiguration av Xdebug