此示例演示如何调试次贷
MEX文件使用Xcode.
复制源MEX文件
这个yprime.c
源代码位于草根
文件夹在MATLAB中®,例如,将文件复制到本地可写文件夹/用户/共享/工作
。如果文件夹不存在,请创建该文件夹,并将其设置为MATLAB中的当前文件夹。
workdir=fullfile('/',“用户”,“共享”,“工作”);mkdir(workdir)copyfile(fullfile(matlabroot),“外人”,“例子”,“墨西哥”,“yprime.c”),workdir)cd(workdir)
编译源MEX文件
使用-g
选项,添加调试符号。MATLAB创建二进制MEX文件,yprime.mexmaci64
.
墨西哥-gyprime.c
创建空的Xcode调试工作区
在里面Xcode,
选择文件>刚出现的>工作空间.
在“文件选择”对话框中,在另存为:字段到除错素
.
选择/用户/共享/工作
用于存储工作区的文件夹。要选择该文件夹,请导航到该文件夹,或按命令+Shift+G使用键盘快捷键切换转到以下文件夹:菜单并键入完整路径/用户/共享/工作
.
点击拯救.
添加次贷
归档到Xcode工作空间
添加yprime.c
将文件拖到工作区,然后将其从/用户/共享/工作
将查找器中的文件夹放入页面左侧的navigator列中Xcode工作区窗口。
清除目的地选项将项目复制到目标组的文件夹(如果需要)
. 清除此选项可以将断点添加到MATLAB运行的文件中。
要添加文件,请单击完成.
创建方案
选择产品>计划>新方案。。。.
离开目标着手没有一个
.
设置名称到调试
.
按好啊. 将打开“方案编辑”对话框。
设定跑>信息>可执行选择另外. 在文件选择窗口中,按命令+Shift+G使用键盘快捷键切换转到以下文件夹:菜单。指定该菜单的完整路径MATLAB_maci64
MATLAB应用程序包中的可执行文件。完整路径的一个示例是/应用程序/MATLAB_R2016a.app/Contents/MacOS/MATLAB_maci64
.
选择等待启动可执行文件.
点击关.
添加符号断点
选择调试>断点>创建符号断点.
设置象征到非应用程序主
.
要添加以下调试器命令,请单击添加操作:
进程句柄-p真-n假-s假SIGSEGV SIGBUS
如果“断点编辑器”窗格消失,请右键单击新断点并选择编辑断点…回去
检查评估操作后自动继续.
在MEX文件中设置断点
选择看法>领航员>显示项目导航器.
点击yprime.c
在navigator列中。
单击要暂停执行的行旁边的檐槽,例如,在中的第一行mexFunction()
.
有关更多信息,请参阅Xcode文档
开始Xcode调试器和运行MATLAB
要启动调试器,请在Xcode选择产品>跑. 或者,单击跑在工作区窗口左上角附近带有三角形图标的按钮。
等待Xcode显示消息等待MATLAB启动
在工作区窗口的顶部。此操作可能需要几秒钟,尤其是第一次使用此过程时。
从雨衣终端提示(参见从终端窗口开始)或者从发现者那里。如果MATLAB已经在运行,右键单击Dock中的MATLAB图标并选择打开MATLAB的附加实例.
Xcode显示消息运行MATLAB:调试
.
在中运行二进制MEX文件MATLAB
在这个新的MATLAB实例中,将当前文件夹更改为具有次贷
文件并运行MEX文件。
workdir=fullfile('/',“用户”,“共享”,“工作”); cd(workdir)yprime(1,1:4)
这个Xcode调试器在中暂停yprime.c
在第一个断点处。
此时,您可以单步执行代码、检查变量等,但对于本练习,请选择持续从调试菜单执行次贷
完成和显示:
ans=2.0000 8.9685 4.0000-1.0947
只要这个MATLAB实例继续运行,您就可以反复执行MEX文件Xcode在设置的断点处停止。
LLDB是可用的调试器Xcode在…上马科斯有关调试器使用的更多信息,请参阅调试器随附的文档。
在这个过程中,,>>
指示MATLAB命令提示符,以及%
代表雨衣终端提示。调试器提示为(lldb)
.
此示例调试次贷
不带Java的MEX文件®虚拟机(JVM)™). 在此模式下运行MATLAB可以最大限度地减少内存使用,提高初始启动速度,但会限制功能。例如,您不能使用桌面。
使用-g
选项,该选项生成包含调试符号的文件。在终端提示下,键入:
%mex-g yprime.c
使用matlab
作用-D
选项:
%matlab-Dlldb
使用-nojvm
启动标志:
(lldb)运行-nojvm
在MATLAB中,使用dbmex
函数并运行MEX文件:
>>dbmex on>>yprime(1,1:4)
调试器捕获用户定义的信号,提示返回lldb。
您已准备好开始调试。
通常可以方便地在以下位置设置断点:MEX函数
因此,您将在网关例程的开始处停止。
(lldb)b MEX功能
一旦遇到断点,就可以使用任何调试器命令检查变量、显示内存或检查寄存器。要从断点继续,请键入:
(lldb)c
在最后一个断点处停止后,键入:
(lldb)c
次贷
完成和显示:
ans=2.0000 8.9685 4.0000-1.0947
在MATLAB提示符下,通过键入以下命令将控制返回到调试器:
>>dbmex停止
或者,如果运行完MATLAB,请键入:
>>退出
完成调试器后,键入:
(lldb)q
返回到终端提示符。
要使用JVM调试MEX文件,请首先处理西格塞格夫
和西格布斯
处理信号。启动MATLAB并在第一条指令处停止。
在终端提示下,编译MEX文件并启动lldb调试器。
%mex-g yprime.c%matlab-Dlldb
启动MATLAB。
(lldb)流程启动-s
当这些过程信号出现时,通知过程继续。
(lldb)进程句柄-p真-n假-s假SIGSEGV SIGBUS
可以设置断点并执行其他调试器命令。