Hilfreich Fehler zu klassifizieren:
Ebenfalls zu dieser Kategorie zählen Fehler beim Linken oder Anlauf–Fehler beim Start wegen fehlender Bibliotheken.
Hier eine Liste gängiger Syntaxfehler mit näherer Beschreibung.
Moth found trapped between points at Relay # 70, Panel F, of the Mark II Aiken Relay Calculator while it was being tested at Harvard University, 9 September 1945. The operators affixed the moth to the computer log, with the entry: "First actual case of bug being found". They put out the word that they had "debugged" the machine, thus introducing the term "debugging a computer program". In 1988, the log, with the moth still taped by the entry, was in the Naval Surface Warfare Center Computer Museum at Dahlgren, Virginia.
Aktuelles (2014) Beispiel für sicherheitsrelevanten Bug in Apple IOS 7 (C-Programmcode).
// ... hashOut.data = hashes + SSL_MD5_DIGEST_LEN; hashOut.length = SSL_SHA1_DIGEST_LEN; if ((err = SSLFreeBuffer(&hashCtx)) != 0) goto fail; if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail; if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; err = sslRawVerify(...); //...
Entscheidender Check ( sslRawVerify()) wird u.U. nicht ausgeführt, ermöglicht Angriffe auf verschlüsselte (TLS/SSL) Verbindungen.
Meiste Zeit bei Programmentwicklung i.d.R. für (Laufzeit-/Semantik-) Fehlersuche.
Standardverfahren sind
printf, cout statements an den kritischen
Stellen
umständlich, zeitraubend
Viel eleganter mit debugger
Eclipse am CIP
Dann starten auf Kommandozeile:
eclipseCPP
Auch andere IDEs: kdevelop auf Linux, VisualStudio auf Windows, ...
IDEs gedacht für größere Entwicklungsprojekte, daher meist etwas sperrig in der Handhabung:
erfordert Projektdefinition, Konfiguration Build-System