exponenta event banner

Идентификация вызова функции с ошибкой времени выполнения

В этом учебном пособии показано, как определить вызов функции, вызывающий ошибку во время выполнения в теле функции.

Если функция содержит два разных цвета в одной операции для двух разных вызовов, программа объединяет контексты вызова и отображает оранжевую проверку операции. Например, когда некоторые вызовы функции вызывают проверку на красный или оранжевый цвет при выполнении операции в теле функции, а другие вызовы вызывают проверку на зеленый цвет, в результатах проверки операция становится оранжевой.

Необходимо различать оранжевые проверки, возникающие из комбинации контекстов вызовов, поскольку оранжевая проверка может возникать из-за других причин. Используя опцию Контекст чувствительности, делайте это различие, сохраняя отдельные контексты вызовов для функции.

В этом учебном пособии функция вызывается дважды. Необходимо определить, какой вызов функции вызывает ошибку времени выполнения в теле функции.

  1. Выполните анализ этого кода и откройте результаты.

    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 по нулевой проверке на / операция.

  2. Укажите, что требуется сохранить информацию о контексте отдельного вызова для функции func.

    1. В конфигурации проекта выберите узел «Точность».

    2. Выбрать custom для контекста чувствительности.

    3. Щелкните, чтобы добавить новое поле. Войти func.

  3. Выполните проверку и откройте результаты.

    Оранжевое деление по нулевой проверке все еще появляется в теле func. Однако эта оранжевая проверка отмечается на панели Список результатов (Results List) как темно-оранжевая проверка и обозначается меткой. Вместо красной неокончательной проверки вызова при втором вызове для отображается пунктирная красная линия func.

  4. Установите оранжевый флажок.

    На панели Сведения о результате (Result Details) отображаются контексты вызовов для проверки. Можно увидеть, что один вызов вызывает красный чек на / и другой вызов производит зеленую проверку. Можно щелкнуть по каждому вызову, чтобы перейти к нему в исходном коде.

См. также

Связанные примеры

Подробнее