Domanda

È che ci sono strumento semplice, che può essere utilizzato per determinare da dove viene chiamata una funzione, che altra funzione chiama la funzione ...?

Modifica :. Sto utilizzando Mac OS X (10.6) e appena vuole fare analisi statica

Grazie!

È stato utile?

Soluzione

Come su cscope ? Scopri 3 ° e 4 ° proiettile articoli sulla pagina:

  • funzioni chiamate da una funzione
  • le funzioni di chiamata di una funzione

E 'stato un po' che ho usato cscope su C ++, mi sembra di ricordare che sia solido come una roccia sul codice C, ma non così forte con C ++.

Altri suggerimenti

gtags è uno strumento che si può usare per fare il tagging, ma per la chiamata di tracciamento pure.

http://www.gnu.org/software/global/

Questo supporta C, C ++, Yacc, Java e PHP4. Ma non in grado di gestire i modelli C ++ o altri animali complessi correttamente.

Con questo tag parser, ho fatto uno script per ottenere un albero chiamata da
selezione dell'utente attraverso il completamento bash come il seguente,
che è la visualizzazione di una Calltree in google code profiler:

% global-calltree -x prof_handler Add Evict ProfileData Stop DisableHandler RAW_CHECK WRITE_TO_STDERR
prof_handler:414 => Add:441               |profiler.cc                         |instance_.collector_.Add(depth, stack);
 Add:241 => Evict:290                      |profiledata.cc                      |Evict(*e);
  Evict:61 => ProfileData:75                |profiledata.cc                      |ProfileData::ProfileData()
   ProfileData:124 => Stop:125               |profiledata.cc                      |Stop();
    Stop:261 => DisableHandler:273            |profiler.cc                         |DisableHandler();
     DisableHandler:400 => RAW_CHECK:405       |profiler.cc                         |RAW_CHECK(sigaction(SIGPROF, &sa, NULL) == 0, "sigaction failed");
      RAW_CHECK:83 => WRITE_TO_STDERR:86        |base/logging.h                      |WRITE_TO_STDERR("Check failed: " #condition ": " message "\n",           \
       WRITE_TO_STDERR:59 => DECLARE_int32:65    |base/logging.h                      |DECLARE_int32(verbose);

Non so su strumenti semplici, ma gratuitamente, c'è codeviz (potete leggere le discariche prime, piuttosto che generare grafici, se si preferisce quello). Caveat: tutti gli strumenti di analisi statica hanno alcuni problemi con le chiamate virtuali, e peggio ancora con i modelli.

Dal momento che si utilizza Mac OS, clang è un nuovo compilatore con funzione di analisi statica.

Un esempio su youtube: Trovare bug con clangore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top