2009-11-13 12 views
5

Voglio analizzare i file C++ correnti in un progetto ed elencare tutti i metodi/funzioni al suo interno e quindi generare la chiamata di funzione e gli alberi del chiamante. F.g. puoi riferire come doxygen genera l'albero delle chiamate.C++: albero di chiamata della funzione di generazione

Ho controllato gccxml ma non elenca le funzioni chiamate da un'altra funzione.

Si prega di suggerire alcuni strumenti leggeri (open source) che posso utilizzare.

grazie!

+4

Il problema che vuoi risolvere è HARD. C++ è un linguaggio molto difficile da analizzare. – jmucchiello

risposta

6

L'albero delle chiamate statico non è necessariamente l'albero delle chiamate di runtime. Le callback e le funzioni virtuali infangano l'acqua. Quindi l'analisi statica può darti solo una parte della risposta.

L'unico modo in cui sono riuscito a ottenere un albero di chiamate affidabile era eseguire gprof sul file eseguibile compilato. L'output può essere massaggiato in un albero delle chiamate molto preciso.

4

gccxml, attualmente, ignora essenzialmente i corpi delle funzioni (comprese le chiamate ad altre funzioni). Una buona panoramica delle opzioni di analisi C++ attualmente disponibili è here - non necessariamente un portatore di buone notizie, ma una lettura consigliata.

+0

È così giusto nella sua analisi che mi fa quasi piangere. –

2

Si parla di Doxygen. Perché non usarlo?

0

Probabilmente ho frainteso, ma lo studio visivo ha qualcosa di simile. Fare clic con il tasto destro su una funzione e selezionare Chiama browser.

0

È impossibile fornire un'analisi completa dell'albero delle chiamate per un'applicazione che dipende dalla ricezione di eventi asincroni. Questo è il modo in cui testiamo. Anche nei casi più semplici in cui l'applicazione è completamente deterministica, questo potrebbe essere un compito relativamente scoraggiante e direi di fornire un valore marginale. Quindi come analizzeresti i risultati? A quale effetto?

Problemi correlati