위키득계정 ↗
기술

Miri

Miri기술
주요 언어
Rust
주요 역할
정의되지 않은 동작 탐지
실행 방식
플랫폼 독립 해석 실행
검사 대상
실행 파일과 테스트
Miri는 Rust 프로그램을 해석 실행하며 정의되지 않은 동작을 찾아내는 도구다. Cargo 프로젝트의 실행 파일과 테스트를 검사해 메모리 접근 및 자료 경쟁 등의 문제를 탐지하지만 모든 실행의 안전성을 증명하는 것은 아니다.

메모리 사용의 검사

범위를 벗어난 접근과 해제한 메모리의 사용 및 초기화되지 않은 자료의 잘못된 사용을 탐지한다. 정렬 조건과 기본 자료형의 불변 조건 위반도 검사한다. unsafe 코드가 지켜야 하는 조건을 실행 과정에서 확인하는 도구다.

실행 환경의 해석

다른 대상 플랫폼의 프로그램도 해석 실행해 엔디언처럼 플랫폼에 따른 자료 표현을 살펴볼 수 있다. 다만 모든 플랫폼 API와 외부 함수 호출이 지원되는 것은 아니다. 자료 경쟁과 일부 약한 메모리 동작도 검사 범위에 포함한다.

검사 통과의 의미

검사하는 것은 특정 입력과 특정 실행에서 나타난 동작이다. 다른 스레드 실행 순서나 입력에서만 발생하는 오류는 놓칠 수 있다. Miri에서 문제가 없다는 결과만으로 임의의 안전한 호출에서도 항상 올바르다는 건전성이 증명되는 것은 아니다.

관련 문서

Loom 동시성 테스트 / Rust / AddressSanitizer / Valgrind / 소프트웨어 테스트 / 가비지 컬렉션