Примеры показывают, как отлаживать timestwo.F, найдено в вашем matlabroot/extern/examples/refbook папка.
Двоичные MEX-файлы, созданные с помощью -g не выполнять на других компьютерах, так как они используют файлы, не распространяемые с помощью программного обеспечения MATLAB ®. Дополнительные сведения об изоляции проблем с файлами MEX см. в разделе Устранение неполадок в файловых приложениях C MEX.
Для файлов MEX, скомпилированных с любой версией компилятора Intel ® Visual Fortran, можно использовать средства отладки, содержащиеся в вашей версии Microsoft ® Visual Studio ®.
Поддерживаемый 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.
Дополнительные сведения об использовании отладчика см. в документации отладчика.