Создайте информационный объект отчета для процесса генерации кода, который перестал работать. Вы затем определяете местоположение части кода MATLAB, который вызвал сообщение об ошибке.
Задайте функцию MATLAB foo
:
Сгенерируйте статическую библиотеку C для foo
. Задайте вход как скаляр строки. Экспорт генерация кода сообщает информацию переменной info
в вашем основном рабочем пространстве MATLAB.
Генерация кода перестала работать, потому что скаляр строки не является допустимым входом для функции MATLAB svd
. Генератор кода создает информационный объект отчета info
в основном рабочем пространстве MATLAB.
Свойство info.Messages
является двумерным массивом, содержащим описания двух сообщений генерации кода. Осмотрите описание первого сообщения.
Message with properties:
Identifier: 'Coder:toolbox:unsupportedClass'
Type: 'Error'
Text: 'Function 'svd' is not defined for values of class 'string'.'
File: [1×1 coder.CodeFile]
StartIndex: 26
EndIndex: 33
Чтобы вручную осмотреть сегмент, код MATLAB, который вызвал это сообщение об ошибке, сначала отобразите текст файла, сопоставленного с этим сообщением об ошибке.
'function b = foo(a)
b = svd(a,0);
end
'
Используйте getLineColumn
, чтобы определить местоположение начала и конца части кода, который вызвал сообщение об ошибке. Вывод startLoc
содержит строку и индексы столбца первого символа сегмента кода. Вывод endLoc
содержит строку и индексы столбца последнего знака сегмента кода.
startLoc =
struct with fields:
Line: 2
Column: 5
endLoc =
struct with fields:
Line: 2
Column: 12
Эти местоположения соответствуют началу и концу вызова функции
'svd(a,0)'
в тексте
foo.m
.