Эта тема фокусируется на Polyspace® настольный пользовательский интерфейс. Чтобы узнать об эквивалентной панели в Polyspace доступ к веб-интерфейсу, смотрите Глобальные переменные в Polyspace доступ к веб-интерфейсу.
Панель Variable Access отображает глобальные переменные (и локальные статические переменные). Для каждой глобальной переменной панель перечисляет все функции и задачи, выполняющие доступ для чтения-записи на переменных, наряду с их атрибутами, такими как значения, доступы для чтения-записи и совместно использованное использование.
Чтобы открыть эту панель, в пользовательском интерфейсе рабочего стола Polyspace, нажимают кнопку на панели Result Details.
Для каждой переменной и каждого доступа для чтения-записи, панель Variable Access содержит соответствующие атрибуты. Для переменных различные атрибуты перечислены в этой таблице.
Атрибут | Описание |
---|---|
Variables | Имя переменной |
File | Исходный файл, содержащий объявление переменной |
Values | Значение (или область значений значений) переменной Этот столбец пуст для переменных указателя. |
# Reads | Число раз переменная читается |
# Writes | Число раз переменная записано |
Written by task | Имя задач, пишущих на переменной |
Read by task | Имя переменной чтения задач |
Protection | Защищена ли совместно используемая переменная от параллельного доступа (Заполненный только, когда столбец Usage имеет запись, Shared), Возможные записи в этом столбце:
Для получения дополнительной информации об этих записях смотрите Многозадачность. |
Usage | Shared , если переменная совместно используется задачами; в противном случае, пробел |
Line | Номер строки объявления переменной |
Col | Номер столбца (количество символов с начала линии) объявления переменной |
Data Type | Тип данных переменной (типы данных C/C++ или структуры/классы) |
Дважды кликните имя переменной, чтобы просмотреть операции доступа для чтения-записи на переменной. Символы в виде стрелки и в панели Variable Access указывают на функции, выполняющие доступ для чтения и доступ для записи соответственно на глобальной переменной. Аналогично, задачи, выполняющие доступ для чтения и доступ для записи, обозначаются символами и соответственно. Для получения дополнительной информации о задачах смотрите Tasks (-entry-points)
.
Для операций доступа на переменных различные атрибуты, описанные в панели, перечислены в этой таблице.
Атрибут | Описание |
---|---|
Variables | Имена функции (или задача) выполняющий доступ для чтения-записи на переменной |
Values | Значение или область значений значений переменной в функции или задаче, выполняющей доступ для чтения-записи Этот столбец пуст для переменных указателя. |
Written by task | Только для задач: Имя задачи, выполняющей доступ для записи на переменной |
Read by task | Только для задач: Имя задачи, выполняющей доступ для чтения на переменной |
Line | Номер строки, где функция или переменная доступов к задаче |
Col | Номер столбца, где функция или переменная доступов к задаче |
File | Исходный файл, содержащий операцию доступа на переменной Если этот столбец содержит имя |
Например, рассмотрите глобальную переменную, SHR2
:
Функция, Tserver
, в файле, tasks1.c
, выполняет две операции записи на SHR2
. Это обозначается в панели Variable Access двумя экземплярами Tserver()
под переменной, SHR2
, отмеченный. Аналогично, эти два доступа для записи задачами, server1
и server2
, также перечислены под SHR2
и отмеченный.
Цветовая схема для переменных в панели Variable Access:
Черный: глобальная переменная.
Оранжевый: глобальная переменная, совместно использованная задачами без защиты от параллельного доступа.
Зеленый: глобальная переменная, совместно использованная задачами и защищенная от параллельного доступа.
Серый: глобальная переменная, объявленная, но не используемый в достижимом коде.
Если задача выполняет определенные операции на глобальной переменной, но операции находятся в недостижимом коде, задачи окрашены в серый.
Информация о глобальных переменных и операциях доступа для чтения-записи, полученных из панели Variable Access, называется словарем данных.
Можно также выполнить следующие действия от панели Variable Access.
Просмотрите операции доступа на глобальной переменной в графическом формате с помощью панели Variable Access. Выберите глобальную переменную и нажатие кнопки.
Вот пример графика доступа:
Для структурированных переменных просмотрите отдельные поля от панели Variable Access. Например, для структуры, SHR4
, панель отображает поля, SHR4.A
и SHR4.B
, и функции, выполняющие доступ для чтения-записи на них.
Можно просмотреть операции на переменных без имени. Например, рассмотрите эту строку кода, которая объявляет объединение без имени с переменной в абсолютном адресе:
union {char, c; int i; } @0x1234;
iar
компилятор, переменная без имени в 0x1234
появляется в панели Variable Access с именем, которое запускается с pstanonymous.Просмотрите операции доступа на глобальных переменных, выполняемых косвенно через глобальные указатели.
Если доступ для чтения-записи на переменной выполняется через глобальные указатели, то доступ отмечен (чтением) или (записью). Доступ через локальные указатели показывают как любой другой прямой доступ.
Например, в файле, initialisations.c
, переменная, arr
, объявляется как указатель на массив, tab
.
В файле main.c
, tab
читается в функции, interpolation()
, через глобальную переменную указателя, arr
. Эту операцию показывает в панели Variable Access значок.
Во время динамического выделения памяти память выделяется непосредственно указателю. Поскольку столбец Values заполняется только для неуказательных переменных, вы не можете использовать этот столбец, чтобы найти значения сохраненными в динамически выделенной памяти. Используйте панель Variable Access, чтобы перейти к, разыменовывает указателя на панели Source. Используйте подсказки на этой панели, чтобы найти, что значения после каждого указателя разыменовывают.
Настройте панель Variable Access, чтобы показать только совместно используемые переменные. На панели инструментов панели Variable Access нажмите кнопку Non-Shared Variables, чтобы показать или скрыть неразделяемые переменные.
Скройте доступ для чтения-записи, происходящий в недостижимом коде путем нажатия кнопки фильтра.
Вы не видите операцию обращения на глобальной переменной или объекте (на C++) как операция чтения-записи в панели Variable Access. Например, рассмотрите следующий Код С++:
class C0 { public: C0() {} int get_flag() { volatile int rd; return rd; } ~C0() {} private: int a; /* Never read/written */ }; C0 c0; /* c0 is unreachable */ int main() { if (c0.get_flag()) /* Uses address of the method */ { int *ptr = take_addr_of_x(); return 1; } else return 0; }
Вы не видите вызова метода c0.get_flag()
в панели Variable Access, потому что вызов является операцией обращения на методе, принадлежащем объекту c0
.