2013-03-07 7 views
6

Udało mi się wygenerować kalibrację jednego pliku przy użyciu gnu - cflow, ale nie byłem w stanie dowiedzieć się, jak wygenerować wykres wywołań dla wielu plików za pomocą cflow.jak podać więcej niż jeden plik c jako dane wejściowe do GNU Cflow?

Próbowałem następujących

  • Cflow test.c, hello.c

    Generuje callgraph dla test.c a nie tworzenie go na hello.c

  • testowym Cflow. c hello.c

    Generuje wywołanie dla hello.c i nie tworzy go dla testu.c

Nie wiem, jak przekazać wiele plików do cflow.

Masz pomysł?

hello.c

int 
who_am_i (void) 
{ 
    struct passwd *pw; 
    char *user = NULL; 

    pw = getpwuid (geteuid()); 
    if (pw) 
    user = pw->pw_name; 
    else if ((user = getenv ("USER")) == NULL) 
    { 
     fprintf (stderr, "I don't know!\n"); 
     return 1; 
    } 
    printf ("%s\n", user); 
    unused_function(); 
    return 0; 
} 

int 
main (int argc, char **argv) 
{ 
    if (argc > 1) 
    { 
     fprintf (stderr, "usage: whoami\n"); 
     return 1; 
    } 
    return who_am_i(); 
} 
void unused_function() 
{ 
    printf(); 
    error1(); 
    printf(); 
} 
void error1() 
{ 
    error2(); 
} 
void error2() 
{ 

} 

test.c

int tests() 
{ return 0;} 
+0

Czy możesz opublikować zawartość hello.c i test.c? –

+0

@AndreasGrapentin Dodałem kod. Po prostu nie wiem, jak przekazać wiele nazw plików do cflow. – Ganeshkumar

+1

Twoje drugie wywołanie jest poprawne. 'tests()' nie pojawia się w twojej grafice wywołań, ponieważ nigdy nie jest wywoływana. –

Odpowiedz

2
  • Cflow test.c hello.c

Właściwie powyższe stwierdzenie jest prawdziwe i testy() nie pojawiają się w callgraph, ponieważ nigdy nie są wywoływane.

odpowiedź udzielona przez @AndreasGrapentin

+1

Ponadto, jeśli nie chcesz wykresów dla wszystkich funkcji, możesz użyć opcji --main, aby określić, jaką funkcję interesujesz.Na przykład dla who_am_i: 'cflow --main who_am_i hello.c ../ libFolder/* .c' Jest to zawarte w folderze informacyjnym cflow, po prostu wpisz' info cflow.info' i przejdź do strony 2 – alexey

1

Innym wygodne polecenia:

cflow *.c 

Uwaga:
Komenda ta zignoruje pliki źródłowe C dla wszystkich podkatalogów.

odniesienia:
GNU cflow manual: Chapter 6-Controlling Symbol Types

Na Cflow móc przetwarzać takie zgłoszenia, zadeklarować __P w opakowaniu, na przykład:

Cflow --symbol __P: owijki * .c

Powiązane problemy