Génération d'un graphique d'appel pour le code C
Cet article explore les techniques permettant de créer un graphique d'appel pour le code C, en particulier lorsque l'on tente d'identifier tous chemins d'exécution possibles menant à une fonction spécifique.
Créer un appel Graphique
Pour répondre à ce besoin, une approche consiste à tirer parti du pipeline d'optimisation LLVM. Ceci peut être réalisé en compilant le code avec les indicateurs -S et -emit-llvm, suivis des options -analyze et -dot-callgraph via l'outil opt. Par exemple :
$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -dot-callgraph $ dot -Tpng -ocallgraph.png callgraph.dot
Cette commande génère un graphique d'appel qui représente les chemins d'exécution potentiels, représentés sous forme de diagramme visuel.
Personnalisation de la représentation du graphique d'appel
Dans certains cas, il peut être avantageux de post-traiter le graphique d'appel pour améliorer la lisibilité. Une méthode consiste à utiliser c filt pour obtenir des noms de fonctions et de classes non mutilés. L'exemple suivant illustre ce processus :
$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -std-link-opts -dot-callgraph $ cat callgraph.dot | c++filt | sed 's,>,\>,g; s,-\>,->,g; s,<,\<,g' | gawk '/external node/{id=} != id' | dot -Tpng -ocallgraph.png
En appliquant ce graphique modifié, il devient plus facile d'identifier les fonctions et classes spécifiques impliquées dans chaque chemin.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!