主要内容

调试雨衣平台

使用Xcode

此示例演示如何调试次贷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_maci64MATLAB应用程序包中的可执行文件。完整路径的一个示例是/应用程序/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

LLDB是可用的调试器Xcode在…上马科斯有关调试器使用的更多信息,请参阅调试器随附的文档。

在这个过程中,,>>指示MATLAB命令提示符,以及%代表雨衣终端提示。调试器提示为(lldb).

无需调试MEX虚拟机

此示例调试次贷不带Java的MEX文件®虚拟机(JVM)™). 在此模式下运行MATLAB可以最大限度地减少内存使用,提高初始启动速度,但会限制功能。例如,您不能使用桌面。

  1. 使用-g选项,该选项生成包含调试符号的文件。在终端提示下,键入:

    %mex-g yprime.c
  2. 使用matlab作用-D选项:

    %matlab-Dlldb
  3. 使用-nojvm启动标志:

    (lldb)运行-nojvm
  4. 在MATLAB中,使用dbmex函数并运行MEX文件:

    >>dbmex on>>yprime(1,1:4)

    调试器捕获用户定义的信号,提示返回lldb。

  5. 您已准备好开始调试。

    通常可以方便地在以下位置设置断点:MEX函数因此,您将在网关例程的开始处停止。

    (lldb)b MEX功能
  6. 一旦遇到断点,就可以使用任何调试器命令检查变量、显示内存或检查寄存器。要从断点继续,请键入:

    (lldb)c
  7. 在最后一个断点处停止后,键入:

    (lldb)c

    次贷完成和显示:

    ans=2.0000 8.9685 4.0000-1.0947
  8. 在MATLAB提示符下,通过键入以下命令将控制返回到调试器:

    >>dbmex停止

    或者,如果运行完MATLAB,请键入:

    >>退出
  9. 完成调试器后,键入:

    (lldb)q

    返回到终端提示符。

使用调试MEX虚拟机

要使用JVM调试MEX文件,请首先处理西格塞格夫西格布斯处理信号。启动MATLAB并在第一条指令处停止。

  • 在终端提示下,编译MEX文件并启动lldb调试器。

    %mex-g yprime.c%matlab-Dlldb
  • 启动MATLAB。

    (lldb)流程启动-s
  • 当这些过程信号出现时,通知过程继续。

    (lldb)进程句柄-p真-n假-s假SIGSEGV SIGBUS
  • 可以设置断点并执行其他调试器命令。

相关话题