我正在编写某种“骨架”,用于使用Lauterbach脚本进行测试。
在这个骨架中,我希望有一个部分,其中所有测试特定的定义都应该完成,例如设置中断的函数,要更改的变量等。这部分应该在脚本文件的顶部附近,这样其他用户就不必通过完整的脚本文件,在这里和那里更改值。
将要使用的一些变量在要测试的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
。
有没有办法,我可以将宏的评估延迟到实际使用的某个点,而不是在定义它时进行评估?
答案 0 :(得分:1)
使用引号:
&varToBeSet="\\some_app\some_module\some_func\status"