exponenta event banner

Отладка на платформах Mac

Использование Xcode

В этом примере показано, как отладить 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

  • Выберите меню «Файл» > «Создать» > «Рабочее пространство».

  • В диалоговом окне выбора файла задайте имя рабочей области в поле Сохранить как: debug_yprime.

  • Выберите /Users/Shared/work в которой хранится рабочая область. Чтобы выбрать папку, перейдите к ней или нажмите клавиши «Command» + «Shift» + «G», чтобы переключить меню «Go to the folder:» и введите полный путь/Users/Shared/work.

  • Нажмите кнопку Сохранить.

Добавить yprime Файлы в рабочую область Xcode

  • Для добавления yprime.c в рабочую область, перетащите его из /Users/Shared/work в окне Finder в столбце навигатора в левой части окна рабочего пространства Xcode.

  • Снимите флажок «Назначение», Copy items into destination group's folder (if needed). Удаление этого параметра позволяет добавлять точки останова в файл, запускаемый MATLAB.

  • Чтобы добавить файл, нажмите кнопку Готово.

Создать схему

  • Выберите Продукт > Схема > Новая схема....

  • Оставить целевое значение равным None.

  • Задать для имени значение debug.

  • Нажмите ОК. Откроется диалоговое окно редактирования схемы.

  • Установите для параметра Run > Info > Executable значение Other.... В окне выбора файлов нажмите клавиши «Command» + «Shift» + «G», чтобы переключить меню «Перейти к папке:». Укажите полный путь к MATLAB_maci64 исполняемый в пакете приложений MATLAB. Пример полного пути: /Applications/MATLAB_R2016a.app/Contents/MacOS/MATLAB_maci64.

  • Выберите Дождаться запуска исполняемого файла.

  • Щелкните Закрыть (Close).

Добавить символьную точку останова

  • Выберите «Отладка» > «Точки останова» > «Создать символьную точку останова».

  • Задать для символа значение NSApplicationMain.

  • Чтобы добавить следующую команду отладчика, щелкните Добавить действие:

    process handle -p true -n false -s false SIGSEGV SIGBUS
  • Если панель редактора точек останова исчезнет, щелкните правой кнопкой мыши новую точку останова и выберите Изменить точку останова... чтобы вернуться к нему

  • Установите флажок Автоматически продолжать после оценки действий.

Установка точек останова в файле MEX

  • Выберите меню «Вид» > «Навигаторы» > «Показать Диспетчер структуры проекта».

  • Щелкнуть yprime.c в столбце навигатора.

  • Щелкните желоб рядом со строкой, в которой требуется приостановить выполнение, например, в первой строке в mexFunction().

  • Дополнительные сведения см. в документации по Xcode.

Запустите отладчик Xcode и запустите MATLAB

  • Чтобы запустить отладчик, в Xcode выберите Product > Run. Либо нажмите кнопку Выполнить со значком треугольника в левом верхнем углу окна рабочего пространства.

  • Дождитесь отображения Xcode сообщения Waiting for MATLAB to launch в верхней части окна Рабочая область (Workspace). Это действие может занять несколько секунд, особенно при первом использовании этой процедуры.

  • Запустите исполняемый файл MATLAB из приглашения Mac Terminal (см. раздел Запуск из окна терминала) или из Finder. Если MATLAB уже запущен, щелкните правой кнопкой мыши значок MATLAB в док-станции и выберите Открыть дополнительный экземпляр MATLAB.

  • Xcode отображает сообщение Running MATLAB: debug.

Запуск двоичного файла MEX в MATLAB

В этом новом экземпляре MATLAB измените текущую папку на папку с помощью yprime и запустите файл MEX.

workdir = fullfile('/','Users','Shared','work');
cd(workdir)
yprime(1,1:4)

Отладчик Xcode останавливается yprime.c в первой точке останова.

На этом этапе можно выполнить пошаговое изучение кода, проверить переменные и т. д., но в этом упражнении выберите «Продолжить» в меню «Отладка». Исполнение yprime отделка и отображение MATLAB:

ans =

    2.0000    8.9685    4.0000   -1.0947

Пока этот экземпляр MATLAB продолжает работать, можно выполнять файл MEX повторно, и Xcode останавливается в заданных точках останова.

Использование LLDB

LLDB - отладчик, доступный с Xcode в системах macOS. Дополнительные сведения об использовании отладчика см. в документации отладчика.

В этой процедуре >> указывает командную строку MATLAB и % представляет запрос Mac Terminal. Запрос отладчика: (lldb).

Отладка MEX без JVM

В этом примере выполняется отладка yprime Файл MEX без виртуальной машины Java ® (JVM™). Запуск MATLAB в этом режиме минимизирует использование памяти и улучшает начальную скорость запуска, но ограничивает функциональность. Например, нельзя использовать рабочий стол.

  1. Скомпилировать исходный файл MEX с помощью -g , который создает файл с включенными символами отладки. В приглашении «Терминал» введите:

    % mex -g yprime.c
  2. Запустите отладчик ldb с помощью matlab функция -D вариант:

    % matlab -Dlldb
    
  3. Запустите MATLAB с помощью -nojvm флаг запуска:

    (lldb) run -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 stop

    Если запуск MATLAB завершен, введите:

    >> quit
  9. По завершении работы с отладчиком введите:

    (lldb) q

    Вернитесь к запросу «Терминал».

Отладка MEX с JVM

Для отладки MEX-файла с помощью JVM, первый дескриптор SIGSEGV и SIGBUS технологические сигналы. Запустите MATLAB и остановитесь на первой инструкции.

  • По запросу Terminal скомпилируйте файл MEX и запустите отладчик lldb.

    % mex -g yprime.c
    % matlab -Dlldb
    
  • Запустите MATLAB.

    (lldb) process launch -s
  • Попросите процесс продолжить, когда появятся эти сигналы процесса.

    (lldb) process handle -p true -n false -s false SIGSEGV SIGBUS
    
  • Можно задать точки разрыва и выполнить другие команды отладчика.

Связанные темы