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

Tool for generating a call flow graph [C C++ solaris linux]

本文关键字:c++ solaris linux 工具 调用      更新时间:2023-10-16

我很喜欢IDA,但是我在Solaris上做这个项目。我确实有一台linux机器,如果没有什么能和IDA媲美,那么我会说服管理层为它购买一个许可证。

除此之外,我正在寻找其他建议。IDA中的其他一些特性会很方便,但目前我需要的主要是一个基于源代码的调用流图生成器而不是。如果构建步骤需要额外的输出,那很好,但是我需要查看的一些库我没有源代码。

到目前为止,我最好的选择是Valgrind的Callgrind、lida和gprof。欢迎提出进一步的建议。

re: gprof, Windriver提供给我们的GNU编译器集缺少一些库,这些库通常会与GNU编译器一起提供(除其他外)分析功能。对于更一般的问题,这是一个很好的解决方案,但现在我选择先尝试其他解决方案。

edit一些Rational工具(Purify, Quantify,等等)也可以很好地工作。我和IDA的情况一样,但我想有人在谷歌上搜索可能会发现这个建议很有帮助。

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

看看ERESI项目。这是一个逆向工程框架,它有一个叫做ELFsh的工具,能够从机器码生成CFG。它还没有稳定/最终版本,但值得一试。

如果你想试试:

  • 下载安装(Ubuntu上的apt-get)
  • run elfsh32。你将进入一个shell。
  • 加载二进制文件:load /bin/bash
  • 分析analyse
  • 生成图形:graph

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

您可以使用Gprof生成一个调用图。它可以用Kprof可视化。

回答晚了,但仍然有用。在Solaris上,您可以使用collect

  • collect your_program your_args...
  • 生成test.1.er 目录
  • 然后可以使用er_print -calltree test.1.er
  • 在控制台上可视化调用图
  • 或在x窗口下使用analyser