如何在TestStand中获取调用者文件名

更新 Jul 17, 2023

环境

软件

  • TestStand

开发者可以暂停执行,然后在TestStand开发环境的Call Stack面板中查看调用栈。但是,如果您使用自定义用户界面运行序列,您将无法看到Call Stack窗格。使用此技术,可以将完整的调用堆栈输出到文本文件或用户界面以进行故障排除。

要递归获取调用者文件名,您需要完成以下步骤。
  1. 启动NI TestStand
  2. 右键单击Sequences窗格,选择Insert Sequence,插入 2 个序列。
  3. 将它们分别重命名为Sequence_1Sequence_2
03.PNG
  1. 转到MainSequence并插入一个Sequence Call步骤。
    • 将其重命名为Call Sequence_1
    • 勾选Use Current File
    • 从 Sequence 下拉列表中选择Sequence_1
04.PNG
  1. 转到Sequence_1并插入一个Sequence Call步骤。
    • 将其重命名为Call Sequence_2
    • 勾选Use Current File
    • 从 Sequence下拉列表中选择Sequence_2
05.PNG
  1. 转到Sequence_2
    • 添加一个字符串局部变量CallStack
    • 添加一个数值局部变量i
    • 添加一个数值局部变量
06.PNG
  1. 在 Sequence_2 中添加Statement步骤
    • Expression文本框中输入Locals.CallStack = ""
07.PNG
  1. 在 Sequence_2 中添加For步骤
    • Number of Loops中输入RunState.Thread.CallStackSize
    • Loop Variable中输入Locals.i
08.PNG
  1. ForEnd步骤之间插入一个Statement步骤
    • Expression文本框中输入Locals.CallStack+= RunState.Thread.GetSequenceContext(Locals.i, Locals.out).CallStackName + "\n"
09.PNG
  1. 在 Sequence_2 的End步骤后添加Message Popup步骤
    • Text and Buttons选项卡上的Message Expression文本框中键入"Call Stack:\n" + Locals.CallStack
10.PNG
  1. 在 NI TestStand 中, 选择Execute » Single Pass运行序列。
 

Message Popup 窗口显示执行线程的完整调用堆栈,如下所示。此外,您可以将输出字符串Locals.CallStack保存到日志文件中以便进一步进行故障排除。
12.PNG