标签: call-graph

如何从Python源文件中提取函数的调用图?

您是否知道一个集成工具,它将从Python源生成函数的调用图?我需要一个一致的,可以在Windows操作系统上运行的.

python windows call-graph

11
推荐指数
3
解决办法
2431
查看次数

使用clang为文件创建调用图

有没有办法创建一个可以合理地适合页面的clang调用图?

即给出:

#include<iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;
    cout<<a;
    cout<<a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我目前得到 在此输入图像描述

通过使用:

$ clang++ main.cpp -S -emit-llvm -o - |
opt -analyze -std-link-opts -dot-callgraph
$ cat callgraph.dot | c++filt |
sed 's,>,\\>,g; s,-\\>,->,g; s,<,\\<,g' |
gawk '/external node/{id=$1}$1!=id' | dot -Tpng -ocallgraph.png
Run Code Online (Sandbox Code Playgroud)

(这似乎是很多努力去做一些我不希望这么困难的事情).我想在横轴上得到一些更合理的东西.Unflatten似乎没有任何影响(至少在这个文件上,对其他文件似乎影响很小).

有没有办法确保png生成的文件可以舒适地适合页面(任何标准大小)?

注意:上面的代码来自生成C++代码的调用图

更新:设置页面="8.5,11"给出以下内容:

在此输入图像描述

clang graphviz call-graph

11
推荐指数
1
解决办法
7857
查看次数

如何让gcc吐出从流程图到源代码行号的映射

在给定C文件的情况下,gcc可以吐出所有函数调用的列表,其中包含调用本身和函数声明的文件名和行号吗?

我知道gcc不知何故用-g(调试器依赖它)保留这些信息,并且它可以使用-dr转储控制流图(但没有文件名或行号); 但是有一个现成的工具,需要gcc输出并做我想要的吗?

我希望这样一个工具使用gcc的原因是,这将允许我使用大多数基于gcc的软件附带的标准构建系统(例如./configure && make),即使在依赖于他们自己的预处理器的工具的情况下也是如此和/或解析器是一个很大的麻烦.我已经知道了几个这样的工具,例如ctags.所以这个问题是问题525899的后续问题.

c gcc call-graph

10
推荐指数
1
解决办法
4064
查看次数

应用程序生成Java类层次结构图

寻找一种工具:

  • 产生视觉上令人愉悦(不是花哨)的正交结构图层次结构
  • 输出高质量的PNG图像(300dpi +)
  • 可视化区分类,抽象类,接口和枚举类型(最好通过颜色)
  • 交互式用户界面
  • 允许从图中修剪包和/或单个类
  • 种子(例如,文件»打开)使用一组:
    • 目录
    • JAR文件
    • 单个源文件
    • 个别编译类
  • 对类依赖性执行全自动分析
  • 搜索类路径以尽可能多地解析未满足的依赖项
  • 使用单个可执行文件
  • 轻巧(~5MB)和快速(平均1.5GHz机器下一秒钟内负载)
  • 很简单(点击10次以下生成图表)
  • 快速(图表100对象在几秒钟内)
  • 易于使用(界面最小,专注于图形生成)
  • 是OSS还是GPL
  • (可选)生成调用图层次结构

无法完成此任务的工具包括:

  • Doxygen + GraphViz(或点)
  • 日食
  • UML建模者
  • Java的结构分析(无法解析源文件)
  • JUDE社区(awkard界面,不适合自动生成)
  • 集成开发环境(太复杂,使用太多内存)

有任何想法吗?

java visualization class-hierarchy call-graph

8
推荐指数
2
解决办法
2万
查看次数

AMD 处理器上的 Intel Vtune

我已经安装了 Intel Vtune Analyzer 9,以便从配备 AMD Turion X2 TL-58 处理器的 Windows 7 PC 上的 win32 应用程序获取调用图和计数器监控数据,但它给出错误:“CPU 架构不能正确识别后,无法收集数据”。AMD 平台有类似的工具吗?

call-graph amd-processor

8
推荐指数
2
解决办法
6402
查看次数

确定方法是否在包含新语句的另一个程序集中调用方法,反之亦然

我想编写一个规则,如果在由特定属性标记的方法调用的任何方法中进行对象分配,则该规则将失败.

到目前为止,我已经完成了这项工作,通过迭代调用我的方法来检查使用的所有方法CallGraph.CallersFor(),看看这些父方法中是否有任何属性.

这适用于检查与要检查的方法相同的程序集中的父方法,但是在线阅读时,似乎一次CallGraph.CallersFor()确实查看了所有程序集,但现在却没有.

问题:有没有办法获取调用给定方法的方法列表,包括那些在不同程序集中的方法?

替代答案:如果无法实现上述目标,我如何遍历给定方法调用的每个方法,包括不同程序集中的方法.


例:

-----In Assembly A

public class ClassA
{
    public MethodA()
    {
        MethodB();
    }

    public MethodB()
    {
        object o = new object(); // Allocation i want to break the rule
        // Currently my rule walks up the call tree,
        // checking for a calling method with the NoAllocationsAllowed attribute.
        // Problem is, because of the different assemblies,
        // it can't go from ClassA.MethodA to ClassB.MethodB.
    }
}


----In Assembly B …
Run Code Online (Sandbox Code Playgroud)

.net c# fxcop call-graph

8
推荐指数
1
解决办法
415
查看次数

在运行时生成c/c ++程序的动态调用图

如果要想象一个程序的运行,我想一个人可以从获取程序的调用图开始.

但是如何在运行时获得c/c ++程序的调用图?

编辑:说明,我目前在linux上运行,使用g ++,但我想如果我使用不同的平台,我也对解决方案感到好奇.

c c++ call-graph

8
推荐指数
1
解决办法
3093
查看次数

记录/可视化调用图的工具?

我最近加入了一个包含大量代码的项目,我想开始通过调用图来记录和可视化一些流程,以便更好地理解所有内容如何组合在一起.这是我希望在理想工具中看到的内容:

  • 每个节点都是一个函数/方法
  • 如果一个函数可以调用其他函数,则连接节点
  • 在进行调用的细节条件之间的可选方框(或者可以像工具提示一样悬停的标签图标)
  • 还有描述参数的边缘上的图标
  • 将鼠标悬停在节点上并显示说明
  • 节点的可选图标,用于显示伪代码
  • 场景/域视图 - 显示特定用例的完整图的子集
  • 幻灯片视图模式 - 对于每个帧,突出显示当前正在执行的功能
  • 有很多选项可以显示什么来减少屏幕上的混乱

这种工具的交互使用是关键,我不是在寻找Graphviz类型的解决方案,因为会有太多的混乱.形成整个图形的子集视图的能力将非常方便(可能具有不重要的混乱灰色).不需要从源代码自动生成,很乐意手动输入.

几乎像一张思维导图.

那有意义吗?如果您不了解这样的工具,您是否也认为它会有用?(以防我有一天决定去刮痒!)

visualization call-graph

7
推荐指数
1
解决办法
2733
查看次数

使用ctags生成调用层次结构图

是否有人知道如何使用ctagscscope生成调用层次结构图?我需要在终端中运行命令并将输出重定向到文件,而不是在vim中执行.

ctags cscope call-graph

7
推荐指数
1
解决办法
1538
查看次数

生成C代码的调用图

我正在编写一个工具,我需要为一些C项目生成调用图.我能够使用clang生成一个文件的调用图,但是我无法找到如何在整个项目中生成包含数十个头文件和源文件的调用图.

任何可以生成可解析文件的调用图的工具都可以.一个可用的库会更好.

c parsing doxygen clang call-graph

7
推荐指数
1
解决办法
4294
查看次数