2013-03-07 3 views
6

मैं gnu-cflow का उपयोग करके एक फ़ाइल का कॉलग्राफ उत्पन्न करने में सक्षम था, लेकिन मैं cflow का उपयोग करके एकाधिक फ़ाइलों के लिए कॉल ग्राफ़ उत्पन्न करने में सक्षम नहीं था।जीएनयू सीएफएलओ में इनपुट के रूप में एक से अधिक सी फाइल कैसे देना है?

मैं निम्नलिखित

  • cflow test.c, hello.c

    यह और नहीं hello.c

  • cflow परीक्षण के लिए इसे बनाने के लिए test.c callgraph उत्पन्न करने की कोशिश की। c hello.c

    यह हैलो.c के लिए कॉलग्राफ उत्पन्न करता है और इसे test.c

  • के लिए नहीं बना रहा है

मुझे नहीं पता कि सीएफएलओ में एकाधिक फाइलें कैसे पास करें।

इस बारे में कोई विचार?

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

क्या आप hello.c और test.c की सामग्री पोस्ट कर सकते हैं? –

+0

@AndreasGrapentin मैंने कोड जोड़ा। मुझे नहीं पता कि सीएफएलओ में एकाधिक फ़ाइल नाम कैसे पास करें। – Ganeshkumar

+1

आपका दूसरा आमंत्रण सही है। 'परीक्षण() 'आपके कॉलग्राफ में दिखाई नहीं देता है, क्योंकि इसे कभी नहीं कहा जाता है। –

उत्तर

2
  • cflow test.c hello.c
बयान ऊपर

असल में है सही है और परीक्षण() नहीं कॉलग्राफ में दिखाएं, क्योंकि इसे कभी नहीं कहा जाता है।

जवाब @AndreasGrapentin

+1

इसके अलावा, यदि आप सभी कार्यों के लिए ग्राफ नहीं चाहते हैं, तो आप यह निर्दिष्ट करने के लिए --main विकल्प का उपयोग कर सकते हैं कि आप किस फ़ंक्शन में रुचि रखते हैं।उदाहरण के लिए, who_am_i: 'cflow --main who_am_i hello.c ../ libFolder/*। C' यह cflow के जानकारी फ़ोल्डर में शामिल है, बस 'info cflow.info' टाइप करें और पृष्ठ 2 पर जाएं – alexey

1

द्वारा दिए गए एक और सुविधाजनक आदेश है:

cflow *.c 

नोट:
यह आदेश सभी उप-निर्देशिका में सी स्रोत फ़ाइलों पर ध्यान नहीं देगा।

संदर्भ:
GNU cflow manual: Chapter 6-Controlling Symbol Types

cflow उदाहरण के लिए इस तरह के घोषणाओं पर कार्रवाई करने के लिए, एक आवरण के रूप में __P घोषित, सक्षम होने के लिए:

cflow --symbol __P: आवरण * ग

संबंधित मुद्दे