I want to log the name of all the functions that are called for each Object instance in MATLAB!
For example if we have this class:
classdef ClassName
methods
function obj = ClassName()
...
end
function ordinaryMethod()
...
end
end
end
And i run the following code:
testObj = ClassName();
testObj.ordinaryMethod();
I can somehow log that the ordinaryMethod was called for testObj which is a instance of ClassName. To make it clear, I dont want to just get a list of all the function names, I only need those that are used in my program.
Can anyone give me ideas, how i can achieve this? Ideal solution is that I don't have to change the function codes!

 採用された回答

Guillaume
Guillaume 2016 年 9 月 22 日
編集済み: Guillaume 2016 年 9 月 22 日

0 投票

You could simply use the profiler which will return the list of all functions called by your code (when you run it), then filter that list by the class name:
profile('on'); %starts the profiler
%run your code
p = profile('info'); %stops the profiler
allfunctions = vertcat(p.FunctionName);
classfunctions = allfunctions(strncmp(allfunctions, 'ClassName>', numel(className))) %omly keep ClassName methods

2 件のコメント

Behzad Abdollahi
Behzad Abdollahi 2016 年 9 月 29 日
this works just fine, but the problem is that using profiler slows down matlab significantly and therefore I can not use this solution. thanks anyway :)
per isakson
per isakson 2016 年 9 月 29 日
It might be worth trying &nbsp tracer4m by per isakson

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Startup and Shutdown についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by