问题标签 [call-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用一些分析信息获取程序的调用图
我想了解给我的 C++ 程序是如何工作的,以及它在哪里花费的时间最多。
为此,我尝试先使用gprof
然后gprof2dot
获取图片,但结果有时有点难看。
你通常是怎么做的?你能推荐任何更好的替代品吗?
PD 哪些是开源解决方案(最好适用于 Linux 或 Mac OS)X?
c# - 用 Visual Basic 和 C# 开发的应用程序的 AST 生成
我目前正在了解一个用 Visual Basic 和 C# 开发的应用程序。运行代码变得越来越困难,因为代码大约是 50KLOC。所以我计划生成 AST(抽象语法树)。是否可以同时为两种语言生成。
至少生成调用图会有所帮助(但找不到适用于两种语言的任何工具)
如果这个问题令人困惑,请告诉我。
提前致谢
call-graph - AMD 处理器上的 Intel Vtune
我已经安装了 Intel Vtune Analyzer 9 以从带有 AMD Turion X2 TL-58 处理器的 Windows 7 PC 上的 win32 应用程序获取调用图和计数器监控数据,但它给出了错误消息:“CPU 架构不能正确识别,数据收集不可用”。AMD平台有类似的工具吗?
c - 调用图如何解析函数指针?
我正在使用 perl 脚本为 C 实现调用图程序。我想知道如何使用“objdump”的输出来解析函数指针的调用图?不同的调用图应用程序如何解析函数指针?函数指针是在运行时解析还是可以静态完成?
编辑 调用图如何解决程序静态评估中的循环?
algorithm - 使用旧调试版本中的符号对剥离的二进制文件进行符号化(不精确的图形匹配)
我有二进制A,这是一个带有随附符号的调试版本——多年前构建的。我也有二进制B ,一个没有附带符号的发布版本,并且是更新的。我正在寻找将二进制 A 中的符号与二进制 B 中的潜在候选匹配的最有效方法。
鉴于调试版本要大得多(进行更多的输入验证,打印更多的东西stderr
等)并且函数总是随着时间而变化,我认为尝试对各个函数进行指纹识别将浪费时间。
因此,我已经决定 - 完全凭空,所以我可能会叫错树 - 指纹函数的最佳方法是创建两个二进制文件的调用图并尝试匹配顶点(即职能)。
我已经做了一些预处理,所以我有以下数据结构:
需要注意的重要一点是,二进制A中的函数“0”和二进制B中的函数“0”之间没有对应关系。这些是我为每个二进制文件中的每个函数分配的任意 ID。
下一步是让我感到困惑的。我的算法很弱,我想不出一个聪明的方法来继续。我(非常有限)的理解是,为了解决这个问题,我想采用某种形式的不精确图形匹配。换句话说,哪一组映射 Ai -> Bi 将使两个调用图的相似性最大化?
鉴于二进制A中有额外的调试功能,并且程序随着时间的推移而发展的明显事实,可能没有完全匹配。理想情况下,我想要以下形式的输出:
实际上,如果我只需要一名候选人并且没有提供排名,我会很高兴,但可以梦想。
任何 SO-goers 都知道我应该从哪里开始?
sql-server-2008 - 是否有免费工具可以帮助可视化 SQL Server 2008 R2 中存储过程的逻辑?
我希望能够绘制存储过程的调用图。我对每个细节都不感兴趣,也不关心动态 SQL(尽管检测它并跳过它或将其标记为这样会很酷。)
我希望该工具为我生成一个树,给定服务器名称、数据库名称、存储的 proc 名称、一个“调用树”,其中包括:
- 父存储过程。
- 作为调用者的子级调用的所有其他存储过程。
- 每个被修改(更新或删除)的表都是作为存储过程的子级进行的。
希望很清楚我在追求什么;如果没有 - 请询问。如果没有可以做到这一点的工具,那么我想尝试自己编写一个。Python 2.6 是我选择的语言,我希望尽可能多地使用标准库。有什么建议么?
编辑:出于赏金目的警告:SQL 语法是复杂的。我需要可以解析各种 SQL 2008 的东西,即使它看起来很愚蠢。没有角落案例被禁止:)
EDIT2:如果我所缺少的只是图形,我会没事的。
visualization - 记录/可视化调用图的工具?
最近加入了一个需要处理大量代码的项目,我想开始通过调用图记录和可视化一些流程,以便更好地了解所有内容如何组合在一起。这是我希望在我的理想工具中看到的:
- 每个节点都是一个函数/方法
- 如果一个函数可以调用另一个函数,则节点是连接的
- 在进行调用的详细条件之间的可选方框(或您可以像工具提示一样悬停在上面的标签图标)
- 还有描述参数的边缘图标
- 将鼠标悬停在节点上并显示描述
- 节点显示伪代码的可选图标
- 场景/域视图 - 显示特定用例的完整图表子集
- 幻灯片查看模式 - 对于每一帧,当前正在执行的函数被突出显示
- 有很多关于显示内容的选项,以减少屏幕上的混乱
这种工具的交互使用是关键,我不是在寻找 Graphviz 类型的解决方案,因为会有太多的混乱。形成整个图的子集视图的能力将非常方便(也许不重要的杂波变灰了)。不需要从源代码自动生成,很高兴手动输入。
几乎就像一个思维导图。
那有意义吗?如果您不知道这样的工具,您是否也认为它有用?(以防万一我决定有一天去挠痒痒!)
r - 在 R 中生成调用图
我得到了一大块格式很差的单片 R 代码,里面有很多函数,我想弄清楚什么函数调用什么函数。
我以为我可以使用 roxygen 的 @callGraph 东西,但是 a) 代码需要放在一个包中,这对这段代码来说会让人头疼,并且 b) 当我在一个简单的设备上运行它时它甚至似乎都不起作用我的包。我看到一位 Roxygen 作者的帖子说,由于 Rgraphviz 依赖关系,调用图生成被禁用,但代码在那里。反正。
有谁有更好的方法来快速计算出 foo 调用 bar、baz 和 qux,而 qux 调用 quux?
编辑:基于 R 分析系统的解决方案很棒,假设您可以实际运行代码......文件中的一半内容没有运行,我不知道它做了什么......静态分析太多了希望,我猜。
编辑 2:Roxygen 的调用图的东西似乎做了一个静态分析,基于函数表达式的递归下降和检查 is.callable。能够在任何功能上运行它会很可爱......我明天可能会玩这个......
java - Java调用图的静态分析
我想做的是扫描一组 Java 类,并跟踪来自抽象类的特定方法的所有方法调用,并在该上下文中,构建执行某些操作的所有代码的列表(在这种情况下,实例化某个类的实例)。我想知道行号和提供的参数。
我已经开始关注 BCEL,但它似乎没有内置调用图跟踪?我犹豫要不要自己写,因为获得重载、类型签名和多态调度权可能很棘手。
我有一半期望存在工具或示例代码,但我还没有找到任何东西。真的感觉我要重新发明一个轮子了。但如果我这样做,它将是一个开源轮子,可以在 GitHub 上找到;-)
PS:你会发现现有的问题“ How to Generate a Java Call Graph ”,因为听起来一样,但它根本不是我需要的。
java - 如何为 java 项目生成调用图
是否可以生成应用程序的全局调用图?
基本上我试图找到应用程序中最重要的类。
我正在寻找 Java 的选项。
我试过 Doxy Gen,但它只生成继承图。
我当前的脚本: