1. 程式人生 > >XCode7中斷點除錯Matlab的mex檔案

XCode7中斷點除錯Matlab的mex檔案

      當Matlab和C++進行混編的時候,MacOS中除錯Mex的方法有幾種,一是利用Xcode,二是利用LLDB。在這裡我嘗試用Xcode對matlab的mex檔案進行斷點除錯。 步驟如下: 1.在Xcode中,新建一個空的工程:"New->Project->Other->Empty",起一個工程名 如debug_xxx;          2.將需要除錯的CPP檔案拖動到新建的xcode工程中,然後在matlab中,設定當前根目錄為這個工程目錄,然後用mex -g xxxx.cpp 進行編譯.
3.建立一個Scheme,"Product->Scheme->New Scheme”   取Name為debug

在Run > Info > Executable下拉框中選中"Other..”,然後快捷鍵“Command+Shift+G”,輸入matlab可執行檔案 MATLAB_maci64 的絕對路徑:/Applications/MATLAB_R2014b.app/Contents/MacOS/MATLAB_maci64

勾選Wait for executable to be launched
4.建立一個Symbolic斷點,"Debug->Breakpoints->Create Symbolic Breakpoint” 
Name取為NSApplicationMain, Action中add action -> debugger command設為“process handle -p true -n false -s false SIGSEGV SIGBUS”, 勾選“Automatically continue after evaluating

4.隨便在mex檔案中設定一個斷點,執行xcode工程,狀態列會顯示 “Waiting for MATLAB to launch"
在終端命令列中進入到Matlab的可執行檔案的目錄,“/Applications/MATLAB_R2014b.app/bin” ,  輸入./matlab  啟動,
然後xcode狀態顯示為debug監聽狀態,在Matlab 中執行含有mex檔案的m程式,xcode中會捕捉到,並在之前設定的斷點處停下,之後就可以進行常規的xcode斷點除錯啦

參考: