2014-04-24 89 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