2013-03-07 19 views
6

Ben gnu'su kullanarak tek dosya callgraph oluşturmak başardı - cflow ama cflow kullanarak birden fazla dosya için çağrı grafik oluşturmak için öğrenmek mümkün değildi. GNU Cflow'a giriş olarak birden fazla c dosyası nasıl verilir?

I

  • cflow test.c merhaba.c

    Bu hello.c

  • cflow testi için oluşturma test.c için callgraph oluşturur ve aşağıdaki çalıştı. c hello.c

    Bu, hello.c için callgraph'ı üretir ve test.c için oluşturmaz.

Ben cflow birden fazla dosya aktarmak nasıl bilmiyorum.

bu konuda herhangi bir fikir?

merhaba.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

hello.c ve test.c'nin içeriğini kaydeder misiniz? –

+0

@AndreasGrapentin kodunu ekledim. Sadece birden çok dosya adını cflow'a nasıl geçireceğimi bilmiyorum. – Ganeshkumar

+1

ikinci çağrınız doğru. 'test()', aramanızın içinde görünmez, çünkü asla çağrılmaz. –

cevap

2
  • cflow test.c merhaba.c deyimi, yukarıda Aslında

) (değildir doğru ve testler Callgraph'ta görünmez, çünkü asla çağrılmaz. @AndreasGrapentin

+1

Ayrıca, eğer tüm fonksiyonlar için grafikler istemiyorsanız, hangi işle uğraştığınızı belirtmek için --main seçeneğini kullanabilirsiniz.Örneğin, who_am_i için: 'cflow --main who_am_i hello.c ../ libFolder/*. C' Bu, cflow bilgi klasöründe bulunur,' info cflow.info' yazın ve sayfa 2'ye gidin. – alexey

1

tarafından verilen

cevap Başka kullanışlı komut şöyledir:

cflow *.c 

Not:
tüm alt dizinlerde C dosyalarını göz ardı eder Bu komut.

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

cflow örneğin bir sargı olarak __P ilan, bu bildirimleri işlemek mümkün olması için:

cflow --symbol __P: sargı * .c

İlgili konular