Debugging – machen das nicht alle so?

Als ich in meinem aktuellen Projekt einen Fehler nicht beheben konnte und mir leider auch die Rechte fehlten um auf das entsprechende Apache Logfile zuzugreifen war ich nach einer kurzen Diskussion, wie man das Problem angeht, verwundert. Ich dachte ja, das alle Entwickler so etwas ähnlich angehen:

  1. Versuchen Zugriff auf alle Logfiles zu bekommen und sinnvolle Logmeldungen einbauen bzw. einen Debugger zu nutzen –
    Das hat in diesem Fall ja leider nicht geklappt 🙁
  2. Dann eben “Old-School” Debugging:
    1. Ich suche mir eine Stelle vermutlich nahe genug am Fehler liegt, aber noch erreicht wird sollte das Programm sich , wie in diesem Fall, mit einem HTTP 500 Fehler verabschieden
    2. Je nach Programmiersprache ein exit, throw Exception, die um einen 500er Fehler auszulösen. Und eine irgendwie hilfreiche Ausgabe zu erzeugen
    3. Je nachdem ob die Stelle erreicht wird die meine Debugzeile sinnvoll vor oder zurückschieben
    4. Als ich dann die Stelle eingegrenzt hatte, konnte ich die Ursache recht schnell mit der Ausgabe einiger Variablen feststellen und beheben.
  3. Eine weitere Methode die ich gerne anwende, wenn kein vernünftiges Debugging Tool verfügbar ist bzw. um die Fehlerstelle schnell und einfach einzugrenzen:
    1. Großzügig Sourcecode (ca. die Hälfte, wie bei einer Binärsuche 🙂 ) entfernen und testen, ob der Fehler noch auftritt.
    2. Falls ja, mehr Sourcecode entfernen
    3. Falls nein, etwas weniger bzw einen Teil des entfernten Codes wiederherstellen

Mit den beiden Methoden komme ich meist recht schnell zum Ziel, wenn es keine “normale” Debugging Möglichkeit gibt.