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

时间:2018-09-05 20:32:34

标签: visual-studio matlab debugging visual-studio-2012 uml

“ map”的意思是我有一个“ main”函数,该函数在内部调用许多其他程序,并且我希望能够看到哪个文件在第一,第二,第三等运行。基本上,我想能够查看这个大型OOP设计程序(创建者未为其创建UML类图)中的依赖关系的列表和顺序,以帮助解密代码。在流行的IDE中肯定必须存在这样的功能吗?我主要处理C ++和MATLAB,因此我特别关注这两个,但是请列出所有您知道具有此功能的IDE。我更喜欢可视化的东西,而不仅仅是运行调试器和断点一千次。

1 个答案:

答案 0 :(得分:3)

在MATLAB中,我不相信有一种可视化的内置方法,但是您可以使用profile('info')返回的FunctionTable从分析器中获取所需的信息。

表中的父子关系本质上定义了一个有向图,如果将其转换为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>

还可以通过FileName的{​​{1}}字段访问每个函数来自的文件,因此,如果函数和它们来自的文件之间的区别很重要,则可以使用此信息来上色或简化该图相应。