2011-10-03 62 views
0

發生了一些奇怪的事情。我用MATLAB R2011創建了一個MEX文件,並且我用Visual Studio 2010編譯了它。奇怪的MEX文件行爲

我能夠正確地在工作區中使用MEX文件。 然後,我在MATLAB m文件中使用MEX文件(多次調用MEX文件)。當我嘗試運行它時,MATLAB崩潰並問我關閉。

試圖分析錯誤,我把斷點,但是當我把斷點放在m文件中,一切都是正確的。實際上,我所做的所有m文件都是在函數結尾處放置一個斷點並運行正常,我也可以完成所有m文件而不會出錯。

但是,當我嘗試無斷點運行,MATLAB崩潰......

起初我以爲這可能是記憶,但爲什麼它有斷點正常工作?

如果你能給我一個線索來解決這個問題,我將不勝感激。

在此先感謝

傑西卡

+0

更多鏈接到用於調試MEX文件的文檔頁面:http://www.mathworks.com/support/tech-notes/1600/1605.html#gen_debugging,http://www.mathworks.com/help /techdoc/matlab_external/f32489.html – Amro

回答

0

聽起來像內存問題對我來說也是如此。正如Laurent所說的那樣,一些代碼會有所幫助。

如果你能重現崩潰,我建議調試c代碼本身。確保你運行mex文件的調試版本,在代碼中設置一個斷點,從Visual Studio連接到Matlab進程(ALt + Ctrl + p),然後從Matlab調用mex文件。

0

我也認爲這是一個記憶的問題。

也許,當通過調試器啓動mex文件時,內存處理方式不完全相同,或者問題發生在函數返回之後。

您應該嘗試使用this environment來啓動matlab以方便調試。

請注意,內存損壞可能會導致Matlab崩潰錯誤的Mex函數。 這意味着你可能正在調試錯誤的功能。

如需更多幫助,我需要看到你的代碼;)