2012-09-10 136 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

鏈接被移動了,你能糾正它嗎?謝謝 –