В этом примере показано, как отладить yprime
Файл MEX с помощью XCode.
Скопируйте исходный файл MEX
yprime.c
исходный код находится в matlabroot
папка. В MATLAB® скопируйте файл в локальную, перезаписываемую папку, например, /Users/Shared/work
. Создайте папку, если она не существует и установила его как вашу текущую папку в MATLAB.
workdir = fullfile('/','Users','Shared','work'); mkdir(workdir) copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),workdir) cd(workdir)
Скомпилируйте исходный файл MEX
Скомпилируйте исходный файл MEX с -g
опция, которая добавляет отладочную информацию. MATLAB создает бинарный файл MEX, yprime.mexmaci64
.
mex -g yprime.c
Создайте пустую рабочую область XCode для отладки
В XCode,
Выберите File> New> Workspace.
В диалоговом окне выбора файла, определенном имя Рабочей области в поле Save As: к debug_yprime
.
Выберите /Users/Shared/work
папка, в которой можно сохранить рабочую область. Чтобы выбрать папку, или перейти к папке, или нажимают горячую клавишу Command+Shift+G, чтобы переключить меню Go to the folder: и ввести полный путь /Users/Shared/work
.
Нажмите Save.
Добавьте yprime
Файлы к рабочей области XCode
Добавить yprime.c
файл к рабочей области, перетащите его от /Users/Shared/work
папка в Средстве поиска в столбец навигатора на левой стороне окна рабочей области XCode.
Очистите опцию Destination, Copy items into destination group's folder (if needed)
. Очистка этой опции позволяет точкам останова быть добавленными к файлу, который запускает MATLAB.
Чтобы добавить файл, нажмите Finish.
Создайте схему
Выберите Product> Scheme> New Scheme....
Оставьте набор Target None
.
Установите Name на debug
.
Нажмите OK. Схема, редактирующая диалоговое окно, открывается.
Установите Run> Info> опция Executable к Other.... В окне выбора файла нажмите горячую клавишу Command+Shift+G, чтобы переключить меню Go to the folder:. Задайте полный путь к MATLAB_maci64
исполняемый файл в пакете приложения MATLAB. Примером полного пути является /Applications/MATLAB_R2016a.app/Contents/MacOS/MATLAB_maci64
.
Выберите Wait for executable to be launched.
Нажмите Close.
Добавьте символьную точку останова
Выберите Debug> Breakpoints> Create Symbolic Breakpoint.
Установите Symbol на NSApplicationMain
.
Чтобы добавить следующую команду отладчика, нажмите Add action:
process handle -p true -n false -s false SIGSEGV SIGBUS
Если редактор точки останова, панель исчезает, щелкает правой кнопкой по новой точке останова и выбирает Edit Breakpoint…, чтобы возвратиться к ней
Проверяйте Automatically continue after evaluating actions.
Установка точек останова в вашем файле MEX
Выберите View> Navigators> Show Project Navigator.
Нажмите yprime.c
в столбце навигатора.
Кликните по полю рядом с линией, где вы хотите, чтобы выполнение сделало паузу, например, в первой линии в mexFunction()
.
Для получения дополнительной информации обратитесь к документации XCode.
Запустите отладчик XCode и запущенный MATLAB
Чтобы запустить отладчик, в XCode выбирают Product> Run. В качестве альтернативы нажмите кнопку Run с треугольным значком около левого верхнего угла окна рабочей области.
Ожидайте XCode, чтобы отобразить сообщение Waiting for MATLAB to launch
наверху окна Workspace. Это действие может занять несколько секунд, особенно в первый раз, когда вы используете эту процедуру.
Запустите исполняемый файл MATLAB с подсказки Терминала Mac (см., Начинают с Окна терминала), или со Средства поиска. Если MATLAB уже запускается, щелкните правой кнопкой по значку MATLAB по Прикреплению и выберите Open Additional Instance of MATLAB.
XCode отображает сообщение Running MATLAB: debug
.
Запустите бинарный файл MEX в MATLAB
В этом новом экземпляре MATLAB измените текущую папку в папку с yprime
файлы и запуск файл MEX.
workdir = fullfile('/','Users','Shared','work'); cd(workdir) yprime(1,1:4)
Отладчик XCode останавливается в yprime.c
в первой точке останова.
В этой точке можно продвинуться через код, исследовать переменные, и т.д., но для этого осуществления, выбрать Continue из меню Debug. Выполнение yprime
концы и отображения MATLAB:
ans = 2.0000 8.9685 4.0000 -1.0947
Пока этот экземпляр MATLAB продолжает запускаться, можно неоднократно выполнять файл MEX и остановы XCode в точках останова, которые вы устанавливаете.
LLDB является отладчиком, доступным с XCode в macOS системах. Обратитесь к документации, которой предоставляют ваш отладчик для получения дополнительной информации о его использовании.
В этой процедуре, >>
указывает на командную строку MATLAB и %
представляет подсказку Терминала Mac. Подсказкой отладчика является (lldb)
.
Этот пример отлаживает yprime
Файл MEX без Виртуальной машины Java® (JVM™). Рабочий MATLAB в этом режиме минимизирует использование памяти и улучшает начальную скорость запуска, но ограничивает функциональность. Например, вы не можете использовать рабочий стол.
Скомпилируйте исходный файл MEX с -g
опция, которая создает файл с включенной отладочной информацией. В Терминальной подсказке введите:
% mex -g yprime.c
Запустите lldb отладчик с помощью matlab
функциональный -D
опция:
% matlab -Dlldb
Запустите MATLAB с помощью -nojvm
флаг запуска:
(lldb) run -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 stop
Или, если вы закончены рабочий MATLAB, введите:
>> quit
Когда вы будете закончены с отладчиком, введите:
(lldb) q
Вы возвращаетесь к Терминальной подсказке.
Чтобы отладить файл MEX с JVM, сначала обработайте SIGSEGV
и SIGBUS
сигналы процесса. Запустите MATLAB и остановитесь в первой инструкции.
В Терминальной подсказке скомпилируйте файл MEX и запустите lldb отладчик.
% mex -g yprime.c % matlab -Dlldb
StartMatlab.
(lldb) process launch -s
Скажите процессу продолжаться, когда эти сигналы процесса произойдут.
(lldb) process handle -p true -n false -s false SIGSEGV SIGBUS
Можно установить точки останова и выполнить другие команды отладчика.