Примеры показывают, как отлаживать timestwo.F
, найденный в вашем matlabroot
/extern/examples/refbook
папка.
Двоичные файлы MEX, созданные с помощью -g
опция не выполняется на других компьютерах, поскольку они полагаются на файлы, не распространяемые с MATLAB® программное обеспечение. Для получения дополнительной информации об изоляции проблем с файлами MEX смотрите Поиск и устранение проблем с Файлом MEX на C приложениями.
Для файлов MEX, скомпилированных с любой версией Intel® Компилятор Visual Фортран, можно использовать инструменты отладки, найденные в вашей версии Microsoft® Визуальная студия®.
Поддерживаемый MATLAB компилятор Fortran g95 имеет -g
опция для создания двоичных файлов MEX с отладочной информацией. Такие файлы можно использовать с gdb, GNU® Отладчик. В этом разделе описывается использование GDB.
В этом примере командная строка MATLAB >>
показан перед командами MATLAB, и linux>
представляет Linux® подсказка; система может отобразить другой запрос. Приглашение отладчика <gdb>
.
Чтобы скомпилировать исходный файл MEX, введите:
linux> mex -g timestwo.F
В приглашении Linux запустите отладчик gdb с помощью matlab
-D
опция:
linux> matlab -Dgdb
Запуск MATLAB без Java® Виртуальная машина (JVM™) при помощи -nojvm
флаг запуска:
<gdb> run -nojvm
В MATLAB включите отладку с dbmex
и запустите свой двоичный файл MEX:
>> dbmex on >> y = timestwo(4)
Вы готовы начать отладку.
Часто удобно устанавливать точку останова в mexFunction
поэтому вы остановитесь в начале стандартной программы шлюза.
Примечание
Компилятор может изменить имя функции. Для примера это может добавить подчеркивание. Чтобы определить, как этот символ появляется в данном файле MEX, используйте команду Linux nm
. Для примера:
linux> nm timestwo.mexa64
| grep -i mexfunction
Операционная система реагирует чем-то вроде:
0000091c T mexfunction_
Использовать mexFunction
в операторе точки останова. Обязательно используйте правильный случай.
<gdb> break mexfunction_ <gdb> continue
После попадания в одну из точек останова можно в полной мере использовать любые команды, предоставляемые отладчиком для исследования переменных, отображения памяти или просмотра регистров.
Для перехода от точки останова введите continue
:
<gdb> continue
После остановки в последней точке останова введите:
<gdb> continue
timestwo
концы и отображения MATLAB:
y = 8
Из подсказки MATLAB можно вернуть управление отладчику, набрав:
>> dbmex stop
Или, если вы завершили выполнение MATLAB, введите:
>> quit
Когда вы закончите с отладчиком, введите:
<gdb> quit
Вы вернетесь к приглашению Linux.
Для получения дополнительной информации об использовании отладчика см. документацию.