MATLAB аварийно завершает работу при выполнении mex-файла

Я пытаюсь запустить код (присланный мне кем-то), который использует файлы MEX в MATLAB. Мне удалось скомпилировать mex-файлы, но когда я запускаю код, вызывающий эти файлы, я получаю сообщение об ошибке, показанное ниже. Я не совсем уверен, что здесь происходит, поэтому любая помощь будет оценена по достоинству.

Segmentation violation detected at Mon Sep 10 16:26:11 2012
------------------------------------------------------------------------

Configuration:
  Crash Decoding  : Disabled
  Current Visual  : 0x22 (class 4, depth 24)
  Default Encoding: UTF-8
  GNU C Library   : 2.11.3 stable
  MATLAB Root     : /cae/apps/data/matlab-2012a
  MATLAB Version  : 7.14.0.739 (R2012a)
  Operating System: Linux 3.2.0-0.bpo.2-amd64 #1 SMP Fri Jun 29 20:42:29 UTC 2012 x86_64
  Processor ID    : x86 Family 6 Model 42 Stepping 7, GenuineIntel
  Virtual Machine : Java 1.6.0_26-b03 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
  Window System   : The X.Org Foundation (11006000), display localhost:10.0

Fault Count: 1


Abnormal termination:
Segmentation violation

person NSR    schedule 10.09.2012    source источник


Ответы (1)


В коде MEX определенно есть ошибка. Две возможности: 1. Ошибка связана с недостаточной проверкой ошибок, и вы вызываете функцию с недопустимыми параметрами (неверные типы, размеры, порядок и т. д.). 2. Если вы используете подтвержденный набор параметров, работать на машине автора, то, возможно, код не переносим и делает неверные предположения (32/64 бит, Windows/Linux и т. д.)

Шаг 1: Проверьте свои аргументы, по возможности используйте минимальный набор тестов, проверенный на компьютере автора.

Шаг 2: Запустите тот же код через отладчик: http://www.mathworks.com/help/matlab/matlab_external/debugging-cc-language-mex-files.html Это поможет определить место сбоя. Тогда исправьте код :)

person Peter    schedule 10.09.2012