ComExt Sanitizer

WSL이 설치되어 있어야 합니다.

WSL를 아직 설치하지 않았다면 WSL 설치를 참고하세요.

Docker가 설치되어 있어야 합니다.

Docker를 아직 설치하지 않았다면 Docker 설치를 참고하세요.

images/image1

“wsl”를 입력합니다.

wsl에 설치된 리눅스에 들어갑니다.

images/image2

“docker exec -it testenv /bin/bash”를 입력합니다.

생성한 testenv 컨테이너에 들어갑니다.

images/image3

만약 위와 같이 뜬다면, 컨테이너가 존재하지 않는 것입니다.

아래 Docker 컨테이너 추가를 참고하세요.

MSan

echo 0 > /proc/sys/kernel/randomize_va_space
ulimit -q 819200
export CI_PROJECT_DIR=/root/J1602_SUN34_MMIS_ComExt
cd $CI_PROJECT_DIR
export LOG_DIR="$CI_PROJECT_DIR/test_logs/msan"
export MSAN_OPTIONS="log_path=$LOG_DIR/msan.log:halt_on_error=1"
mkdir -p $LOG_DIR
rm -rf $LOG_DIR/*
rm -rf msan-build
cmake -B msan-build -G Ninja src -DENABLE_MEMORY_SANITIZER=TRUE
ninja -C msan-build
bash src/tool/save_svrif_for_swrepo.sh $CI_PROJECT_DIR $CI_PROJECT_DIR/msan-build $CI_PROJECT_DIR/MSAN_SVR_IF
export LIT_ARTIFACT_DIR=$CI_PROJECT_DIR/MSAN_SVR_IF
source $CI_PROJECT_DIR/src/tool/setup_test_env.sh
cd $CI_PROJECT_DIR/src/test
lit . -j1 -v

위 명령어를 그대로 복사 붙여넣기 하여 실행합니다.

빌드 후 MSan 테스트가 진행됩니다.

ASan

echo 0 > /proc/sys/kernel/randomize_va_space
ulimit -q 819200
export CI_PROJECT_DIR=/root/J1602_SUN34_MMIS_ComExt
cd $CI_PROJECT_DIR
export LOG_DIR="$CI_PROJECT_DIR/test_logs/asan"
export ASAN_OPTIONS="log_path=$LOG_DIR/asan.log:abort_on_error=1"
mkdir -p $LOG_DIR
rm -rf $LOG_DIR/*
rm -rf asan-build
cmake -B asan-build -G Ninja src -DENABLE_ADDR_SANITIZER=TRUE
ninja -C asan-build
bash src/tool/save_svrif_for_swrepo.sh $CI_PROJECT_DIR $CI_PROJECT_DIR/asan-build $CI_PROJECT_DIR/ASAN_SVR_IF
export LIT_ARTIFACT_DIR=$CI_PROJECT_DIR/ASAN_SVR_IF
source $CI_PROJECT_DIR/src/tool/setup_test_env.sh
cd $CI_PROJECT_DIR/src/test
lit . -j1 -v

위 명령어를 그대로 복사 붙여넣기 하여 실행합니다.

빌드 후 ASan 테스트가 진행됩니다.

로그 확인 방법

images/image4

테스트 결과가 위와 같이 나옵니다.

images/image5

Failed에 대한 로그 파일은 ComExt폴더의 test_logs에서 확인할 수 있습니다.

Docker 컨테이너 추가

images/image6

“docker run -d -it --privileged -v /mnt/c/Work/J1602_SUN34_MMIS_ComExt:/root/J1602_SUN34_MMIS_ComExt --name testenv ubuntu2004sdk"를 입력합니다.

testenv 라는 이름으로 ubuntu2004sdk컨터이너를 하나 만듭니다

images/image7

만약 위와 같이 뜬다면, 컨테이너를 만들 이미지가 아직 존재하지 않은 것입니다.

아래 Docker 이미지 추가를 참고하세요.

images/image8

“docker ps -a”를 입력합니다.

만들어진 컨테이너들을 볼 수 있습니다.

Docker 이미지 추가

images/image9

“\\192.168.0.117\Program_Center\Docker” 폴더에 “ubuntu2004sdk_20210930.tar.gz” 파일을 “C:\”폴더로 복사합니다.

images/image10

“cd /mnt/c”를 입력합니다.

C 폴더로 이동합니다.

images/image11

“docker load -i ubuntu2004sdk_20210930.tar.gz”를 입력합니다.

docker에 image를 추가합니다.

images/image12

“docker tag ubuntu2004sdk:20210930 ubuntu2004sdk:latest”를 입력합니다.

ubuntu2004sdk:latest 태그를 붙입니다.

latest 태그가 지정되면 이후에는 ubuntu2004sdk 만으로 이미지를 사용할 수 있습니다.

images/image13

“docker images”를 입력합니다.

방금 추가한 이미지와 태그를 볼 수 있습니다.