在Visual Studio中的配置mex函数

5

这里,解释了如何在Visual Studio中对.exe文件进行分析。是否有办法使用相同的过程对mex代码进行分析?

谢谢。

1个回答

9
你肯定可以。只需在构建MEX文件时启用调试信息(符号),然后从Visual Studio的Analyze->Profile菜单附加到MATLAB.exe即可。
这与使用Visual Studio调试MEX文件的过程几乎相同。如果您使用VS项目(而不是mex命令)构建了MEX文件,则该过程非常简单,您只需在项目中启用分析器信息(链接器-高级-配置属性),构建,然后从Analyze->Profiler->Attach/detach...菜单项附加到MATLAB.exe。
如果您正在使用MATLAB的mex构建,则需要启用带有符号信息的MEX文件构建,但也要启用优化:
mex -g -O -largeArrayDims myMEX.cpp

我通常从VS项目构建MEX文件,而不是使用mex命令,因此我无法确定后者的效果如何,但-O开关的文档表明您可以同时进行优化和符号信息生成。 编辑:这也可能需要编辑您的mexopts.bat并在LINKFLAGS中添加/DEBUG /PROFILE(不会禁用编译器优化!)。这也可能允许您省略mex中的-g,但我不能确定。 编辑2:从R2014a开始,MEX选项不再使用.bat文件管理。相反,请查找类似于C:\Users\Jon\AppData\Roaming\MathWorks\MATLAB\R2014a\mex_C_win64.xml的XML文件。

感谢您的回复,真的非常感激!生成调试信息:是(\Debug)配置文件:是(PROFILE),然后附上了Matlab。在VS2010中出现了一个新标签,上面显示着“正在进行性能分析”,但一直加载不完。我做错了什么吗?PS:我在性能分析期间运行了mex函数。 - Thoth
@Thoth,没错,只有出现旋转的漩涡图案时才是性能分析。你需要分离才能让VS报告结果。使用Performance Explorer(通常在左侧选项卡上)进行分离,或从Analyze->Profiler菜单中进行操作。有时候停止而不是分离可能会导致MATLAB崩溃。 - chappjc
在 VS 进行性能分析时,我们是否需要通过 Matlab 在后台运行 mex 函数? - Thoth
@Thoth 是的,性能分析基本上是观察它运行并查看观察到执行的单个行的频率。停止分析,创建一个新的分析会话,附加,转到MATLAB并开始运行MEX文件,然后当完成时返回VS并分离。 - chappjc
@chappjc,那么那些不是使用VS或在MATLAB中使用mex工具构建的MEX文件呢?那些使用g++编译对象文件并带有-lmex和-lmx选项的文件呢?当我尝试这样做时,VS会在分析它时永远挂起。 - Tyler Shellberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接