C keine Form der Selbstbeobachtung nicht unterstützt oder Sachen in der Laufzeit oder auf der virtuellen Maschine automatisch durch Magie zu tun; Es gibt keine virtuelle Maschine, und die Laufzeitunterstützung besteht im Grunde nur aus Bibliotheken mit "totem" Code, die Standardfunktionen bereitstellen.
Und als Subtwo darauf hingewiesen, wenn Sie etwas tun möchten (wie Log-Eingang/Ausgang), muss es getan werden und damit Zeit brauchen. Sie können diese Strafe nicht einfach "verstecken", es gibt sehr wenig Overhead, um es einzufügen.
Ein Standard-Profiler könnte Ihnen einige Einblicke geben, indem Sie Ihr Programm statistisch abtasten, um zu sehen, welche Funktionen ausgeführt werden, aber das wird nicht geben Sie die Aufrufreihenfolge, nur zufällige Positionen, wo Ihr Programm Code zum Zeitpunkt der Stichprobe ausgeführt wurde.
Sie könnten vielleicht zu einer Präprozessor-Trickserei wechseln, dies ist eine gebräuchliche Art, "Boilerplate" -Sachen wie Logging zu machen, indem Sie zum Beispiel einige Makros definieren, die Sie dann an den Ein-/Ausstiegspunkten jeder Funktion platzieren. Dennoch müssen Sie sich daran erinnern, die Makros einzubeziehen, und natürlich wird jede Leistungseinbuße bei der Protokollierung vorhanden sein.
In welchem Zweck möchten Sie das? Profiling oder Debugging? – epatel
Es ist eigentlich ein ziemlich interessantes Thema. Es scheint da draußen genug Magie zu sein, um etwas in Richtung der Aspektprogrammierung in C zu unterstützen ... Wer weiß? –
Seit ich gerade mit dem Codieren begonnen habe, dient der Zweck dem Debuggen. Aber in der späteren Phase könnte ich dies auch für das Profiling benötigen. –