劳特巴赫宏观的懒惰评价 - 有可能吗?

时间:2018-04-26 13:14:23

标签: trace32 lauterbach

我正在编写某种“骨架”,用于使用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 locallocation stack的信息。

然而,将我的脚本更改为阅读&varToBeSet=\\some_app\some_module\some_func\status而不是&varToBeSet=status并没有多大帮助。在这种情况下,劳特巴赫抱怨no access to that symbol

有没有办法,我可以将宏的评估延迟到实际使用的某个点,而不是在定义它时进行评估?

1 个答案:

答案 0 :(得分:1)

使用引号:

&varToBeSet="\\some_app\some_module\some_func\status"