visual-studio - 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?
问题描述
我所说的“map”是指我有一个“main”函数,它调用内部的许多其他程序,我希望能够看到哪个文件首先运行,第二个,第三个等。基本上,我希望能够查看这个大型 OOP 设计程序(创建者没有为其制作 UML 类图)中的依赖关系列表和顺序,以帮助破译代码。流行的 IDE 中肯定存在这样的功能吗?我主要处理 C++ 和 MATLAB,所以我更关心这两个,但请列出您知道的任何具有此功能的 IDE。我更喜欢视觉上的东西,而不仅仅是通过调试器和断点运行一千次。
解决方案
在 MATLAB 中,我不相信有一种内置的方式可以直观地执行此操作,但是您可以使用FunctionTable
返回的 by从分析器获取所需的信息profile('info')
。
表中的父/子关系本质上定义了一个有向图,如果您将其转换为digraph
对象,您可以在 MATLAB 中以视觉方式或以其他方式与之交互。
例如,映射程序执行kmeans
:
profile on
kmeans(rand(100,2),5);
p = profile('info');
t = struct2table(p.FunctionTable);
g = digraph(false(height(t)), t); % Create the graph with nodes and no edges
% Add the edges
for ii = 1:g.numnodes
for jj = 1:numel(g.Nodes.Children{ii})
g = g.addedge(ii, g.Nodes.Children{ii}(jj).Index);
end
end
plot(g,'NodeLabel',g.Nodes.FunctionName,'Layout','layered');
每个函数来自的文件也可以通过FileName
字段访问,FunctionTable
因此如果函数和它们来自的文件之间的区别很重要,您可以使用此信息相应地着色或简化图表。
推荐阅读
- mysql - 休眠反应在 aws rds 中没有活动的 Vert.x 上下文
- fabricjs - Fabric.JS scaleToWidth 不适用于文本项并导致不同的宽度然后设置
- java - PreparedStatement 在简单的静态方法查询中有什么性能优势?
- python - Databricks Connect:自动接受许可提示
- python - 提取帧失败:处理输入时发现无效数据
- python - 尝试使用 git 在 PyCharm 项目中激活 venv
- elasticsearch - Elasticsearch 7 - 在没有异常值的情况下获得第 95 个百分位
- pandas - 对于 Netezza,如何只能使用 sqlalchemy 默认的“TIMESTAMP WITHOUT TIME ZONE”以外的“TIMESTAMP”数据类型?
- python - 创建 seaborn 热图时“无法将字符串转换为浮点数”ValueError
- mongodb - 在 mongodb 中查找嵌套数组对象中存在的重复字段名称记录