Frage

Gibt es ist einfaches Werkzeug, das verwendet werden kann, aus, um zu bestimmen, wo eine Funktion aufgerufen wird, die andere Funktion ruft die Funktion ...?

Bearbeiten . Ich verwende Mac OS X (10.6) und will nur statische Analyse tun

Danke!

War es hilfreich?

Lösung

Wie wäre es cscope ? Check out 3. und 4. Geschoss Elemente auf der Seite:

  • Funktionen durch eine Funktion namens
  • Funktionen Aufruf einer Funktion

Es ist schon eine Weile her, seit ich cscope auf C ++ verwendet, scheine ich es erinnere mich, dass rock-solid auf C-Code, aber nicht so stark mit C ++.

Andere Tipps

gtags ist ein Werkzeug, das Sie zu tun Tagging verwenden können, aber für Call und Tracing.

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

Dies unterstützt C, C ++, Yacc, Java und PHP4. Aber es kann nicht damit umgehen C ++ Vorlagen oder andere komplexe Stoffe richtig.

Dieses Tagging-Parser verwenden, ich habe ein Skript einen Aufrufbaum
bekommen Benutzerauswahl durch bash Abschluss wie folgt aus,
es ist, einen Aufrufbaum in Google Profiler Code Anzeige:

% 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);

Sie wissen nicht, über einfache Werkzeuge, aber kostenlos, gibt es codeviz (sehen Sie, welche Deponien statt generieren Diagramme lesen, wenn Sie es vorziehen, dass). Caveat: alle statischen Analyse-Tools haben einige Probleme mit virtuellen Anrufen, und noch schlimmer mit Vorlagen.

Seit verwenden Sie Mac OS, Klirren ist ein neuer Compiler mit statischer Analyse-Funktion.

Ein Beispiel auf youtube: Bugs zu finden, mit Klirren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top