生成调用流程图的工具[C C ++ solaris linux]

时间:2011-04-12 18:32:11

标签: c++ c unix call-graph call-flow

我非常喜欢IDA,但我正在Solaris上开展这个项目。我确实有一台Linux机器,如果与IDA在同一个联盟中没有任何东西,那么我会说服管理层为它购买许可证。

除此之外,我正在寻找替代建议。 IDA中的其他一些功能非常方便,但目前我需要的主要功能是基于源代码的呼叫流图生成器。如果它需要构建步骤的额外输出,那很好,但我需要查看的一些库没有源代码。

到目前为止,看起来我最好的选择是Valgrind的Callgrindlidagprof。欢迎任何进一步的建议。

re:gprof,由Windriver提供给我们的GNU编译器集缺少一些通常由GNU编译器提供的库,以提供(以及其他)用于分析的工具。对于更普遍的问题,它是一个很好的解决方案,但是现在我选择先尝试其他解决方案。

编辑一些Rational工具(Purify,Quantify等)也可能适用于此。我和IDA在同一条船上,但是我觉得有人谷歌搜索可能会觉得这个建议很有帮助。

edit2 Valgrind尚未移植到solaris / sparc; p

3 个答案:

答案 0 :(得分:3)

看看ERESI Project。它是一个逆向工程框架,它有一个名为ELFsh的工具,具有从机器代码生成CFG的功能。它还没有稳定/最终,但它值得一试。

如果您想尝试一下:

  • 下载并安装(apt-get on Ubuntu)
  • 运行elfsh32。你将输入一个shell。
  • 加载您的二进制文件:load /bin/bash
  • 分析它:analyse
  • 生成图表:graph

你会得到一个.dot格式的图形和一个渲染的PNG(这个太大而不能在这里发布)。

答案 1 :(得分:2)

您可以使用Gprof生成调用图。它可以用Kprof显示。

答案 2 :(得分:1)

答案非常晚,但仍然有用..在Solaris上,您可以使用collect

  • collect your_program your_args...
  • 它将生成类似test.1.er
  • 的目录
  • 然后,您可以使用er_print -calltree test.1.er
  • 在控制台上显示调用图
  • 或使用analyser
  • 在X-Window上