Soweit ich weiß, sagt GCOV Instrumentierung Daten nur, dass ein Punkt im Code ausgeführt wurde (und vielleicht wie oft). Aber es gibt keine Beziehung zwischen den Codepunkten, die instrumentiert werden.
Es klingt wie, was Sie wollen, ist Pfade durch den Code zu bestimmen. Um dies zu tun, müssen Sie entweder eine statische Analyse des Codes (erfordert einen vollständigen C Parser, Namensauflösung, Flow-Analyzer), oder Sie müssen die dynamische Instrumentierung Punkte in der Reihenfolge der Ausführung zusammen.
Die erste erfordert, dass Sie Maschinen finden, die in der Lage sind, C in seiner ganzen Pracht zu verarbeiten; du willst das nicht selbst wiederholen. GCC, Clang, unser DMS Toolkit sind Auswahlmöglichkeiten. Ich weiß, dass der GCC und Clang ziemlich ernsthafte Analysen durchführen. Ich bin mir ziemlich sicher, dass Sie zumindest eine intraprozedurale Kontrollflussanalyse finden können; Ich weiß, dass DMS das kann. Sie müssten GCC und Clang anpassen, um diese Daten zu extrahieren. Sie müssten DMS konfigurieren, um diese Daten zu extrahieren. Die Konfiguration ist einfacher als die Anpassung, da es sich um eine Designeigenschaft und keine "benutzerdefinierte" Aktion handelt. YMMV.
Mithilfe der GCOV-Daten können Sie dann die Flüsse zwischen den GCOV-Datenpunkten ermitteln. Es ist mir nicht klar, dass dies alles andere als das, was Sie bereits mit der statischen Kontrollflussanalyse erhalten, mit sich bringt, es sei denn, Ihr Ziel besteht darin, Ausführungsspuren anzuzeigen.
Um dies dynamisch auszuführen, können Sie jeden Datensammlungspunkt im instrumentierten Code erzwingen, um festzustellen, dass es der zuletzt gefundene Punkt ist. bevor dies gemacht wurde, würde es den zuletzt aufgetretenen Punkt aufzeichnen. Dies würde tatsächlich eine Kette von Referenzen zwischen Punkten erzeugen, die mit dem Kontrollfluss übereinstimmen würden. Das hat aus Ihrer Sicht zwei Probleme, denke ich: a) Sie müssten GCOV oder ein anderes Werkzeug modifizieren, um diese andere Art von Instrumentierung einzufügen, b) Sie müssen sich sorgen, was und wie Sie "Vorgänger" wann aufzeichnen Ein Datensammelpunkt wird mehr als einmal getroffen.