生成调用流图的工具[c++ solaris linux]
Tool for generating a call flow graph [C C++ solaris linux]
我很喜欢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...
生成 - 然后可以使用
er_print -calltree test.1.er
在控制台上可视化调用图 - 或在x窗口下使用
analyser
test.1.er
目录相关文章:
- 在 solaris 上增加 1.64 构建错误
- 使用 C++ 查询 Solaris 上的运行时堆栈大小
- 从 SIOCGIFCONF 和 SIOCGIFADDR 获取的 Solaris SPARC 中虚拟接口的接口名称不正确
- 不能在 Solaris 的最新编译器中使用带有新 c+11 标志的 xercesc
- ld.so.1:protoc:fatal:libstdc++.so.6:在 Solaris 11 中找不到版本"GLIBCXX_3.4.20"
- Linux equivalent of Solaris walkcontext
- 在 solaris cc v5.8 上编译 Boost
- 在 Solaris 机器上使用 SUN C++ 进行编译时"Error: incomplete type "无符号字符 [] " "
- 模板<> Solaris CC 需要的语法,但 MSVC 和 GCC 禁止
- Alternative to timegm on Solaris
- Gmake正在隐式上删除Solaris 10的某些文件
- 如何知道Solaris上GMT和C 的本地时间的差异
- 计数函数调用Solaris
- 如何使用pthreads在Solaris上增加C 线程堆栈的大小
- 这是Solaris Studio中的杂物错误
- 使用Solaris 64位或Linux 32位到Linux 64位的内存映射文件
- 在 c++ solaris 中编译多个文件
- 在 Solaris 上创建和使用动态共享库
- Solaris 上的 GNU gcc/g++ 编译器版本,支持 C++11/14
- Solaris 10 CC预处理器错误导致未定义的符号