Visual Studio 中的配置文件 mex 功能
Posted
技术标签:
【中文标题】Visual Studio 中的配置文件 mex 功能【英文标题】:Profile mex function in visual studio 【发布时间】:2014-04-24 17:21:37 【问题描述】:here 解释了如何在 Visual Studio 中分析 .exe 文件。有没有办法使用相同的程序来分析 mex 代码?
谢谢。
【问题讨论】:
【参考方案1】:你当然可以。只需在构建 MEX 文件时启用调试信息(符号)的生成,然后从 Visual Studio 的分析->配置文件菜单附加到 MATLAB.exe。
这与使用 Visual Studio 调试 MEX 文件的过程几乎相同。如果您使用 VS 项目(而不是 mex
命令)构建 MEX 文件,则该过程很简单,在这种情况下,您只需在项目中启用 Profiling 信息(Linker-Advanced-Profile 属性),构建,然后附加到MATLAB.exe 从Analyze->Profiler->Attach/detach... 菜单项。
如果您使用 MATLAB 中的 mex
进行构建,则需要启用使用符号信息构建 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 文件。
【讨论】:
非常感谢您的回复!Generate Debug Info: Yes(\Debug)
, Profile: Yes(PROFILE)
然后附上matlab。 VS2010 中出现了一个新的 tad,消息为 Currently profiling
,但正在无休止地加载。难道我做错了什么? PS:我在分析过程中运行了 mex 函数。
@Thoth 没错,当它具有永久旋转的漩涡状物体时,它正在分析。您需要分离才能让 VS 报告结果。使用性能资源管理器(通常是左侧的选项卡)进行分离,或从分析->分析器菜单中分离。有时 停止 而不是分离可能会使 MATLAB 崩溃。
我们是否必须在后台运行 mex 函数,通过 matlab,而 VS 正在分析?
@Thoth 是的,分析本质上是观察它的运行,并查看观察到单个行执行的频率。停止分析,创建一个新的分析会话,附加,转到 MATLAB 并开始运行 MEX 文件,然后在完成后返回 VS 并分离。
@chappjc MEX 文件不是从 VS 构建的,也不是在 MATLAB 中使用 mex
工具构建的?使用带有-lmex和-lmx的g ++从目标文件编译的那些呢?当我尝试它时,VS 在尝试分析它时会永远挂起。以上是关于Visual Studio 中的配置文件 mex 功能的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Visual Studio 2010 调试 MATLAB .mex32/.mex64 文件
在 Visual Studio Ultimate 2012 下构建 mex 文件
使用 Visual Studio 2013 IDE 编译 CUDA Mex 文件
无法将 matlab.exe 进程附加到 Visual Studio 2013 以调试 mex 文件?
在 Visual Studio 中构建 MATLAB mex 文件会给出“函数 mexFunction 中引用的 LNK2019 未解析的外部符号 _mexPrintf”?