有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?相关的知识,希望对你有一定的参考价值。

我的意思是“map”是我有一个“main”函数,它调用了许多其他程序,我希望能够看到哪个文件运行第一,第二,第三等。基本上,我希望能够查看这个大型OOP设计程序中的依赖项列表和顺序(创建者没有为其制作UML类图)来帮助破译代码。当然流行的IDE中必须存在这样的功能吗?我主要处理C ++和MATLAB,所以我更关注这两个,但请列出你知道的具有此功能的任何IDE。我更喜欢可视化的东西,而不只是通过调试器和断点运行一千次。

答案

在MATLAB中,我不相信有一种内置的方法可以直观地进行此操作,但您可以使用FunctionTable返回的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');

产品:<code>plot(g,'NodeLabel',g.Nodes.FunctionName,'Layout','layered');</code>

每个函数来自的文件也可以通过FileNameFunctionTable字段访问,因此如果函数和它们来自的文件之间的区别很重要,您可以使用此信息相应地着色或简化图形。

以上是关于有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在没有 WPF 或 Visual Studio 的情况下在 C# 中制作 GUI(仅使用代码)?

有没有办法在Visual Studio Code中设置环境变量?

有没有办法在Visual Studio中复制/粘贴时自动转义反斜杠?

Visual Studio IDE - 返回上一个

禁用 Visual Studio 代码样式建议

在 Visual Studio Express 2013 中更改按钮样式