Ленивая оценка макроса Лаутербаха - возможно ли это?

В настоящее время я пишу своего рода "скелет" для тестов, которые будут выполняться с использованием сценариев Лаутербаха.

В этом скелете я хочу иметь часть, в которой должны быть выполнены все определения, специфичные для теста, например, функции для установки разрывов, переменные, которые должны быть изменены, и т. Д. Эта часть должна быть в верхней части файла сценария, чтобы другие пользователи могли это сделать. не нужно проходить через весь файл скрипта, меняя значения тут и там.

Некоторые из переменных, которые будут использоваться, определены локально в C-коде для тестирования. Таким образом, они становятся доступными для скрипта Lauterbach только после того, как область действия этой функции введена, что находится глубоко в коде скелетного скрипта.

Есть ли способ определить макрос для этих переменных непосредственно перед вводом области?

Давайте приведем пример структуры:

LOCAL &funcToTest      // the function we want to test
LOCAL &varToBeSet      // a variable within the function we want to alter
LOCAL &valueToBeSet    // the value we want to set &varToBeSet to 
... // some more definitions here
&funcToTest=someFunc
&varToBeSet=status    
&valueToBeSet=1      
... // some test code following here that sets up log files, screen areas
... // start the program to be tested etc.
IF (Register(PC)==ADDRESS.OFFSET(&funcToTest))
(
  // OK - we've hit the breakpoint inside the function to test
  ... // Run to some point where we can set the local variable
  Var.Set &varToBeSet=&valueToBeSet
  ... // Go on with the program and see what happens - this will be logged
)

Проблема в том, что Лаутербах жалуется на линию &varToBeSet=statusс Symbol not found in this context - что правильно, потому что это локальная переменная.

Просматривая символы через View->Symbols->SymbolsTreeView (или давая команду Symbol.List.Tree) Я могу найти символ (в данном конкретном случае находится под узлом some_module.some_function.status). Нажав на нее, вы получите информацию в строке состояния статуса TRACE32. \\some_app\some_module\some_func\status с type (auto STATUS), scope local, location stack,

Изменение моего сценария для чтения &varToBeSet=\\some_app\some_module\some_func\status вместо &varToBeSet=statusОднако не сильно помогает. В этом случае Лаутербах жалуется с no access to that symbol,

Есть ли способ, которым я могу отложить оценку макроса до некоторой точки, где он фактически используется, вместо того, чтобы оценивать его при его определении?

1 ответ

Используйте цитаты:

&varToBeSet="\\some_app\some_module\some_func\status"
Другие вопросы по тегам