본문 바로가기
성공지식백과 로고성공지식백과
GLOSSARY

새니타이저 (Sanitizer)

중급바이브 코딩

이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 새니타이저 (Sanitizer)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.

새니타이저(Sanitizer)는 프로그램에 검사 기능을 넣어 실행 중 메모리 사용 오류나 정의되지 않은 동작 등을 찾아내는 개발 도구입니다. 컴파일러와 함께 사용하는 오류 탐지 도구를 가리키며, HTML에서 위험한 내용을 제거하는 입력 정화 기능과는 구별합니다. 어떤 오류를 찾을 수 있는지는 선택한 새니타이저와 검사 옵션, 실제로 실행한 코드 경로에 따라 달라집니다.

실행 코드에 추가되는 검사

프로그램의 문법이 맞고 컴파일에 성공해도 실행 중 잘못된 메모리에 접근하거나 허용되지 않는 계산을 수행할 수 있습니다. 이런 문제는 입력과 실행 경로에 따라 드러나므로 소스 코드가 빌드되었다는 사실만으로 확인하기 어렵습니다. 새니타이저는 실행되는 코드에 검사를 붙여 문제가 생긴 지점을 알리는 방식입니다. 개발자는 오류가 발생한 조건과 보고된 위치를 바탕으로 코드를 조사합니다.

Clang의 AddressSanitizer 문서는 이 도구가 컴파일러 계측 모듈과 실행 시 사용하는 라이브러리로 구성된다고 설명합니다. 계측은 프로그램이 수행하는 동작을 검사하도록 추가 코드를 넣는 것을 뜻합니다. 문서는 컴파일과 링크에 -fsanitize=address 옵션을 사용하는 방법을 제시합니다. 도구 이름을 설치 목록에 넣는 것과 실제 실행 파일에 검사 기능을 연결하는 것은 다른 단계입니다.

검사가 포함된 실행 파일에 입력을 주어 동작시키면 탐지 결과를 얻습니다. AddressSanitizer 문서는 오류를 발견했을 때 표준 오류에 메시지를 출력하고 0이 아닌 종료 코드로 끝나는 동작을 설명합니다. 보고서의 호출 경로나 위치 정보는 어떤 동작에서 문제가 드러났는지 추적하는 자료입니다. 메시지가 나타났다는 사실은 오류를 발견했다는 뜻이며, 원인이 된 소스 코드가 자동으로 수정되었다는 뜻은 아닙니다.

메모리 오류와 정의되지 않은 동작의 구별

AddressSanitizer, ASan은 메모리 오류를 찾는 데 사용합니다. 공식 문서는 배열 등에서 허용 범위를 벗어난 접근, 해제한 메모리에 다시 접근하는 오류, 같은 메모리의 중복 해제 등을 탐지 대상으로 듭니다. 메모리를 해제한 뒤에도 예전 주소로 값을 읽으려는 코드는 해제 후 사용 문제에 해당합니다. 이런 검사는 반환된 값이 우연히 정상처럼 보이는 실행에서도 잘못된 접근을 조사할 단서를 제공합니다.

Clang의 UndefinedBehaviorSanitizer 문서는 UBSan이 컴파일 시 프로그램을 바꾸어 실행 중 여러 종류의 정의되지 않은 동작을 찾는다고 설명합니다. 부호 있는 정수의 범위 초과, 요구된 메모리 정렬을 충족하지 못한 포인터나 널 포인터의 역참조 등이 예입니다. 여기서 정의되지 않은 동작은 언어 규칙이 결과를 정하지 않은 동작을 뜻합니다. 잘못된 계산 결과가 나왔다는 일반적인 의미의 버그보다 구체적인 범주입니다.

ASan과 UBSan은 이름이 비슷해도 검사하는 범위가 같지 않습니다. UBSan 문서는 개별 검사나 검사 묶음을 켜고 끄는 옵션을 설명하며, 모든 검사가 기본 묶음에 포함되는 것도 아니라고 명시합니다. 새니타이저를 켰다는 말만으로 어떤 오류까지 검사했는지 알기는 어렵습니다. 사용한 도구와 활성화한 검사 종류를 함께 남기면 발견된 문제와 아직 확인하지 않은 범위를 구분할 수 있습니다.

탐지 결과의 해석과 한계

오류 뒤의 동작도 도구와 설정에 따라 다릅니다. AddressSanitizer 문서는 처음 탐지한 오류에서 종료한다고 설명하는 반면, UBSan은 많은 검사에서 오류를 보고하고 실행을 계속하며 옵션으로 중단 방식을 바꿀 수 있다고 설명합니다. 프로그램이 끝까지 실행되었다는 사실만 보고 검사에 문제가 없었다고 판단하지 않습니다. 종료 상태와 함께 진단 출력, 실제 사용한 검사 설정을 확인해야 결과를 해석할 수 있습니다.

새니타이저의 탐지는 검사 기능이 들어간 코드가 실행될 때 이루어집니다. 한 입력에서 문제가 보고되지 않았더라도 실행되지 않은 분기까지 확인한 것은 아닙니다. 비어 있는 입력, 경계값, 오류 처리 경로 등 다른 조건을 실행하면 별도의 문제가 드러날 수 있습니다. 검사에서 제외한 코드나 지원하지 않는 오류 유형도 있으므로, 결과를 기록할 때 사용한 입력과 검사 범위를 함께 남기는 것이 도움이 됩니다.

HTML을 정화하는 새니타이저는 입력 내용에서 허용하지 않는 요소를 다루는 다른 문맥의 용어입니다. 컴파일러 새니타이저를 적용했다고 웹 입력이 정화되거나 프로그램의 모든 보안 문제가 해결되지는 않습니다. 개발 과정에서는 탐지된 오류를 수정하고 같은 조건에서 다시 실행해 수정 결과를 확인합니다. 그 뒤에도 기능 테스트와 다른 입력 검사를 이어 가며, 도구가 탐지한 범위를 넘어 전체 프로그램의 안전성을 보장했다고 해석하지 않습니다.

RELATED TERMS

관련 용어

새니타이저 (Sanitizer)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.