2014-04-24 55 views

回答

8

你当然可以。只需在生成MEX文件时生成调试信息(符号),并从Visual Studio中的Analyze-> Profile菜单中附加到MATLAB.exe。

这与使用Visual Studio调试MEX文件几乎相同。如果使用VS项目(而不是mex命令)构建MEX文件,则只需在项目中启用分析信息(链接器 - 高级 - 配置文件属性),生成并附加到MATLAB,该过程就很简单。 exe从Analyze-> Profiler-> Attach/detach ...菜单项。

如果您正在使用mex从MATLAB建设,需要启动建设有象征性的信息的MEX文件,而且还使优化:

mex -g -O -largeArrayDims myMEX.cpp 

我一般建立从VS项目MEX文件,而不是mex,所以我不能说这后一个选项的效果如何,但-O switch的文档建议您可以同时进行优化和符号信息生成。 编辑:它可能还需要编辑mexopts.bat并将/DEBUG /PROFILE(不禁用编译器优化!)添加到LINKFLAGS。这也可能允许你从mex中省略-g,但我不能说。

编辑2:从R2014a,MEX选项不再使用.bat文件管理。相反,寻找一个像C:\Users\Jon\AppData\Roaming\MathWorks\MATLAB\R2014a\mex_C_win64.xml这样的XML文件。

+0

非常感谢您的回应! '生成调试信息:是(\ Debug)','Profile:Yes(PROFILE)',然后附加matlab。在VS2010中出现了一个新消息“当前性能分析”,但是没有结束加载。难道我做错了什么? PS:我在分析过程中运行了mex功能。 – Thoth

+0

@Thoth这是正确的,当它具有永久旋转的东西时,它正在分析。您需要分离以使VS报告结果。使用性能浏览器(通常是左侧的选项卡)来分离,或从Analyze-> Profiler菜单中进行分离。有时_停止而不是分离可能会导致MATLAB崩溃。 – chappjc

+0

当VS正在分析时,我们是否必须通过matlab在背景上运行mex函数? – Thoth