exponenta event banner

Отладка файлов Fortran MEX

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

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

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

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

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

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

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

GNU отладчик 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.

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

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