Ferramenta para visualizar o fluxo do código (C / C ++) [fechado]
-
03-07-2019 - |
Pergunta
Você tem sugestões de ferramentas para facilitar a tarefa de entender o código C / C ++? Nós acabou de herdar um grande pedaço de software escrito por outros e precisamos chegar rapidamente até a velocidade sobre ele. Qualquer conselhos sobre ferramentas que pode simplificar esta tarefa?
Solução
SourceInsight e Entenda para C ++ são as melhores ferramentas que você pode obter para análise c / c ++ código incluindo fluxogramas.
Outras dicas
Profiling software dá-lhe uma idéia de quais funções foram chamados.
Se você pode usar Linux, tente KCachegrind
Pessoalmente, eu uso o depurador. Executar através do código e ver o que seu fazer, e onde o seu curso é o único caminho.
No entanto, você pode executá-lo através de alguma documentação-geradores que (às vezes) de ajuda. Um bom exemplo é doxygen .
Doxygen é muito bom para a geração de diagramas de código sem a aplicação de marcação, se você ligar a opção EXTRACT_ALL. Você precisa GraphViz instalado para obter diagramas gerados com a configuração HAVE_DOT. Acho tê-lo instalado e deixando o espaço em branco DOT_PATH bem funciona no Windows mas no OS / X continuo tendo para apontar diretamente para o local da ferramenta de ponto.
Há uma excelente Código Spelunking na ACM Queue que fala mais sobre utilizando doxygen e DTrace.
kscope, construída sobre o utilitário cscope, se você estiver em Linux (KDE). A melhor coisa que eu já utilizado (e usar todo o tempo) para deleve em algum enorme pedaço de código desconhecido que eu tenho que modificar de alguma forma ou que API estou a empregar para minhas necessidades. Entre suas características estão o banco de dados de referência cruzada, que pode ser pesquisado em uma infinidade de maneiras: você pode encontrar todas as referências de um símbolo, a sua definição global, encontrar chamadores / callees de uma função e muito mais. Ele ainda tem um built-in IDE e uma capacidade de mostrar um call-graph.
Doxygen lhe dará diagramas de relacionamento de classe se você usar graphviz, mesmo se você não tiver especificamente preparado para -lo.
Existem algumas ferramentas como o Egito http://www.gson.org/egypt/egypt .html que o trabalho, mas só se você corresponder à versão GCC esperado usado para compilar o código ea versão exata do gerador callgraph. O mesmo pode ser dito sobre codeviz http://www.csn.ul.ie / ~ mel / projetos / codeviz /
Outra opção é valgrind usado no modo cachegrind (que gera um tipo de callgraph que você pode seguir a partir do programa kcachegrind.
Eu personnaly usar ferramentas depurador do Visual Studio.
Ele vem com o recurso "Gráfico do chamador", que lhe permitirá visualizar o material em pequenas caixas. Além disso, a pilha de chamadas e as características habituais de relógios são geralmente tudo que eu preciso
Há também AspectBrowser que não funciona muito bem com Eclipse 3.4.0
AQtime , é uma ferramenta de perfil que exibe todas as funções que foi chamado ( e o tempo que levou), você pode definir os pontos inicial e final para a análise. Eles têm uma experiência de 30 dias.
Borland Together um tempo atrás e ele fez uma trabalho decente de gerar modelos a partir do código. Eu acredito que ele vai mesmo gerar diagramas de sequência de código. Tenha em mente se o seu código é uma bagunça seu modelo será demasiado. E se bem me lembro, não é barato, mas às vezes você pode pegar um especial.
Rational Quantify também apresenta um gráfico de chamadas agradável.
i tentou uma ferramenta chamada Visustin que não é muito grande graficamente, mas faz o que diz: o fluxograma do código. http://www.aivosto.com/visustin.html
Doxygen, a coisa boa sobre ele é que vai deixar você saber enxada feio / bom é o seu código em termos de dependência cíclica de classes. Então, você será forçado a re-fator de seu código, que você não pode gostar dele: -)
SlickEdit é ótimo para navegar grandes blocos de código que você não conhece. O recurso tag permite que você lidar com o código em uma base funcional, sem ter que lidar com a qual arquivo está dentro. (EMACS realmente tem tags e é tão bom quanto SlickEdit, mas com uma curva de aprendizado um pouco íngreme)
Quando você chegar a um método ou classe ou variável que você não entende, você apenas empurrar-tag para ir a esse código, olhar sobre ele, em seguida, pop-tag de volta. (Aqueles são obrigados a teclas, por isso é muito rápida)
Você também pode usar referências Localizar para ver onde essa função / variável é utilizada.
Salva toneladas de tempo por ter que ir e descobrir qual arquivo algo está.
doxygen é uma ferramenta doc-geradora livre (semelhante ao Javadoc) que também vai produzir gráficos de relacionamento quanto bem.