Menjana Graf Panggilan untuk Kod C
Artikel ini meneroka teknik untuk mencipta graf panggilan untuk kod C, terutamanya apabila cuba mengenal pasti semua laluan pelaksanaan yang mungkin menuju ke fungsi tertentu.
Mencipta Panggilan Graf
Untuk menangani keperluan ini, satu pendekatan ialah memanfaatkan saluran paip pengoptimuman LLVM. Ini boleh dicapai dengan menyusun kod dengan bendera -S dan -emit-llvm, diikuti dengan pilihan -analyze dan -dot-callgraph melalui alat opt. Contohnya:
$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -dot-callgraph $ dot -Tpng -ocallgraph.png callgraph.dot
Arahan ini menjana graf panggilan yang mewakili laluan pelaksanaan yang berpotensi, digambarkan sebagai gambar rajah visual.
Menyesuaikan Perwakilan Graf Panggilan
Dalam sesetengah kes, ia mungkin bermanfaat untuk memproses pasca graf panggilan untuk meningkatkan kebolehbacaan. Satu kaedah ialah menggunakan penapis c untuk mendapatkan fungsi dan nama kelas yang tidak terhanyut. Contoh berikut menunjukkan proses ini:
$ 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
Dengan menggunakan graf yang diubah suai ini, ia menjadi lebih mudah untuk mengenal pasti fungsi dan kelas tertentu yang terlibat dalam setiap laluan.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Graf Panggilan untuk Kod C untuk Menganalisis Laluan Pelaksanaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!