2013-07-29 6 views
2

이제 기호 실행 (SE) 및 도달 가능성 분석 (RA)에 대해 혼란스러워합니다. 아시다시피 SE는 심볼을 사용하여 분기 조건을 사용하여 각 분기에 도달하는 코드를 실행합니다. RA는 각 지점의 연결 가능성을 찾는 데 사용할 수 있습니다. 맞습니까? RA가 사용될 때, 우리는 각 가지에 대한 분기 조건을 추출 할 수 있습니다. 그렇다면 그들 사이의 차이점은 무엇입니까? 그들은 신속 할 수 있습니까? 그것들은 모두 정적 분석입니까?도달 가능성 및 기호 실행

감사합니다. 이브

답변

-1

기호 실행은 정적이 아니며 프로그램을 상징적으로 실행합니다. 성능과 관련하여 klee와 같은 기호식 실행 도구는 분기가 발생할 때 분기 조건을 해결하지 않습니다. 값싼 분석을 사용하여 도달 가능성이 있는지 여부를 확인합니다. 프로그램 종료시 테스트 케이스를 생성하려고합니다. 시작 지점 (주 기능)에서 종료까지 수집 된 제한 조건이 충족 될 수있는 경우 테스트 사례가 제공되고 그렇지 않은 경우 종료가 도달 할 수 없습니다. SE는 도달 가능성 분석을 사용하여 코드를 커버하는 테스트 사례를 생성합니다.

0

기호 실행은 프로그램을 실행하지 않고 수행됩니다. 따라서 정적 분석입니다.

좋은 기호 분석은 각 프로그램 지점에 대한 경로 조건을 계산합니다. 더 나은 사람은 경로 수식에 대해 추론 할 수 있으며, 프로그램 수립 가능 여부를 입증 할 수 있습니다 (프로그램 점수가 사망했습니다).

컴파일 된 코드의 실행 속도와 비교할 때, 심볼릭 실행은 꽤 느려지는 경향이 있습니다.

0

도달 가능성 분석은 모델이 상태에 도달 할 수 있는지 여부를 확인하는 데 주로 사용됩니다. 그러나 Symbolic Execution은 프로그램/소스 코드의 모든 경로를 찾기 위해 정적 분석 기법 (KLEE이하는 것처럼 동적 일 수도 있음)입니다.