Покрытие кода TLC для помощи отладке

tlcdebug Обзор выполнения учебного пособия

Objective: Научитесь использовать статистику покрытия TLC, чтобы помочь идентифицировать ошибки в коде TLC.

<reservedrangesplaceholder1> <reservedrangesplaceholder0> / toolbox/rtw/rtwdemos/tlctutorial/tlcdebug (открыто)

Это руководство учит вас, как определить, выполняется ли ваш код TLC должным образом. Здесь она использует ту же модель, что и для предыдущего руководства. Когда вы фокусируетесь на понимании потока управления при обработке файлов TLC, вам не нужно компилироваться и выполнять автономную модель, только чтобы посмотреть на код. Руководство выполняется следующим образом:

  1. Getting Started - Зачем и как анализировать покрытие TLC

  2. Open the Model and Generate Code - Чтение файла журнала покрытия

Начало

Панель Code Generation > Debug содержит Start TLC coverage when generating code опций. Его выбор приводит к появлению списка, в котором указывается, сколько раз каждая линия в исходном файле TLC выполнялась во время генерации кода. Объявление, name.log (где name - имя файла анализируемого TLC-файла), помещается в папку сборки.

Примечание

Файл журнала для каждого .tlc файл, активированный или включенный, генерируется в папке сборки. Особое внимание на timesN.log.

Откройте Модель и Сгенерируйте Код

  1. Скопируйте папку tlctutorial/tlcdebug/ в рабочую папку и cd к нему. Сделайте это, даже если вы уже скопировали его, чтобы убедиться, что у вас есть версия timesN.tlc У этого есть баг.

  2. В MATLAB® Командное окно, создайте файл MEX для S-функции.

    mex timesN.c

    Это позволяет избежать выбора версии, поставляемой с помощью Simulink® программное обеспечение.

  3. Откройте модель simple_log.

  4. На панели Code Generation диалогового окна Параметры конфигурации (Configuration Parameters) установите флажок Generate code only.

  5. На панели Code Generation > Debug диалогового окна Параметры конфигурации выберите Start TLC coverage when generating code. (Не выбирайте Start TLC debugger when generating code. Вызов отладчика не нужен.) Нажмите Apply.

  6. Нажмите Ctrl+B. Обычные сообщения появляются в Командном Окне MATLAB, и папке сборки (simple_log_grt_rtw) создается в рабочей папке.

  7. Введите папку сборки. Найдите файл timesN.log, и скопировать его в рабочую папку, переименовав в timesN_ilp.log чтобы предотвратить перезапись.

  8. Откройте файл журнала 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 может облегчить процесс обнаружения дефектного кода.

Похожие темы