Отладка файлов MEX на языке ФОРТРАН

Примечания по отладке

Примеры показывают, как отлаживать timestwo.F, найденный в вашем matlabroot/extern/examples/refbook папка.

Двоичные файлы MEX, созданные с помощью -g опция не выполняется на других компьютерах, поскольку они полагаются на файлы, не распространяемые с MATLAB® программное обеспечение. Для получения дополнительной информации об изоляции проблем с файлами MEX смотрите Поиск и устранение проблем с Файлом MEX на C приложениями.

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

Для файлов MEX, скомпилированных с любой версией Intel® Компилятор Visual Фортран, можно использовать инструменты отладки, найденные в вашей версии Microsoft® Визуальная студия®.

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

Поддерживаемый MATLAB компилятор Fortran g95 имеет -g опция для создания двоичных файлов MEX с отладочной информацией. Такие файлы можно использовать с gdb, GNU® Отладчик. В этом разделе описывается использование GDB.

GNU Debugger GDB

В этом примере командная строка MATLAB >> показан перед командами MATLAB, и linux> представляет Linux® подсказка; система может отобразить другой запрос. Приглашение отладчика <gdb>.

  1. Чтобы скомпилировать исходный файл MEX, введите:

    linux> mex -g timestwo.F
  2. В приглашении Linux запустите отладчик gdb с помощью matlab -D опция:

    linux> matlab -Dgdb
    
  3. Запуск MATLAB без Java® Виртуальная машина (JVM™) при помощи -nojvm флаг запуска:

    <gdb> run -nojvm
  4. В MATLAB включите отладку с dbmex и запустите свой двоичный файл MEX:

    >> dbmex on
    >> y = timestwo(4)
  5. Вы готовы начать отладку.

    Часто удобно устанавливать точку останова в mexFunction поэтому вы остановитесь в начале стандартной программы шлюза.

    Примечание

    Компилятор может изменить имя функции. Для примера это может добавить подчеркивание. Чтобы определить, как этот символ появляется в данном файле MEX, используйте команду Linux nm. Для примера:

    linux> nm timestwo.mexa64 | grep -i mexfunction

    Операционная система реагирует чем-то вроде:

    0000091c T mexfunction_

    Использовать mexFunction в операторе точки останова. Обязательно используйте правильный случай.

    <gdb> break mexfunction_
    <gdb> continue
  6. После попадания в одну из точек останова можно в полной мере использовать любые команды, предоставляемые отладчиком для исследования переменных, отображения памяти или просмотра регистров.

    Для перехода от точки останова введите continue:

    <gdb> continue
  7. После остановки в последней точке останова введите:

    <gdb> continue

    timestwo концы и отображения MATLAB:

    y =
    
         8
  8. Из подсказки MATLAB можно вернуть управление отладчику, набрав:

    >> dbmex stop

    Или, если вы завершили выполнение MATLAB, введите:

    >> quit
  9. Когда вы закончите с отладчиком, введите:

    <gdb> quit

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

Для получения дополнительной информации об использовании отладчика см. документацию.

Похожие темы