gibt es eigentliche auch irgendwelche Programme, die einen bestehenden
Quellcode in einer Art PAP oder Struktogramm darstellen?
Ich hab hier naemlich so an die 4000 Zeilen Spaghetti-code, der, wie Ihr
bereits festgestellt hab, sehr unsauber programmiert wurde. Es sind
keinerlei Komemntare enthalten, und ich hab die nette Aufgabe diesen zu
debuggen und zu erweitern.
Vielen Dank im Vorraus
Cornelia
Cornelia Schmidt <cap...@web.de> writes:
> Hallo NG,
>
> gibt es eigentliche auch irgendwelche Programme, die einen bestehenden
> Quellcode in einer Art PAP oder Struktogramm darstellen?
guck Dir mal http://www.doxygen.org an.
Mfg.
Andreas
Eine Regel aus Kernighan & Plauger, The Elements of Programming Style:
"Don't patch bad code. Rewrite it."
Mit anderen Worten, laß Dir erklären, welche Funktionalität benötigt wird
("spec"), und fang mit
int main(int argc, char **argv)
{
return 0;
}
an. Oder willst Du, daß diejenige nach Dir über denselben grauenhaften
Code schimpft, für den Du eigentlich nichts kannst? Eben. 4000 Zeilen
sind wesentlich schneller neu geschrieben, als verschlimmbessert.
Regards,
Jens
--
Jens Schweikhardt http://www.schweikhardt.net/
SIGSIG -- signature too long (core dumped)
Tolle Idee. Und das druckst du dann mit deinem Taschen-DIN-A-23 Drucker
aus, wie?
Wenn du den Code nicht verstehst, dann laß das jemanden machen, der sich
damit auskennt. Man mag es kaum glauben, aber manchmal haben Aufgaben
mit Arbeit zu tun! Das ist der Grund, wieso man dafür Geld kriegt oder
sich damit einen Namen machen kann.
Wenn du ernsthaft glaubst, mit einem Struktogramm könntest du einen
nicht lesbaren Quellcode verstehen, dann mußt du noch so viel lernen,
daß dieses Projekt offensichtlich deine Fähigkeiten um mehrere
Größenordnungen übersteigt.
Felix
hm, das war doch das Teil mit dem segmentation fault oder?
Es gibt ein kommerzielles Tool mit der Bezeichnung "Insure++", dass unter
anderem waehrend der Laufzeit eine Aufrufhierarchie der Prozeduren und
Funktionen mitschreibt die durchlaufen werden.
Ich find das recht gut. Ob es beim Verstaendnis fremder Software weiterhilft
sei mal dahingestellt. Guter Code enthaelt jedoch viele Zeilen, die nie oder
eher selten angesprungen werden! Ich denke da nur an malloc aufrufe, deren
Returnwert NULL ist und die zugehoerige Error recovery. Kann man sowas
ueberhaupt simulieren?
Zurueck zu insure. Die Hauptaufgabe des Tools ist das Entdecken von
Laufzeitfehlern, ueberschriebenen Buffern und aehnlichem, im Falle deines
segfaults waere ziemlich genau die Stelle im Code rausgekommen an der es
gekracht hat.
Freie tools, die helfen sowas aehnlich schoen zu debuggen wie mit insure
fehlen noch zu meinem vollen Open Source Glueck. Die Anschaffung einer
Lizenz ist nicht gerade billig, aber aufgerechnet gegen die Kosten eines
Entwicklers, der ohne das Tool einen Tag Lang Fehler gesucht haette
eventuell doch recht sinnvoll.
Ich habe grade mal mpatrol getestet, ein aehnliches (freies) Tool, das aber
insure IMO noch nicht ganz das Wasser reichen kann.
Sven
--
"And I'm right. I'm always right, but in this case I'm just a bit more
right than I usually am." (Linus Torvalds, Sunday Aug 27, 2000)
/me is giggls@ircnet, http://geggus.net/sven/ on the Web
Sven Geggus <sv...@geggus.net> writes:
> Freie tools, die helfen sowas aehnlich schoen zu debuggen wie mit insure
> fehlen noch zu meinem vollen Open Source Glueck.
die glibc stellt aber bereits einige schöne Hilfen
zu diesem Thema zur verfügung. Mit 'info libc' wird man
unter dem Stichwort 'Allocation Debugging' fündig.
In C++-Programmen mit new/delete funktionieren diese Mechanismen nicht
mehr auf direktem Wege. Man kann aber z. B. new, delete, new[], delete[]
testweise überladen (z.B. ganz platt unter Verwendung von malloc/free),
sämtliche Speicheranforderungen und -Freigaben unter Zuhilfenahme
der Funktion backtrace (execinfo.h) loggen und das Logfile hinterher
mit einem entsprechenden Perl-Skript o. Ä. auswerten.
So sollten sich auch hier ohne Zuhilfenahme kommerzieller Tools
sämtliche Speicher-Inkonsistenzen finden lassen.
Viele Grüße
Andreas
Ein Link waere noch ganz praktisch gewesen:
http://www.parasoft.com/products/insure/index.htm
Ansonsten gibt es noch "Understand for C++", ebenfalls ein
kommerzielles Tool. Das hilft Dir, den SourceCode von ganzen
Projekten zu anaylieren, indem es Dir Include- oder Callgraphen
aufzeichnet, Bezeichner und Funktionen auflisted, usw. Dafuer gibt
es auch eine evaluation license.
http://www.scitools.com/cpp.html
Gruss,
Florian.
vielen Dank fuer die zahlreichen Antworten.
Leider war noch nicht so ganz das Tool dabei, das ich suchte.
Nach einer weiteren muehsamen Analyse des mir zur Verfuegung stehenden
Quellcodes hab ich mich nun doch entschlossen, das Programm neu zu
schreiben.
Gruss
Cornelia