Debugging Howto
Jasper: Bij zandbakken op s4 staat het bijzonder slordig als klanten in hun testversie deze informatie te zien krijgen. (daar krijg je in contact met een klant vrijwel altijd vragen over)
Ivo: Het is met name een kwestie van informatieverstrekking. Bij de Achievo test installaties van Waag en Koning/Renes heb ik bewust de debug aan laten staan, omdat ik die info wil hebben als ze een fout melden. Ik heb ze dan ook erbij gezegd wat dit is, waarvoor het is, en dat ik het graag wil ontvangen als ze een fout rapporteren. Op die manier is het geen probleem dat het er staat en heeft de klant zelfs kunnen zien dat we hier een methodiek voor hebben.
In alle M5/M6 platformen en ATK5 webapplicaties kun je gebruik maken van 'smart debugging'. Daarbij gebruik je 1 van deze 2 methodes (of een combinatie):
Methode 1: debugging op IP
Syntax:
$config_smart_debug[] = array("type"=>"ip","list"=>array("195.168.0.10","195.168.0.11"));
Dit is de nieuwe syntax voor de oude if-constructie. Het nadeel van deze methode is dat je zelf altijd debug hebt, en je dus de config moet aanpassen of je wil kijken of de site het ook doet zonder debuginfo (bijv. om heisenbugs uit te sluiten).
Methode 2: debugging ter plekke aanzetten als je hem nodig hebt
Dit is een methode die werkt *ZONDER* de config aan te passen (dus nooit meer per ongeluk aan!). Je moet de feature alleen 1-malig activeren in de config en een wachtwoord verzinnen. Dit is wat mij betreft de voorkeurmethode.
Syntax eenmalig in de config:
$config_smart_debug[] = array("type"=>"request", "key"=>"eenwachtwoord");
Nadat je deze in je config hebt staan, kun je als volgt debug *realtime* aktiveren:
http://eensite/index.php?atkdebug[key]=eenwachtwoord
Alle vervolgrequests hebben automatisch debuginfo, totdat je hem weer uitschakelt.
Het mooie is dat dit wachtwoord de debug *ALLEEN* voor je eigen sessie aktiveert. De klant krijgt dus niets te zien. Wil je debug weer uitzetten, dan volstaat het om even een verkeerd wachtwoord te zetten, bijv:
http://eensite/index.php?atkdebug[key]=off
Wil je dit even uitproberen, ik heb dit op mijn eigen site draaien met 'magicbeans' als wachtwoord:
gewoon site opvragen:
http://beta.epointment.com/
debug aktiveren:
http://beta.epointment.com/index.php?atkdebug[key]=magicbeans
gewone vervolg request zal nu ook debuginfo hebben:
http://beta.epointment.com/
debug deaktiveren:
http://beta.epointment.com/index.php?atkdebug[key]=x
Het is ook mogelijk om het debug level real-time aan te passen. Dit werkt op een zelfde manier als het aanzetten van de debug informatie in je sessie:
http://eensite/index.php?atkdebug[level]=2
Hiermee kun je dus ook debugging uitzetten:
http://eensite/index.php?atkdebug[level]=0
Dit werkt ook gewoon als je debugging op IP niveau gebruikt. Het eerder door Ivo opgenoemde nadeel van deze methode hoeft dus niet een nadeel te zijn.