Есть ли способ «сопоставить» порядок выполнения программы в Visual Studio или MATLAB? - PullRequest
0 голосов
/ 05 сентября 2018

Что я имею в виду под «картой», так это то, что у меня есть «основная» функция, которая вызывает внутри себя много других программ, и я хочу иметь возможность видеть, какой файл запускается первым, вторым, третьим и т. Д. В основном, я хочу быть в состоянии увидеть список и порядок зависимостей в этой большой программе проектирования ООП (для которой создатель не создал диаграмму классов UML), чтобы помочь расшифровать код. Наверняка такая функциональность должна существовать в популярных IDE? В основном я имею дело с C ++ и MATLAB, так что меня больше интересуют именно эти два, но, пожалуйста, перечислите все IDE, о которых вы знаете, которые имеют эту функциональность. Я бы предпочел что-то визуальное, а не просто проходить через отладчик и точки останова тысячу раз.

1 Ответ

0 голосов
/ 06 сентября 2018

В MATLAB я не верю, что есть встроенный способ сделать это визуально, но вы можете получить необходимую информацию от профилировщика, используя FunctionTable, возвращаемое profile('info').

Родительские / дочерние отношения в таблице по существу определяют ориентированный граф, с которым вы можете взаимодействовать визуально или иным образом в MATLAB, если вы преобразуете его в digraph объект.

Например, для сопоставления выполнения программы 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');

Производит: imageplot(g,'NodeLabel',g.Nodes.FunctionName,'Layout','layered');">

Файл, из которого поступает каждая функция, также доступен через поле FileName в FunctionTable, поэтому, если важно различать функции и файлы, из которых они получены, вы можете использовать эту информацию, чтобы соответствующим образом раскрасить или упростить график.

...