다음을 통해 공유


상태 창

상태 창에는 드라이버의 변수 값, 운영 체제 모델 및 규칙에 대한 부울 식이 표시됩니다. SDV는 이러한 식을 사용하여 드라이버, 운영 체제 모델 및 규칙의 추상화 를 생성하고 확인에 사용합니다.

다음 스크린샷은 결함 뷰어의 예제 상태 창을 보여줍니다.

결함 뷰어의 상태 창 스크린샷

상태 창은 결함 뷰어의 구성 요소입니다. 추적 트리 창에서 코드 요소가 강조 표시되고 소스 코드 창에서 해당 소스 코드 줄이 강조 표시되면 상태 창에는 코드 줄이 실행되기 전에 TRUE로 평가되는 부울 식(SDV가 드라이버에 대해 추적하는 식 집합)이 표시됩니다.

부울 식 추적

드라이버에 대한 각 규칙을 확인하는 동안 SDV는 부울 식 집합을 추적합니다. 상태 창에 표시되는 부울 식은 TRUE로 평가되는 해당 집합의 식입니다. 추적 트리 창의 요소가 식의 값을 변경하면 상태 창의 내용이 변경되어 TRUE로 계산되는 새 식 집합이 표시됩니다.

상태 창에서 식 해석

상태 창에 표시되는 대부분의 식은 규칙 코드에서 분명하게 드러나는 변수와 관련이 있습니다. 규칙의 소스 코드(소스 코드 창의 RuleName.slic 파일)를 사용하여 식을 해석할 수 있습니다.

그러나 일부 식은 내부 표현을 해석하는 데 도움이 될 수 있는 내부 표현에 대한 세부 정보 없이 상태 창에 표시됩니다. 예를 들면 다음과 같습니다.

x!=x

SDV에 대해 이 식은 추적의 이 시점에서 변수 x 값이 추적의 다른 지점에서 동일한 변수의 값과 같지 않은 조건을 나타냅니다. 드라이버 소스 코드, 규칙 코드(*.slic) 및 추적 트리 창의 요소를 사용하여 식을 해석할 수 있습니다.

상태 창의 단계 탭

상태 창의 부울 식이 탭에 표시됩니다. 각 탭은 확인에 사용되는 모든 소스 코드를 통해 추적의 단계를 나타냅니다. 단계 탭의 숫자는 추적에서 해당 단계의 순서를 나타냅니다.

일반적으로 소스 코드의 각 줄은 추적의 한 단계만 나타내기 때문에 상태 창에는 하나의 단계 탭만 있습니다. 그러나 복잡한 코드는 여러 단계를 생성할 수 있습니다.

예를 들어 다음 스크린샷은 함수 포인터가 포함된 코드 줄을 표시하는 상태 창을 보여줍니다. 이 경우 각 단계 탭은 포인터 확인 단계, 뾰족한 함수 호출 및 그 결과를 나타냅니다. (단계 탭 수는 SDV가 함수 포인터를 resolve 데 걸리는 단계 수를 표시합니다.)

함수 포인터가 있는 코드 줄을 표시하는 상태 창의 스크린샷

상태 창에서 각 단계 탭을 순서대로 보려면 소스 코드 창에서 연결된 코드 줄을 선택합니다. 그런 다음 소스 코드 창에서 코드 줄을 반복해서 클릭합니다. 선택한 코드 줄을 클릭할 때마다 SDV는 모든 단계 탭을 순환할 때까지 다음 단계 탭을 표시합니다. 곡선 노란색 화살표는 선택한 단계를 나타냅니다.

선택한 단계를 나타내는 곡선 노란색 화살표의 아이콘입니다.

상태 창에서 탭을 클릭하여 콘텐츠를 볼 수도 있습니다.

코멘트

SDV는 종종 규칙에 나타나지 않고 규칙과 직접 관련이 없는 것처럼 보이는 상태 창의 식을 추적합니다. 이러한 식은 SDV가 서로 다른 값과 다른 규칙 위반의 상관 관계를 지정하는 데 사용하는 정교한 추론에서 비롯됩니다. 경우에 따라 SDV가 식을 올바르게 평가할 수 없습니다. 이러한 경우 SDV는 현재 상태를 알 수 없음을 나타내는 메시지를 제공하고 마지막으로 알려진 상태를 사용하여 단계의 식을 표시합니다. 설명은 다음 코드 예제를 참조하세요.

Unknown state. Last known state from step 120.
sdv irql current ==2
sdv irql current!=1
sdv irql current!=0