文档

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键盘快捷键切换进入文件夹:菜单。指定完整的路径到MATLABMATLAB_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调试

此示例调试yprimeMEX文件没有Java®虚拟机(JVM™)。在这种模式下运行MATLAB可以最大限度地减少内存使用量,提高初始启动速度,但限制了功能。例如,不能使用桌面。

  1. 方法编译源MEX文件- g选项,该选项将构建包含调试符号的文件。在Terminal提示符下,输入:

    % mex -g yprime.c
  2. 启动lldb调试器matlab函数- d选择:

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

    (lldb) -nojvm运行
  4. 在MATLAB中,启用调试dbmex函数并运行你的MEX文件:

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

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

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

    设置断点通常很方便mexFunction所以在网关程序的开始就停止了。

    (lldb) b mexFunction
  6. 一旦遇到断点,就可以使用任何调试器命令检查变量、显示内存或检查寄存器。要从断点开始,输入:

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

    (lldb) c

    yprime饰面和MATLAB显示:

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

    > > dbmex停止

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

    > >退出
  9. 当你用完调试器后,输入:

    (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
  • 您可以设置断点并执行其他调试器命令。

相关的话题

这个话题有帮助吗?