Actions
Трассировка обхода сценарного КА » History » Revision 3
« Previous |
Revision 3/5
(diff)
| Next »
Sergey Groshev, 06/25/2010 02:55 PM
Трассировка обхода сценарного КА¶
Что есть на данный момент
- Реализована трассировка для старых UTT.
- Состояния, начало и конец переходов, запуск и завершение сценариев трассирует обходчик.
- Значения итерационных переменных трассируются сгенерированным кодом по мере их вычисления. При этом в трассе возможны незавершённые переходы, у которых оттрассированы не все описанные в коде сценарного метода итерационные переменные (вообще говоря, они не являются переходами).
- Ранее вызовы дуг всегда выполняли next + call; затем для нужд проекта спрямителя были реализованы вызовы call, а для нужд проекта netfsm - вызовы next. Старые обходчики (dfsm, ndfsm) используют только вызовы старого образца.
- stable переменные хранятся в одной структуре с итерационными, то есть, вообще говоря, привязаны не к состоянию, а, например, к сохранённой в обходчике дуге.
Что нужно
- Реализовать трассировку обхода сценарного КА средствами Aspectrace (в аспекте "fsm") совместно с или вместо старой трассировки.
- Реализовать библиотечный метод, получающий указатели на
ScenarioFunctionDesc
и структуру данных, содержащую значения итерационных переменных, и осуществляющий трассировку (UTT & Aspectrace) всех значений итерационных переменных. При этом в структуре ScenarioFunctionDesc
должно добавиться поле, содержащее ссылку на соответствующий StructTypeDesc
.
- Вся трассировка должна выполняться кодом обходчика. Для устранения из трасс незавершённых переходов следует отказаться в обходчике от вызовов старого образца, а делать всегда отдельно next и отдельно call. При вызове next обычная трассировка не производится (но может производиться какая-то другая). При вызове call трассируется сообщение
transition_start
, затем трассируются значения итерационных переменных, затем выполняется собственно вызов, затем трассируется сообщение transition_end
.
- Пересмотреть концепцию и реализацию
stable
переменных.
ScenarioFunctionDesc
и структуру данных, содержащую значения итерационных переменных, и осуществляющий трассировку (UTT & Aspectrace) всех значений итерационных переменных. При этом в структуре ScenarioFunctionDesc
должно добавиться поле, содержащее ссылку на соответствующий StructTypeDesc
.transition_start
, затем трассируются значения итерационных переменных, затем выполняется собственно вызов, затем трассируется сообщение transition_end
.stable
переменных.Updated by Sergey Groshev over 14 years ago · 5 revisions