Как символическое выполнение определяет ошибку

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

Два вопроса по этому поводу:

  1. Если в коде должны быть какие-то утверждения-утверждения для работы символического исполнителя. Или, если он может работать без каких-либо утверждений, просто выяснить, есть ли ошибка в конкретном пути в коде.
  2. Как это выяснить ошибку (на высоком уровне, не обязательно точный алгоритм). Хотите знать, если это просто какое-то решение ограничений на каждом шаге или что-то еще происходит? Например, на первом изображении, как он знает, если a = 2 а также b = 0 что произойдет ошибка. И как он знал, чтобы даже проверить, не возникнет ли там ошибка.

Спасибо за помощь.




0 ответов

Другие вопросы по тегам