Странное поведение MEX-файла - PullRequest
0 голосов
/ 03 октября 2011

Что-то странное происходит. Я создал MEX-файл в MATLAB R2011 и скомпилировал его в Visual Studio 2010.

Я могу правильно использовать MEX-файл в рабочей области. Затем я использую MEX-файл внутри m-файла MATLAB (вызывает MEX-файл несколько раз). Когда я пытаюсь запустить его, MATLAB падает и просит меня закрыть.

Пытаясь проанализировать ошибку, я ставлю точки останова, но когда я ставлю точки останова в m-файле, все правильно. На самом деле то, что я делаю для запуска всего m-файла, ставит точку останова в конце функции и работает нормально, я также могу завершить весь m-файл без ошибок.

Но когда я пытаюсь запустить его без точек останова, MATLAB вылетает ...

Сначала я подумал, что это может быть память, но почему она правильно работает с точками останова?

Буду признателен, если вы подскажете мне, как это решить.

Заранее спасибо

Джессика

Ответы [ 2 ]

0 голосов
/ 03 октября 2011

Звучит как проблема с памятью для меня. Некоторый код поможет, как упомянуто Лораном.

Если вы можете воспроизвести сбой, я предлагаю отладку самого кода c. Убедитесь, что вы запускаете отладочную версию файла mex, устанавливаете точку останова в своем коде, присоединяетесь к процессу Matlab из Visual Studio (ALt + Ctrl + p) и вызываете файл mex из Matlab.

0 голосов
/ 03 октября 2011

Я также думаю, что это проблема с памятью.

Возможно, когда вы запускаете ваш mex-файл через отладчик, память не обрабатывается точно так же, или проблема возникает сразу после возврата вашей функции.

Вы должны попытаться запустить matlab с в этой среде для облегчения отладки.

Обратите внимание, что повреждение памяти может привести к сбою Matlab после неисправного Mexфункция.Это означает, что вы, возможно, отлаживаете не ту функцию.

Для получения дополнительной помощи мне нужно увидеть ваш код;)

...