2009-04-18 6 views
3

Die Idee ist, dass bei einer bestimmten Eingabe für das Programm, irgendwie möchte ich automatisch durch das komplette Programm Schritt und seinen Kontrollfluss zusammen mit allen Daten wie verwendet werden Klassen und ihre Variablen. Ist das ein einfacher Weg, dies zu tun? Oder kann dies durch ein Scripting über gdb erfolgen oder muss es in gdb geändert werden?Drucken Sie den gesamten Kontrollfluss durch gdb einschließlich der Werte der Variablen

Ok der Grund für diese Frage ist wegen einer Idee in Bezug auf ein Debugging-Tool. Was es macht ist das. Wenn einem Programm zwei verschiedene Eingaben zugewiesen werden, von denen eine eine falsche Ausgabe und die andere eine falsche Ausgabe verursacht, wird angezeigt, welcher Teil des Steuerungsflusses für sie unterschiedlich ist.

Also was ich denke, wird benötigt werden, ist eine komplette Dump dieser 2 Kontrollflüsse in eine Diff-Engine gehen. Und wenn die beiden Eingaben ähnlichen Kontrollflüssen folgen, dann würde ihr Unterschied (in vielen Fällen) eine gute Vorstellung davon geben, warum der Fehler existiert.

Dies kann zu einem sehr ansprechenden Werkzeug mit vielen Funktionen gemacht werden.

+1

Warum möchten Sie das tun? Statische Analysewerkzeuge wie Valgrind/Coverity sind möglicherweise besser auf Ihre Bedürfnisse abgestimmt. –

+0

Nur Quellzeilen: http://stackoverflow.com/questions/764382/automate-tracing-in-gdb, Aufrufe von Funktionen: http://stackoverflow.com/questions/311948/make-gdb-print-control-flow- von Funktionen, wie sie heißen? lq = 1 –

Antwort

2

Erzähl uns ein wenig mehr über die Umwelt. dtrace zum Beispiel wird in Solaris oder Leopard eine hervorragende Arbeit leisten. gprof ist eine andere Möglichkeit.

A Bumpo Version dieser könnte mit ja (1) oder erwarten (1) erfolgen.

Wenn Sie Lust auf GDB can be scripted with Python in einigen Versionen erhalten möchten.

1

Was Sie beschreiben, klingt ein bisschen wie GDB "Tracepoint-Debugging". Siehe die interne Hilfe von gdb "help tracepoint". Sie können auch ein White Paper hier sehen: http://sourceware.org/gdb/talks/esc-west-1999/

Leider ist diese Funktionalität derzeit nicht für nativen Debuggen implementiert ist, aber ich glaube, dass CodeSourcery einige Arbeit auf es tut.

Verwandte Themen