Debuggen is een term die gebruikt wordt voor het zoeken naar fouten in computercodes en het optimaliseren ervan. Er zijn verschillende aanleidingen om te debuggen. Bijvoorbeeld als er een fout in de website zit of als je site traag is.

In dit artikel zullen we meer informatie geven over waar je mee rekening moet houden als je gaat debuggen, welke problemen er kunnen optreden en welke tools je hiervoor kunt gebruiken.

Meer informatie over het debuggen van problemen voor Magento op Hypernode technologie vind je in de Hypernode support documentatie. More information in English about general troubleshooting on Hypernode can be found in the Hypernode support documentation

Formuleren van een probleemstelling

We raden je aan om te debuggen op een testomgeving (op een subdomein bijvoorbeeld). Het liefst een die zoveel mogelijk overeen komt met je live omgeving. Debuggen op de live omgeving kan ook, maar zorg er dan voor dat je backups gereed hebt. Meer over backups vind je in het artikel Alles Over Back-ups.

Voordat je begint met debuggen moet je weten weten waarnaar je op zoek moet, oftewel ‘Wat is eigenlijk het probleem’? De meeste problemen zijn goed te reproduceren tenzij een probleem af en toe voorkomt. Een weigerend proces (bijvoorbeeld door overbelasting) kan onverwacht gedrag in je applicatie veroorzaken. Zonder dat er een concrete probleemstelling is, is debuggen erg lastig.

Er is echter een goede kans dat als je op deze pagina bent beland, je dan al bekend bent met het probleem (foutmelding, trage pagina etc.). Het is dan ook niet moeilijk om een probleemstelling te formuleren. Als je bekend bent met een probleem, is het handig om vooraf zoveel mogelijk informatie te vergaren hierover. Het kan ook handig zijn dit ergens te noteren. Zaken die nuttig kunnen zijn, zijn als volgt:

  • Waar en wanneer treedt het probleem op (URL, specifiek apparaat, etc.)?
  • Wat zijn de laatst bekende tijdstippen dat het probleem zich heeft voorgedaan?
  • Is er een foutmelding bekend?
    • Zo ja, geeft deze foutmelding informatie (bestand, type fout, regelnummer etc.)? Tip: Maak een screenshot van de foutmelding
    • Zo nee, wat gaat er dan mis?

Voorbeelden van probleemstellingen

Hieronder vind je een selectie van beschrijvingen van probleemstellingen. Als onderstaande punten bekend zijn, raden we je aan om het probleem in een soortgelijke situatie na te bootsen. Zo weet je zeker dat het probleem zich nergens meer voordoet.

Enkele voorbeelden zijn:

1. Voorbeeld beschrijving van een probleem (weergaveprobleem, frontend):
Bij een bezoek van de /over pagina op de browser Chrome op Windows gebaseerde besturingssystemen lopen bepaalde teksten buiten de kaders ongeacht het tijdstip. Het probleem is te reproduceren door de /over pagina op te vragen op andere systemen met Chrome, maar niet met Internet Explorer of Firefox als browser.
2. Voorbeeld beschrijving van een probleem (prestatie probleem, backend): Bij een bezoek van de homepagina van onze website op de browser Internet Explorer op Windows gebaseerde besturingssystemen moet er circa 30 seconden gewacht worden tot de website geladen is. Het probleem doet zich constant voor op verschillende systemen en verschillende browsers. Een simpel bezoek aan een willekeurige pagina op de website is genoeg om het te reproduceren.
3. Melden van een foutmelding: Bij het plaatsen van een reactie op een willekeurig artikel op onze website met de browser Safari op een Mac krijgen we de foutmelding: Parse error: syntax error, unexpected ‘{‘ in /path/to/file on line 112 ongeacht het tijdstip. Het probleem is te reproduceren op andere systemen ongeacht browser door via de backend een artikel toe te voegen.

Vervolgens is het belangrijk om uit te vinden welke stappen er nodig zijn om het opnieuw voor te laten komen. Als je dit weet, kun je hier een probleemstelling van maken.

Welke soorten problemen zijn er?

Als je een probleemstelling hebt gedefinieerd, heb je ook meestal wel een goed idee met wat voor probleem je te maken gaat krijgen. We onderscheiden drie verschillende problemen:

  • Weergaveproblemen
  • Snelheidsproblemen
  • Foutmeldingen

Weergaveproblemen

Probleemstelling 1 gaf aan dat er iets met de opmaak fout ging. Dit soort problemen worden bijna altijd veroorzaakt door CSS code of platform specifieke verschillen (zoals gebruikte lettertypen). Hier gaan we in dit artikel niet verder op in. Vaak is er over dergelijke problemen genoeg te vinden op internet.

Snelheidsproblemen

Probleemstelling 2 beschreef een casus waarin een website niet snel reageerde. Dit kan door verschillende dingen veroorzaakt worden. In het artikel Website debuggen: snelheidsproblemen oplossen leggen we uit hoe je dit soort problemen kunt debuggen.

Foutmeldingen

Het komt soms voor dat bepaalde scripts een foutmelding geven. Deze zijn vaak makkelijk op te lossen door goed te kijken welke foutmelding er gegeven wordt. Hoe je deze foutmeldingen kunt debuggen vind je op de pagina Website debuggen: foutmeldingen oplossen.

Inconsistente problemen

In de praktijk zal het ook regelmatig voorkomen dat problemen niet consistent zijn (soms wel, soms niet). Als een probleem zich bijvoorbeeld op onregelmatige tijdstippen voor doet, zijn er vaak variabele omstandigheden die problemen veroorzaken. In dat geval is het aan te raden om zo veel mogelijk statistieken (logging, bezoekersaantallen, error’s etc.) te verzamelen.

Misschien probeer je scripts uit te voeren die dermate complex zijn dat dit bij veel verkeer problemen veroorzaakt. Een mogelijke oplossing kan in dergelijke gevallen het gebruik van full-page caching zijn. Het komt ook vaak voor dat problemen zich alleen op bepaalde tijdstippen voordoen. Het is dan raadzaam om te beginnen bij het controleren van de periodieke taken (cronjobs). In veel gevallen hebben dergelijke inconsistente problemen meer uitzoekwerk nodig. Het uitsluiten van componenten en externe factoren kan meer inzicht geven.

Debuggen via Shell

De commandline (shell) is een zeer krachtige tool om te debuggen. Het beschikt over verschillende tools die handig kunnen zijn voor verschillende taken. Verbinden met SSH is ondersteund op alle webhosting pakketten van Byte met uitzondering van Personal Hosting. Op de pagina Website debuggen: debuggen via Shell leggen we uit hoe je via Shell kunt debuggen.

Let op! Debuggen via Schell vereist basis kennis van Shell. Mocht je nog redelijk onervaren zijn met het werken met Shell, kijk dan op de pagina Shell Cursus.

Relevante informatie

Tips & Tricks

  • Voer updates uit van (CMS) systemen waar mogelijk.
  • Schakel één voor één verschillende stukken functionaliteit uit om zo het probleem te “isoleren”.
  • Gebruik breakpoints voor het isoleren van losse stukken code.
  • Schrijf “test scripts” voor lossen stukken logica om zo individuele functies te testen.
  • Schakel bij 500 Internal Server Errors .htaccess bestanden tijdelijk uit.

Lees meer hierover in het artikel Website debuggen: foutmeldingen oplossen.

Nuttige bestandslocaties

  • Access logs: Service Panel (service.byte.nl).
  • PHP logs: /home/users/<shortname>/logs/php (aanzetten via Service Panel).
  • Magento logs: /home/users/<shortname>/<domeinnaam>/var/report
00