* Manfred Rebentisch
Bitte nehmt das Beispiel nicht so wörtlich. Ich habe komplexe Beispiele, ist aber das gleiche Prinzip: sub kann NULL sein, wenn z.B. option 0 ist - und das darf nicht sein. Man könnte natürlich richtig programmieren und ein "if(sub)" vor die printf Anweisung stellen. Aber es geht mir darum, solche Fälle, die zur Laufzeit mit einem Crash enden (außer bei printf), zu finden.
Naja, wenn das Programm crashed kannst du ja einen Coredump erzeugen lassen (erst 'ulimit -c unlimited') und den dann mit gdb analysieren. Wenn du vorher das Programm mit Debuginformationen (-g) übersetzt hast, bekommst du damit die Codezeile. Außerdem kannst du das Programm direkt im gdb ausführen. Und Tools wie 'valgrind' erleichtern das Finden von Fehlern in der Speicherverwaltung zur Laufzeit. Allerdings muss da natürlich auch der Fehler angesprungen werden. Gute statische Analysetools kenne ich jetzt keine. Also Tools die Programmierfehler schon beim Kompilieren erkennen. Außer eben die Warnungen vom gcc. Gruß, Bernhard