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

Этот пример показывает, как идентифицировать вызов функции, который вызывает ошибку времени выполнения в теле функции.

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

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

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

  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);
    }

    Красная проверка Non-terminating call появляется на втором вызове func. В теле func, существует оранжевый Division by zero, проверяют / операция.

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

    1. В вашей настройке проекта выберите узел Precision.

    2. Выберите custom для Sensitivity context.

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

  3. Запустите верификацию и откройте результаты.

    Оранжевая проверка Division by zero все еще появляется в теле func. Однако эта оранжевая проверка отмечена на панели Results List как темно-оранжевая проверка и обозначается меткой. Вместо красной проверки Non-terminating call, пунктирного, красная линия появляется на втором вызове func.

  4. Выберите оранжевую проверку.

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

Смотрите также

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

Больше о