主要内容

在调试Mac平台

使用Xcode.

此示例显示如何调试ylime.墨西哥人文件使用Xcode.

复制源MEX文件

yprime.c源代码在matlabroot.文件夹中。在MATLAB®,将文件复制到本地,可写文件夹,例如/用户/共享/工作.如果不存在,请创建文件夹,并将其设置为Matlab中的当前文件夹。

workdir = fullfile(' / '“用户”“共享”‘工作’);mkdir(workdir)copyfile(fullfile(matlabroot,'extern''例子'墨西哥人的“yprime.c”), workdir) cd (workdir)

编译源mex文件

用源mex文件编译-G选项添加调试符号。Matlab创建二进制MEX文件,yprime.mexmaci64

梅克斯-Gyprime.c

创建空Xcode.工作区进行调试

Xcode.

  • 选择文件>新的>工作区

  • 在文件选择对话框中,在保存为:领域debug_yprime.

  • 选择/用户/共享/工作用于存储工作区的文件夹。要选择文件夹,要么导航到文件夹,要么按命令+ Shift + G键盘快捷键切换进入文件夹:菜单并键入完整路径/用户/共享/工作

  • 点击节省

添加ylime.文件Xcode.工作区

  • 添加yprime.c文件到工作区中,将其从/用户/共享/工作的左侧导航栏Xcode.工作区窗口。

  • 清除目的地选项,将项目复制到目标组的文件夹中(如果需要).清除此选项可以将断点添加到MATLAB运行的文件中。

  • 要添加文件,单击结束

创建计划

  • 选择产品>计划>新计划......

  • 离开目标设置为没有任何

  • 的名字调试

  • 新闻好的.方案编辑对话框打开。

  • 设置运行>信息>可执行的选择其他....在文件选择窗口中,按命令+ Shift + G键盘快捷键切换进入文件夹:菜单。指定完整的路径matlab_maci64.MATLAB应用程序包中的可执行文件。完整路径的一个例子是/应用程序/ MATLAB_R2016a.app /内容/ MacOS / MATLAB_maci64

  • 选择等待可执行文件被启动

  • 点击关闭

添加符号断点

  • 选择调试>断点>创建符号断点

  • 象征NSApplicationMain

  • 要添加以下调试器命令,单击添加动作

    进程句柄-p true -n false -s false SIGSEGV SIGBUS
  • 如果断点编辑器窗格消失,请右键单击新的断点并选择编辑断点…回到它

  • 检查在评估行动后自动继续

在MEX文件中设置断点

  • 选择视图>航海家>显示项目导航

  • 点击yprime.c在导航栏中。

  • 单击要暂停执行的行旁边的gutter,例如,在中的第一行mexfunction()

  • 有关更多信息,请参阅Xcode.文档。

开始Xcode.调试和运行MATLAB

  • 要启动调试器,请输入Xcode.选择产品>运行.或者,单击运行按钮,它带有工作区窗口左上角附近的三角形图标。

  • 等待Xcode.显示消息等待MATLAB发射在工作区窗口的顶部。此操作可能需要几秒钟,特别是您第一次使用此过程。

  • 启动MATLAB可执行文件Mac终端提示符(见从终端窗口开始)或从发现者。如果MATLAB已经在运行,右键单击Dock中的MATLAB图标并选择打开MATLAB的其他实例

  • Xcode.显示消息MATLAB:调试

运行二进制MEX文件MATLAB

在MATLAB的新实例中,将当前文件夹更改为文件夹ylime.文件并运行MEX文件。

workdir = fullfile(' / '“用户”“共享”‘工作’);cd (workdir) yprime (1:4)

Xcode.调试器停止yprime.c在第一个断点。

此时,您可以逐步通过您的代码,检查变量等,但是对于此练习,请选择继续来自调试菜单。的执行ylime.完成和MATLAB显示:

ANS = 2.0000 8.9685 4.0000 -1.0947

只要这个Matlab的实例继续运行,您就可以重复执行MEX文件Xcode.在您设置的断点处停止。

使用LLDB

LLDB是可用的调试器Xcode.苹果系统系统。有关其使用的更多信息,请参阅使用调试器提供的文档。

在这个过程中,>>表示MATLAB命令提示符,并且代表一个Mac终端提示符。调试器提示符为(lldb)

调试墨西哥人没有JVM

这个例子调试ylime.没有Java的MEX文件®虚拟机(JVM™)。在此模式下运行MATLAB可最大限度地降低内存使用率并提高初始启动速度,但限制功能。例如,您无法使用桌面。

  1. 用源mex文件编译-G选项,它构建包含调试符号的文件。在终端提示符下,输入:

    % mex -g yprime.c
  2. 使用该启动LLDB调试器马铃薯草功能-D.选项:

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

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

    >> DBMEX ON >> YLIME(1,1:4)

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

  5. 现在可以开始调试了。

    在以下位置设置断点通常很方便梅功能所以你在入口程序的开始处停止。

    (LLDB)B MexFunction
  6. 触点断点后,可以使用任何调试器命令检查变量,显示内存或检查寄存器。要从断点开始,请键入:

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

    (lldb) c

    ylime.完成和MATLAB显示:

    ANS = 2.0000 8.9685 4.0000 -1.0947
  8. 在MATLAB提示符中,输入以下命令将控制返回给调试器:

    >> DBMEX停止

    或者,如果你已经完成了MATLAB的运行,输入:

    > >退出
  9. 当你完成调试器时,输入:

    (lldb)问

    您返回到Terminal提示符。

调试的墨西哥人JVM

要用JVM调试MEX文件,请先使用句柄Sigsegv.Sigbus.处理信号。启动MATLAB并停在第一条指令。

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

    % mex -g yprime.c % matlab -Dlldb .c
  • 开始matlab。

    (lldb)进程启动
  • 当这些进程信号出现时,告诉进程继续。

    (LLDB)过程句柄-p true-n false -s false sigsegv sigbus
  • 您可以设置断点并执行其他调试器命令。

相关话题