tlcdebug Обзор выполнения учебного пособияObjective: Научитесь использовать статистику покрытия TLC, чтобы помочь идентифицировать ошибки в коде TLC.
<reservedrangesplaceholder1> <reservedrangesplaceholder0>
(открыто)/ toolbox/rtw/rtwdemos/tlctutorial/tlcdebug
Это руководство учит вас, как определить, выполняется ли ваш код TLC должным образом. Здесь она использует ту же модель, что и для предыдущего руководства. Когда вы фокусируетесь на понимании потока управления при обработке файлов TLC, вам не нужно компилироваться и выполнять автономную модель, только чтобы посмотреть на код. Руководство выполняется следующим образом:
Getting Started - Зачем и как анализировать покрытие TLC
Open the Model and Generate Code - Чтение файла журнала покрытия
Панель Code Generation > Debug содержит Start TLC coverage when generating code опций. Его выбор приводит к появлению списка, в котором указывается, сколько раз каждая линия в исходном файле TLC выполнялась во время генерации кода. Объявление, (где name.log - имя файла анализируемого TLC-файла), помещается в папку сборки.name
Примечание
Файл журнала для каждого .tlc файл, активированный или включенный, генерируется в папке сборки. Особое внимание на timesN.log.
Скопируйте папку tlctutorial/tlcdebug/ в рабочую папку и cd к нему. Сделайте это, даже если вы уже скопировали его, чтобы убедиться, что у вас есть версия timesN.tlc У этого есть баг.
В MATLAB® Командное окно, создайте файл MEX для S-функции.
mex timesN.c
Это позволяет избежать выбора версии, поставляемой с помощью Simulink® программное обеспечение.
Откройте модель simple_log.
На панели Code Generation диалогового окна Параметры конфигурации (Configuration Parameters) установите флажок Generate code only.
На панели Code Generation > Debug диалогового окна Параметры конфигурации выберите Start TLC coverage when generating code. (Не выбирайте Start TLC debugger when generating code. Вызов отладчика не нужен.) Нажмите Apply.
Нажмите Ctrl+B. Обычные сообщения появляются в Командном Окне MATLAB, и папке сборки (simple_log_grt_rtw) создается в рабочей папке.
Введите папку сборки. Найдите файл timesN.log, и скопировать его в рабочую папку, переименовав в timesN_ilp.log чтобы предотвратить перезапись.
Откройте файл журнала timesN_ilp.log в вашем редакторе. Выглядит почти как timesN.tlc, за исключением числа, за которым следует двоеточие в начале каждой линии. Это число представляет количество раз, когда TLC выполнял линию при генерации кода. Код для Outputs() должен выглядеть следующим образом:
0: %% Function: Outputs ========================================================
0: %%
1: %function Outputs(block, system) Output
1: %assign gain =SFcnParamSettings.myGain
1: /* %<Type> Block: %<Name> */
0: %%
1: /* Multiply input by %<gain> */
1: %assign rollVars = ["U", "Y"]
1: %roll idx = RollRegions, lcv = RollThreshold, block, "Roller", rollVars
1: %<LibBlockOutputSignal(0, "", lcv, idx)> = \
1: %<LibBlockInputSignal(0, "", lcv, idx)> * 1;
0: %endroll
1:
0: %endfunctionЗаметьте, что комментарии не были выполнены. Были достигнуты операторы TLC, что означает, что они выводят сгенерированный код C столько же раз, сколько число, префиксированное к этим линиям.
Изменение опций генерации кода может вызвать скрытую проблему в сгенерированном исходном коде. Систематическое изменение опций и наблюдение полученных различий в покрытии TLC может облегчить процесс обнаружения дефектного кода.