2012-02-28 56 views
1

我有調試用C. Matlab的S函數的源代碼是analysis.c,通過調試Matlab的(C S)函數與Visual Studio 2010

MEX -g -v分析mexing該文件後一個問題.C

我獲得 「analysis.mexw32」 和 「analysis.mexw32.pdb」。

在Visual Studio 2010中,我打開「analysis.c」,將其連接到進程「Matlab的」,並設置一個斷點。到目前爲止,這個斷點不被接受:

「斷點打不加載任何符號。」

當我在Matlab中運行該文件時,一切都會執行而不會觸及斷點。 有人可以給我一些建議嗎?

我以前做過這件事,它的工作很簡單。

+0

這可能看起來很可笑,但你可以建立在同一目錄'analysis.c'經典'yprime.c'例子,並嘗試成功擊中一個斷點? – macduff 2012-02-28 14:39:53

+0

我可以在同一個文件夾中構建它,但不會觸發斷點。生成pdb文件。 – Papillon 2012-02-28 16:36:26

+0

即使在3年後也是如此。 ***是多麼的痛苦。這些符號不會在Visual Studio 2010中加載,並且已經在嘗試嘗試不同的事情時已經失去了3個小時。 – infoclogged 2015-11-23 15:02:28

回答

1

您似乎更多或更少,隨後在MATLAB help的說明。你能仔細檢查一下你是否已經準確地跟蹤了他們嗎?例如,你打開了完全相同的C文件嗎?

我的第一個建議是,以確保配置您的MEX編譯器是使用mex -setup的Visual Studio相同的安裝。

+0

是的,我遵循Matlab的幫助。 C文件是一樣的。運行mex -setup告訴我只有2個編譯器可用:[1] LCC-win32 C 2.4.1在C:\ PROGRA〜1 \ MATLAB \ R2011a \ sys \ lcc中 [2] Microsoft Visual C++ 2010 in C: \ Program \ Microsoft Visual Studio 10.0 < - 我選擇的一個。 – Papillon 2012-02-28 10:29:07

+0

我還得到: - > cl/c/Zp8/GR/W3/EHs/D_CRT_SECURE_NO_DEPRECATE/D_SCL_SECURE_NO_DEPRECATE/D_SECURE_SCL = 0/DMATLAB_MEX_FILE/nologo/MD /FoC:\DOKUME~1\BENDER~1.WIN\LOKALE~ 1 \ TEMP \ MEX_CS〜1 \ analysis.obj -IC:\ PROGRA〜1 \ MATLAB \ R2011A \ extern \ include -IC:\ PROGRA〜1 \ MATLAB \ R2011A \ simulink \ include/Z7 -DMX_COMPAT_32 analysis.c – Papillon 2012-02-28 10:36:04

0

該問題已通過更改「附加到過程」設置來解決。我必須在對話框中選擇「系統自己的代碼」,然後加載符號。

0

使用本機代碼,同時將過程附加到Matlab,它工作,斷點被擊中。華友世紀,

0

我與yprime.c設置爲非常糟糕說明如下: http://de.mathworks.com/help/matlab/matlab_external/debugging-on-microsoft-windows-platforms.html

Tools-Options-Debugging-General - "Enable just my code" is unchecked. 
Tools-Options-Debugging-Native - Load DLL, Enable RPC Debugging. 
Tools-Options-Debugging-Symbols - 
1. Uncheck Microsoft Symbol servers. 
2. Add the *location* of your pdb file by clicking on new folder. 
3. Cache symbols in this directoy in my case is empty. 
Attach process -> *Automatic : Native code* -> Matlab 
Debug -Windows- Modules should show your module (pdb file) now. 

我注意到的是,象徵是上面寫PROCESSS仍然沒有被加載inspite的情況之一。但調試窗口模塊中有一個名爲OnDemand的模塊。 因此,即使Visual Studio不顯示您的模塊或斷點抱怨沒有符號加載,也要放一個斷點。繼續從Matlab yprime(1,1:4)運行程序,然後符號將按需加載,並且斷點將被激活。至少在我的情況下,我可以。 唷!