2012-02-28 3 views
1

У меня есть проблема отладки S-функции Matlab, написанный на C. Исходный код является analysis.c, после того, как mexing этот файлотладки Matlab C S-функции с Visual Studio 2010

MEX -g -v анализа .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 как ту же установку Visual Studio, используя mex -setup.

+0

Да, я последовал за помощью Матлаба. C-файл одинаков. Запуск mex-setup показывает мне, что доступно только 2 компилятора: [1] Lcc-win32 C 2.4.1 в C: \ PROGRA ~ 1 \ MATLAB \ R2011a \ sys \ lcc [2] Microsoft Visual C++ 2010 в 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_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

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. Но один из модулей под названием OnDemand ... присутствовал в модулях Debug-Windows-Modules. Итак, поставим точку останова, даже если Visual Studio не показывает ваш модуль, или точка останова жалуется, что символы не загружены. Идем дальше и запускаем программу из Matlab yprime (1,1: 4), тогда символ будет загружен по требованию, и точка останова будет активирована. По крайней мере, в моем случае я мог бы. Фу!

Смежные вопросы