Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Quellcode als PAP oder Struktogramm darstellen?

44 views
Skip to first unread message

Cornelia Schmidt

unread,
Dec 4, 2001, 5:23:10 AM12/4/01
to
Hallo NG,

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

Andreas Bierhals

unread,
Dec 4, 2001, 8:14:57 AM12/4/01
to
Moin,

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

Jens Schweikhardt

unread,
Dec 4, 2001, 8:20:12 AM12/4/01
to
Cornelia Schmidt <cap...@web.de> wrote
in <3C0CA40E...@web.de>:
#
# Hallo NG,
#
# 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.

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)

Ingo Breuer

unread,
Dec 4, 2001, 9:58:46 AM12/4/01
to
hallo,
du kannst mit easycase deinen quellcode in ein struktogramm umsetzen.
solltest aber vorher eine kopie von der datei machen, da das programm dir
jede menge kommentare reinhaut.
url ist www.aesycase.at
gruss ingo

Felix von Leitner

unread,
Dec 4, 2001, 3:49:24 PM12/4/01
to
Thus spake Cornelia Schmidt (cap...@web.de):

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

Sven Geggus

unread,
Dec 5, 2001, 2:29:01 PM12/5/01
to
Cornelia Schmidt <cap...@web.de> wrote:

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

Andreas Bierhals

unread,
Dec 6, 2001, 6:52:16 AM12/6/01
to
Moin,

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

Florian Zschocke

unread,
Dec 6, 2001, 10:42:59 AM12/6/01
to
Sven Geggus wrote:
>
> 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.

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.

Cornelia Schmidt

unread,
Dec 7, 2001, 3:36:43 AM12/7/01
to
Hallo NG,

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

0 new messages