2012-09-10 95 views
1

我想运行一个在MATLAB中使用mex文件的代码(由某人发送给我)。我已经设法编译mex文件,但是当我运行调用这些文件的代码时,出现下面显示的错误。我不太确定这里发生了什么,所以任何帮助将不胜感激。执行mex文件时MATLAB崩溃

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 

回答

4

MEX代码中肯定存在一个错误。两种可能性: 1.错误检查不足,并且您使用无效的参数(错误类型,大小,顺序等)调用该函数。 2.如果您使用的是确认的在作者的机器上工作的参数,那么也许代码是不可移植的,并作出不好的假设(32/64位,Windows/Linux等)

步骤1:检查您的参数,如果可能的话使用最小的测试设置在作者的计算机上已经过验证。

第2步:通过调试器运行相同的代码: http://www.mathworks.com/help/matlab/matlab_external/debugging-c-c-language-mex-files.html 这将有助于隔离崩溃的位置。然后修复代码:)

+0

链接被移动了,你能纠正它吗?谢谢 –