https://velog.io/@mogiyoon/Docker-참조를-통한-pintos-환경-세팅#test
make check이후의 내용을 다루고 있습니다.
make check를 하면 threads 폴더 내부에 build 폴더가 생긴다.
(혹시 vscode에서 안보이면, vscode 폴더와 container 내부의 폴더가 다른 폴더일 수 있으니 확인하자.)
이 폴더 안으로 들어가서 이런저런걸 할 수 있다.
여기서 타겟 파일을 디버깅할 수 있다.
참고로 result가 있는 녀석들을 활용해야 한다.

make만 입력하면 전체 파일을 다 컴파일 해줄 것이다.
(해본 적은 없다.)
근데 '나는 하나의 파일/테스트만 컴파일/디버깅하고 싶다.'고 하면 아래처럼 하면 된다.
make와 타겟의 경로를 상세히 입력해주면
make 경로/대상.result
신명나게 컴파일하다가

마지막에 결과를 알려준다.
오잉? 왜 프린트 문이 안찍히지?
하면
마지막에 VERBOSE=1을 추가로 입력하자.
make 경로/대상.result VERBOSE=1
아주 친절하게 나온다.

.output 파일에는 프린트 로그가 자세하게 나온다.

눌러보면


혼신의 힘을 다해 출력했다.
.error 파일에는 에러 로그가 나온다.

눌러보면
뭔 말인지 나도 모르는 건 덤이다.
컴파일 한 뒤에 파일을 수정하지 않고 다시 컴파일하면
컴파일 해주지 않는다.
새침하다.
컴파일과도 밀당을 해야한다.

.output 파일을 삭제하면

컴파일 할 수 있다.
물론 c파일이나 h파일을 수정하면 다시 컴파일 해준다.
.result에는 결과가 나온다.
아주 간단한 결과가 나오거나
구구절절 어디가 틀렸는지 알려준다.
'-'가 붙은 건 나와야하는 로그인데 안 나왔다는 의미이고
'+'가 붙은 건 안 나와야하는 로그인데 나왔다는 의미이다.
printf 함수처럼 사용하면 된다. like msg seasoning
따로 개행문자 칠 필요도 없고, 어떤 테스트에서 실행되는 지도 알려준다.
무슨 말이냐면
저기 주석 넣은 부분이 내가 넣은 부분이다.
주석 해제하고 실행시키면
개행문자 생각안해도 돼서 편하고 친절하다.
printf를 그냥 쓰자.
msg를 사용할 때 thread_current()를 사용하는 것 같은데
이게 마구잡이로 사용되다보면 어디선가 알 수 없는 커널 패닉을 일으킨다...
msg 이 녀석 때문에 엄청 돌아갔다..
우리반 겸디가 알려줬다.
test.c에 다음과 같은 리스트가 있다.
테스트하지 않을 녀석들을 주석 처리를 하면 빠르게 테스트를 넘길 수 있다고 한다.
물론 결과는 FAIL로 나온다고 한다.