2010-06-20 3 views
8

Ich habe einige sehr große C-Dateien, mit vielen Funktionen. Ich muss den Ausführungspfad zur Laufzeit verfolgen. Es gibt keine Möglichkeit, dass ich es durch Debugging verfolgen kann, da es sich um einen Hypervisor-Code handelt, der derzeit über qemu läuft und viele binäre Übersetzungen ausführt.Hinzufügen von Printf zum Start aller Funktionen in einer Datei

Kann mir jemand auf ein Skript in Perl oder Python zeigen, die eine printf am Anfang aller Funktionen hinzufügen kann und der Text könnte etwas wie "Ich bin in < Funktionsname>" sein?

Antwort

23

Pass einfach -finstrument-functions an gcc beim Kompilieren. Einzelheiten finden Sie in der Manpage gcc(1).

+1

Perfekte Antwort auf den Geist der Frage. –

+2

+1. Einfach hinzufügen, dann könnte der Zugangscode wie folgt aussehen: printf ("Funktionsdetails:% s \ n", ____PRETTY_FUNCTION____); ____PRETTY_FUNCTION____ ist ein vordefiniertes Makro, das eine Zeichenfolge mit Funktionsname + Signatur bereitstellt. – Fanatic23

+0

Hinweis: Sie müssen jede Trace-Funktion manuell implementieren oder ein Tool wie 'etrace' verwenden, das den ELF analysiert und diese Aufrufe für Sie generiert: https://stackoverflow.com/questions/6176284/why-doesnt-finstruction-functions -arbeite für mich –

Verwandte Themen