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

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

В этом примере показано, как отлажить yprime Файл MEX с использованием Xcode.

Копирование исходного файла MEX

The 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 папка в окне Finder в столбец навигатора в левой части окна рабочей области 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 в верхней части окна Рабочая область. Это действие может занять несколько секунд, особенно в первый раз, когда вы используете эту процедуру.

  • Запустите исполняемый файл MATLAB из приглашения Mac Terminal (см. Start from Terminal Window) или из Finder. Если MATLAB уже запущен, щелкните правой кнопкой значок MATLAB в Dock и выберите 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

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

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

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

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

  1. Скомпилируйте исходный файл MEX с -g опция, который создает файл с включенными символами отладки. В командной строке Terminal введите:

    % mex -g yprime.c
  2. Запустите отладчик lldb с помощью 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

    Вы вернетесь к приглашению Terminal.

Отладка 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
    
  • Можно задать точки пропуска и выполнить другие команды отладчика.

Похожие темы