Примеры показывают, как отладить timestwo.F
, найденный в вашей папке matlabroot
/extern/examples/refbook
.
Бинарные файлы MEX, созданные с опцией -g
, не выполняются на других компьютерах, потому что они полагаются на файлы, которые не распределяются с MATLAB. Для получения дополнительной информации об изоляции проблем с файлами MEX смотрите, Поиск и устранение проблем с файлами MEX.
Для файлов MEX, скомпилированных с любой версией компилятора Intel® Visual Fortran, можно использовать средства отладки, найденные в версии Microsoft® Visual Studio®. Отошлите к “Созданию Отладку темы” файлов MEX Языка C/C++ на Платформах Microsoft Windows для получения инструкций относительно использования этого отладчика.
MATLAB поддержал компилятор Фортрана g95, имеет опцию -g
для создания бинарных файлов MEX с отладочной информацией. Такие файлы могут использоваться с gdb, GNU® Debugger. В этом разделе описываются использование gdb.
В этом примере подсказка команды MATLAB >>
показывают перед командами MATLAB, и linux>
представляет подсказку Linux®; ваша система может показать различную подсказку. Подсказкой отладчика является <gdb>
.
Чтобы скомпилировать исходный файл MEX, введите:
linux> mex -g timestwo.F
В подсказке Linux запустите gdb отладчик с помощью
опции -D
matlab
:
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.
Обратитесь к документации, которой предоставляют ваш отладчик для получения дополнительной информации о его использовании.