Ich arbeite an einem Projekt, bei dem ich herausfinden muss, welche Funktionen in bestimmten Linux-Programmen (geschrieben in C) mit bestimmten Eingaben aufgerufen werden. Mein aktueller Ansatz bestand darin, ein Programm mit der Option -pg (Profiling-Option) zu kompilieren, auszuführen und herauszufinden, welche Funktionen durch die Verarbeitung von gprofs Ausgabe aufgerufen werden. In der Ausgabedatei erscheinen nur Funktionen, die mindestens einmal aufgerufen wurden.Welche Funktionen werden in einem Multiprozessprogramm aufgerufen, ohne die Quelle zu ändern?
Das offensichtliche Problem ist, dass nur ein Prozess in die gprof-Ausgabedatei schreiben kann. Wenn das Programm mehrere Prozesse ausgibt, bekomme ich keine Profiling-Ausgabe von den anderen Prozessen.
Gibt es eine Möglichkeit, gprof eine Ausgabedatei für jeden Prozess erstellen zu lassen (möglicherweise mit PID gekennzeichnet)? Das Handbuch schlägt vor, dass jeder Prozess in ein anderes Verzeichnis geändert wird, aber ich möchte den Quellcode dafür nicht ändern. Gibt es ein anderes Tool für Linux, das helfen kann?
gcov hat genau das gleiche Problem. Die Abdeckung des Child-Prozesses wird nicht gemeldet. –