XCode7中断点调试Matlab的mex文件


      当Matlab和C++进行混编的时候,MacOS中调试Mex的方法有几种,一是利用Xcode,二是利用LLDB。在这里我尝试用Xcode对matlab的mex文件进行断点调试。

步骤如下:

1.在Xcode中,新建一个空的工程:"New->Project->Other->Empty",起一个工程名 如debug_xxx;
      XCode7中断点调试Matlab的mex文件_第1张图片   


2.将需要调试的CPP文件拖动到新建的xcode工程中,然后在matlab中,设置当前根目录为这个工程目录,然后用mex -g xxxx.cpp 进行编译.
XCode7中断点调试Matlab的mex文件_第2张图片


3.创建一个Scheme,"Product->Scheme->New Scheme”   取Name为debug
XCode7中断点调试Matlab的mex文件_第3张图片



XCode7中断点调试Matlab的mex文件_第4张图片


在Run  >  Info  >  Executable下拉框中选中"Other..”,然后快捷键“ Command+Shift+G ”, 输入matlab可执行文件  MATLAB_maci64  的绝对路径:/Applications/MATLAB_R2014b.app/Contents/MacOS/MATLAB_maci64
XCode7中断点调试Matlab的mex文件_第5张图片


勾选Wait for executable to be launched
XCode7中断点调试Matlab的mex文件_第6张图片


4.创建一个 Symbolic断点,"Debug-> Breakpoints-> Create Symbolic Breakpoint” 
XCode7中断点调试Matlab的mex文件_第7张图片


Name取为 NSApplicationMain,
Action中add action -> debugger command设为“ process handle -p true -n false -s false SIGSEGV SIGBUS”,
勾选“ Automatically continue after evaluating
XCode7中断点调试Matlab的mex文件_第8张图片


4.随便在mex文件中设置一个断点,运行xcode工程,状态栏会显示 “Waiting for MATLAB to launch"
XCode7中断点调试Matlab的mex文件_第9张图片


在终端命令行中进入到Matlab的可执行文件的目录,“ /Applications/MATLAB_R2014b.app/bin” ,  输入./matlab  启动,
XCode7中断点调试Matlab的mex文件_第10张图片

然后xcode状态显示为debug监听状态,在Matlab 中执行含有mex文件的m程序,xcode中会捕捉到,并在之前设置的断点处停下,之后就可以进行常规的xcode断点调试啦
XCode7中断点调试Matlab的mex文件_第11张图片



参考:
Debug on Mac Platforms



你可能感兴趣的:(Matlab,Xcode)