Ich habe die folgende Frage und aus einer Systemperspektive wollen wissen, wie dies einfach und effizient zu erreichen.C/C++ Frage zu Trace-Programmierung Techniken
Angesichts einer Aufgabe 'abc', die mit Debug-Informationen und eine globale Variable "TRACE", die normalerweise auf 0 gesetzt ist, würde ich in der Datei "Log" die Adresse jeder Funktion, die aufgerufen wird zwischen dem Zeitpunkt, dass TRACE auf 1 und wieder auf 0 gesetzt ist.
Ich erwog dies durch eine Frontloading/Boot-Strapping-Aufgabe, die ich entwickeln würde, die die Anweisungen für ein gemeinsames Sprungmuster sieht/frame pointer push, notieren Sie die Adresse und ordnen Sie Adressen den Funktionsnamen aus den symbolischen Debug-Informationen in abc zu. Es könnte jedoch bessere System-Level-Möglichkeiten geben, dies ohne einen Frontlader zu tun, und ich bin nicht sicher, was am machbarsten ist.
Irgendwelche implementierten Techniken da draußen?
Profilometer kann bereits das für Sie tun - auch anstelle der Adresse den Namen der Funktion zeigt. Warum arbeiten sie nicht für dich? – Dummy00001
Warum interessiert Sie die Adresse der Funktion statt ihres Namens? Außerdem ist es nützlich zu wissen, welches Betriebssystem und welcher Compiler Sie verwenden. –
Ich verwende gcc/CC/xlC auf HP/Sun/IBM. Ich bin letztlich am Namen der Funktionen interessiert; Die Adresse war nur als Zwischenprodukt gedacht und könnte unnötig sein. Vielen Dank. – BlueCollar