Pergunta

Existe são ferramenta simples, que pode ser usada para determinar de onde a função é chamada, que outra função a chamadas de função ...?

Editar :. Estou usando o Mac OS X (10.6) e só quero fazer a análise estática

Obrigado!

Foi útil?

Solução

Como sobre cscope ? Confira os itens 3 e 4 de bala na página:

  • funções chamadas por uma função
  • funções chamar uma função

Tem sido um tempo desde que eu usei cscope em C ++, eu me lembro de ele ser sólida em código C, mas não tão forte com C ++.

Outras dicas

gtags é uma ferramenta que você pode usar para fazer a marcação, mas para a chamada rastreamento também.

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

Isto suporta C, C ++, Yacc, Java e PHP4. Mas ele não pode tratar modelos C ++ ou outros materiais complexos corretamente.

Usando este analisador tagging, eu fiz um script para obter uma árvore chamada de
a seleção do usuário até a conclusão do bash como o seguinte,
que está exibindo uma calltree em código profiler google:

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

Não sei sobre ferramentas simples, mas de graça, há codeviz (você pode ler as lixeiras matérias em vez de gerar gráficos se você preferir que). Aviso: todas as ferramentas de análise estática ter alguns problemas com chamadas virtuais e ainda pior com modelos.

Uma vez que você usa Mac OS, clang é um novo compilador com o recurso de análise estática.

Um exemplo no youtube: erros Encontrar com clang

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top