Mac平台上的调试
使用Xcode
这个例子展示了如何调试MEX文件,yprime.c
,使用Xcode。
复制源MEX文件
的yprime.c
源代码在matlabroot
文件夹中。在MATLAB®例如,将文件复制到本地可写文件夹/usr/work/my_data
.如果该文件夹不存在,则创建该文件夹。
拷贝文件(fullfile (matlabroot,“外来的”,“例子”,墨西哥人的,“yprime.c”),...fullfile (' / ',“usr”,‘工作’,“my_data”))
在MATLAB中设置当前文件夹为/usr/work/my_data
.
编译源MEX文件
方法编译源MEX文件- g
选项,该选项将添加调试符号。
墨西哥人- gyprime.c
MATLAB创建二进制MEX文件,yprime.mexmaci64
.
创建一个空的Xcode项目用于调试
在Xcode中,
选择文件>新>项目.
在“为项目选择模板”对话框中,在OS X部分中,选择其他.
选择空.
集产品名称来
debug_yprime
.
添加yprime
项目文件
要向源代码文件添加断点,请添加yprime.c
文件到项目。您可以将文件直接拖到项目中,也可以右键单击项目并单击添加文件到"debug_yprime"添加文件。
确保目的地选项,将项目复制到目标组文件夹中(如果需要)
清除。清除此选项可以将断点添加到MATLAB运行的文件中。
点击完成添加文件。
创建一个计划
选择产品>计划>新方案…….
集的名字来
调试
.集目标来
没有一个
.新闻好吧.打开方案编辑对话框。
设置运行>信息>可执行的选项其他…….在文件选择窗口中,按命令+ Shift + G键盘快捷键切换进入文件夹:菜单。指定完整的路径到MATLAB
MATLAB_maci64
可执行文件,您将使用它来调试MEX文件。全路径的一个例子是/应用程序/ MATLAB_R2016a.app /内容/ MacOS / MATLAB_maci64
.选择等待可执行文件启动.
添加一个符号断点
打开调试菜单:
选择调试>断点>创建符号断点.
集象征来NSApplicationMain
.
点击添加操作添加以下调试器命令:
process handle -p true -n false -s false SIGSEGV SIGBUS .进程句柄
检查计算后自动继续.
设置断点
添加断点yprime.c
,单击要暂停执行的行旁边的凹槽。更多信息请参考Xcode文档。
开始MATLAB
点击运行在项目窗口的左上角(或键入Command-R)启动调试器。Xcode显示一条消息等待MATLAB启动
.这个操作可能需要几秒钟的时间,尤其是第一次使用这个过程时。
从Mac终端提示符或Finder启动MATLAB可执行程序。有关Mac启动信息,请参见从终端窗口开始.
在MATLAB中运行二进制MEX文件
在MATLAB中,将当前文件夹更改为带有yprime
文件。
运行二进制MEX文件。
yprime (1:4)
打开调试器yprime.c
在第一个断点处。
新闻继续.MATLAB显示:
Ans = 2.0000 8.9685 4.0000 -1.0947
使用LLDB
LLDB是macOS系统上的Xcode可用的调试器。有关使用调试器的更多信息,请参阅调试器附带的文档。
在这个过程中,>>
表示MATLAB命令提示符,和%
表示Mac终端提示符。调试器提示符是(lldb)
.
没有JVM的MEX调试
此示例调试yprime
MEX文件没有Java®虚拟机(JVM™)。在这种模式下运行MATLAB可以最大限度地减少内存使用量,提高初始启动速度,但限制了功能。例如,不能使用桌面。
方法编译源MEX文件
- g
选项,该选项将构建包含调试符号的文件。在Terminal提示符下,输入:% mex -g yprime.c
启动lldb调试器
matlab
函数- d
选择:% matlab -Dlldb
启动MATLAB使用
-nojvm
启动标志:(lldb) -nojvm运行
在MATLAB中,启用调试
dbmex
函数并运行你的MEX文件:>> dbmex on >> yprime(1,1:4)
调试器捕获用户定义的信号,并将提示返回到lldb。
您已经准备好开始调试了。
设置断点通常很方便
mexFunction
所以在网关程序的开始就停止了。(lldb) b mexFunction
一旦遇到断点,就可以使用任何调试器命令检查变量、显示内存或检查寄存器。要从断点开始,输入:
(lldb) c
在最后一个断点停止后,输入:
(lldb) c
yprime
饰面和MATLAB显示:Ans = 2.0000 8.9685 4.0000 -1.0947
在MATLAB提示符中,输入以下命令,将控制权返回给调试器:
> > dbmex停止
或者,如果你已经运行完MATLAB,输入:
> >退出
当你用完调试器后,输入:
(lldb)问
您返回到Terminal提示符。
用JVM调试MEX
要用JVM调试MEX文件,首先要使用句柄SIGSEGV信号
而且rt_signal_lease
过程的信号。启动MATLAB并在第一个指令处停止。
在Terminal提示符下,编译MEX文件并启动lldb调试器。
% mex -g yprime.c % matlab -Dlldb
MATLAB开始。
进程启动-s
当出现这些流程信号时,告诉流程继续。
(lldb)进程句柄-p true -n false -s false SIGSEGV SIGBUS
您可以设置断点并执行其他调试器命令。