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”?

Matlab 中的 Visual Studio 2012 编译器更新