2009-11-13 13 views
5

Chcę przetworzyć bieżące pliki C++ w projekcie i wyświetlić listę wszystkich metod/funkcji w nim zawartych, a następnie wygenerować wywołanie funkcji i drzewa wywołujące. F.g. możesz wskazać, w jaki sposób doxygen generuje drzewo wywołań.C++: wygeneruj drzewo wywołań funkcji

Sprawdziłem gccxml, ale nie wyszczególniono funkcji wywoływanych z innej funkcji.

Proszę zasugerować mi kilka lekkich narzędzi (open source), które mogę z niego korzystać.

dziękuję!

+4

Problem, który chcesz rozwiązać, jest trudny. C++ jest bardzo trudnym językiem do analizy. – jmucchiello

Odpowiedz

6

Statyczne drzewo wywołań niekoniecznie jest drzewem wywołania środowiska wykonawczego. Połączenia zwrotne i funkcje wirtualne mącą wodę. Tak więc analiza statyczna może dać tylko część odpowiedzi.

Jedynym sposobem, w jaki udało mi się uzyskać wiarygodne drzewo wywołań, było uruchomienie programu gprof na skompilowanym pliku wykonywalnym. Dane wyjściowe mogą być masowane w bardzo dokładne drzewo wywołań.

4

gccxml, obecnie zasadniczo ignoruje ciał funkcji (w tym wywołań do innych funkcji). Dobry przegląd obecnie dostępnych opcji analizowania C++ to here - niekoniecznie nośnik dobrych wiadomości, ale zalecany odczyt.

+0

Ma rację w swojej analizie, że prawie doprowadza mnie do płaczu. –

2

Wspominasz Doxygen. Dlaczego nie skorzystać z tego?

0

Prawdopodobnie źle zrozumiałem, ale studio graficzne ma coś podobnego. Kliknij prawym przyciskiem myszy funkcję i wybierz Przeglądarka połączeń.

0

Niemożliwe jest zapewnienie pełnej analizy drzewa połączeń dla aplikacji zależnej od asynchronicznego odbioru zdarzeń. W ten sposób testujemy. Nawet w najprostszych przypadkach, w których aplikacja jest w pełni deterministyczna, może to być dość zniechęcające zadanie, a ja twierdzę, że należy podać wartość marginalną. Więc jak przeanalizujesz wyniki? Do jakiego skutku?

Powiązane problemy