В этом учебном пособии показано, как определить вызов функции, вызывающий ошибку во время выполнения в теле функции.
Если функция содержит два разных цвета в одной операции для двух разных вызовов, программа объединяет контексты вызова и отображает оранжевую проверку операции. Например, когда некоторые вызовы функции вызывают проверку на красный или оранжевый цвет при выполнении операции в теле функции, а другие вызовы вызывают проверку на зеленый цвет, в результатах проверки операция становится оранжевой.
Необходимо различать оранжевые проверки, возникающие из комбинации контекстов вызовов, поскольку оранжевая проверка может возникать из-за других причин. Используя опцию Контекст чувствительности, делайте это различие, сохраняя отдельные контексты вызовов для функции.
В этом учебном пособии функция вызывается дважды. Необходимо определить, какой вызов функции вызывает ошибку времени выполнения в теле функции.
Выполните анализ этого кода и откройте результаты.
void func(int arg) {
int loc_var = 0;
loc_var = 1/arg;
}
void main(void) {
int num = 1;
func(num + 10);
func(num - 1);
}Во втором вызове для отображается красная проверка вызовов без завершения func. В теле func, есть оранжевый Division по нулевой проверке на / операция.
Укажите, что требуется сохранить информацию о контексте отдельного вызова для функции func.
В конфигурации проекта выберите узел «Точность».
Выбрать custom для контекста чувствительности.
Щелкните
, чтобы добавить новое поле. Войти func.
Выполните проверку и откройте результаты.
Оранжевое деление по нулевой проверке все еще появляется в теле func. Однако эта оранжевая проверка отмечается на панели Список результатов (Results List) как темно-оранжевая проверка и обозначается
меткой. Вместо красной неокончательной проверки вызова при втором вызове для отображается пунктирная красная линия func.
Установите оранжевый флажок.
На панели Сведения о результате (Result Details) отображаются контексты вызовов для проверки. Можно увидеть, что один вызов вызывает красный чек на / и другой вызов производит зеленую проверку. Можно щелкнуть по каждому вызову, чтобы перейти к нему в исходном коде.
