2012-02-28 12 views
1

私はデバッグMatlabのC S-機能のVisual Studioで2010

MEX -g -v分析することによって、このファイルをmexingした後、ソースコードがanalysis.cあるCで書かれたMatlabのS-機能をデバッグする問題を抱えています.c

私は "analysis.mexw32"と "analysis.mexw32.pdb"を取得します。

Visual Studio 2010では、「analysis.c」を開き、プロセス「Matlab」に添付してブレークポイントを設定します。これまでのところ、このブレークポイントは受け付けられません:

"ブレークポイントがヒットしませんでした。シンボルがロードされませんでした。

ファイルをMatlabで実行すると、すべてがブレークポイントに当たることなく実行されます。 誰も私にこれについて助言を与えることができますか?

私は以前これをしており、それは簡単でした。

+0

これはばかばかしいかもしれませんが、古典的な 'yprime.c'の例を' analysis.c'と同じディレクトリに作り、ブレークポイントを打ち込もうとしますか? – macduff

+0

私は同じフォルダにビルドできますが、ブレークポイントはヒットしません。 pdbファイルが生成されます。 – Papillon

+0

ここでも3年後と同じです。 ***に何の痛みがありますか?シンボルはVisual studio 2010にロードされておらず、すでに別のものを試してみるのに3時間もかかりません。 – infoclogged

答えて

1

MATLAB helpの手順に多かれ少なかれがあるようです。あなたはそれらを正確に追ってきたことを再度確認できますか?たとえば、まったく同じCファイルを開いたことがありますか?

私の最初の提案は、あなたのmexコンパイラがmex -setupを使ってVisual Studioと同じインストールに設定されていることを確認することです。

+0

はい、私はMatlabのヘルプに従っています。 Cファイルは同じです。 C:\ PROGRA〜1 \ MATLAB \ R2011a \ sys \ lccのLcc-win32 C 2.4.1 [2] Microsoft Visual C++ 2010 in C: \ Program \ Microsoft Visual Studio 10.0 < - 選択したもの。 – Papillon

+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_CSC \ 1 \ analysis.obj -IC:\ PROGRA~1 \ MATLAB \ R2011A \ extern \ include -IC:\ PROGRA~1 \ MATLAB \ R2011A \ simulink \ include/Z7 -DMX_COMPAT_32 analysis.c – Papillon

0

「プロセスにアタッチ」の設定を変更することで問題は解決されました。私はダイアログ内で「システム自身のコード」を選択しなければなりませんでした。その後、シンボルがロードされました。

0

ネイティブコードを使用すると、プロセスをMatlabにアタッチしている間は、ブレークポイントがヒットします。万歳、yprime.cと

0

マイセットアップが非常に悪く、ここで説明したように: 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というモジュールの1つがDebug-Windows-Modulesにありました。 Visual Studioにモジュールが表示されていない場合や、シンボルがロードされていないとブレークポイントがエラーを発した場合でもブレークポイントを設定します。 Matlab yprime(1,1:4)からプログラムを実行すると、シンボルがオンデマンドでロードされ、ブレークポイントがアクティブになります。私の場合、少なくとも可能でした。 Phew!

関連する問題