在访问变量Polyspace桌面用户界面
着重于Polyspace这个主题®桌面用户界面。学习中的等效窗格Polyspace访问web界面,看到的全局变量在Polyspace访问Web界面。
的变量访问窗格显示全局变量(局部静态变量)。对于每一个全局变量,窗格中列出了所有功能和任务执行读/写访问的变量,以及它们的属性,如价值观、读/写访问和共享使用。
打开此窗格,在Polyspace桌面用户界面,选择按钮结果细节窗格。
对于每个变量和每个读/写访问,变量访问窗格包含相关的属性。的变量,这表中列出了各种属性。
属性 | 描述 |
---|---|
变量 | 变量的名称 |
文件 | 源文件包含变量声明 |
值 | 值(或范围的值)的变量 这个列是空的指针变量。 |
#读 | 多次读取的变量 |
#写道 | 变量的次数 |
写的任务 | 任务名称写在变量中 |
阅读任务 | 阅读任务变量的名称 |
保护 | 是否受并发访问共享变量 (只有当了使用列条目,共享) 在本专栏中可能的条目有:
这些条目的更多细节,请参阅多任务处理。 |
使用 | 共享 如果变量之间共享任务;否则,空白的 |
行 | 变量声明的行号 |
上校 | 列号(从行开始的字符数)的变量声明 |
数据类型 | 数据类型的变量(C / c++数据类型或结构/类) |
双击一个变量名来查看读/写操作变量的访问。箭头符号和在变量访问面板显示功能分别进行读和写访问的全局变量。同样,任务执行读和写访问的符号表示和分别。在任务进行进一步的信息,请参阅任务(入口点)
。
访问操作的变量,描述的各种属性窗格中列出此表。
属性 | 描述 |
---|---|
变量 | 函数的名称(或任务)执行读/写访问的变量 |
值 | 变量的值或范围的值函数或任务执行读/写访问 这个列是空的指针变量。 |
写的任务 | 只有在任务:任务执行写访问变量的名字 |
阅读任务 | 只有在任务:任务执行读访问变量的名称 |
行 | 行号,功能或任务访问变量 |
上校 | 列号,功能或任务访问变量 |
文件 | 源文件包含访问操作变量 如果这列名称 |
例如,考虑全局变量,SHR2
:
这个函数,Tserver
在文件中,tasks1.c
执行两个写操作SHR2
。这是表示的变量访问面板的两个实例Tserver ()
根据变量,SHR2
,。同样,这两个写访问的任务,server1
和server2
也列在SHR2
和标记。
变量的配色方案变量访问面板是:
黑色:全局变量。
橙色:全局变量、共享任务之间没有防止并发访问。
格林:全局变量,之间共享任务和防止并发访问。
灰色:全局变量,但不是用于访问代码。
如果一个任务执行某些操作在一个全局变量,但不可到达的操作代码,是灰色的任务。
全局变量的信息获得和读/写访问操作变量访问窗格中被称为“数据字典”。
您还可以执行以下行动的变量访问窗格。
视图访问图
查看访问操作在图形格式使用一个全局变量变量访问窗格。选择全局变量并单击。
这里是一个访问图的一个例子:
视图结构变量
对结构性变量,视图的单个字段变量访问窗格。例如,对于结构,SHR4
窗格中显示的字段,SHR4.A
和SHR4.B
,函数执行读/写访问。
对匿名视图操作变量
您可以查看匿名的操作变量。例如,考虑这行代码声明了一个不知名的联盟与变量在一个绝对地址:
联盟{char, c;int我;}@0x1234;
iar
编译器,不愿透露姓名的变量0 x1234
出现在变量访问面板与这个名字开始pstanonymous。
通过视图访问全球指针
对全局变量视图访问操作进行间接通过全球指针。
如果一个读/写访问一个变量通过全球执行指针,然后访问了(读)或(写)。通过指针访问是像任何其他直接访问。
例如,在这个文件中,initialisations.c
的变量,加勒比海盗
被声明为指针,数组,选项卡
。
在文件中c
,选项卡
阅读的功能,插值()
通过全球指针变量,加勒比海盗
。该操作所示变量访问面板的图标。
在动态内存分配,直接向一个指针分配内存。因为值只列填充等变量,不能使用本专栏找到动态分配的内存中存储的值。使用变量访问窗格中导航到取消引用指针的源窗格。使用工具提示在这个窗格中找到以下每个指针的值。
显示或隐藏调用者和街道
自定义变量访问窗格只显示共享变量。在变量访问面板工具栏,单击按钮非共享变量显示或隐藏非共享变量。
显示或隐藏在代码的访问
隐藏的读/写访问发生在遥不可及的代码通过单击过滤器按钮。
其他功能
你不能看到一个寻址操作在一个全局变量或对象(c++)的读/写操作变量访问窗格。例如,考虑以下c++代码:
类C0{公众:C0 () {} int get_flag () {int rd波动;返回路;}~ C0(){}私人:int;/ *从来不读/写* /};C0 C0;/ * c0是遥不可及的* / int main(){如果(c0.get_flag()) / *使用地址的方法* / {int * ptr = take_addr_of_x ();返回1;}其他返回0;}
你不看到方法调用c0.get_flag ()
在变量访问面板,因为电话是一个寻址操作方法属于对象c0
。