#ifdef DEBUG_LOG
#define dprintf(...) printf(__VA_ARGS__)
#else
#define dprintf(...) ((void)0)
#endif
- vm/Make.vars 복사 붙여넣기 후 복사된 파일 이름을 Make.vars.debug 로 변경
- 아래 내용 붙여넣기
# -*- makefile -*-
os.dsk: DEFINES = -DUSERPROG -DFILESYS -DVM -DDEBUG_LOG
KERNEL_SUBDIRS = threads tests/threads tests/threads/mlfqs
KERNEL_SUBDIRS += devices lib lib/kernel userprog filesys vm
TEST_SUBDIRS = tests/userprog tests/vm tests/filesys/base tests/threads
# Grading for extra
TEST_SUBDIRS += tests/vm/cow
GRADING_FILE = $(SRCDIR)/tests/vm/Grading
- vm 폴더 밑에 run.sh 파일 생성
- 아래 코드 붙여넣기
#!/bin/bash
if [ $# -eq 0 ]; then
make -j
elif [ $# -eq 1 ]; then
if [ "$1" = "wsl" ]; then
mv Make.vars Make.vars.old
cp Make.vars.wsl Make.vars
make -j
rm Make.vars
mv Make.vars.old Make.vars
elif [ "$1" = "debug" ]; then
mv Make.vars Make.vars.old
cp Make.vars.debug Make.vars
make -j
rm Make.vars
mv Make.vars.old Make.vars
else
echo "Usage: $0 [wsl|debug|wsl debug]"
exit 1
fi
elif [ $# -eq 2 ]; then
if { [ "$1" = "wsl" ] && [ "$2" = "debug" ]; } || { [ "$1" = "debug" ] && [ "$2" = "wsl" ]; }; then
mv Make.vars Make.vars.old
cp Make.vars.wsl-debug Make.vars
make -j
rm Make.vars
mv Make.vars.old Make.vars
else
echo "Usage: $0 [wsl|debug|wsl debug]"
exit 1
fi
else
echo "Usage: $0 [wsl|debug|wsl debug]"
exit 1
fi
dprintf("log message");
- 그냥 make를 하면 로그가 찍히지 않음
- make clean 이후 ./run.sh debug 를 사용하면 빌드가 되고 그 이후 테스트를 돌리면 로그가 찍힘 !!
- 위 dprintf가 printf로 바뀌어서 찍히는 겁니다
- 테스트 pass를 보고 싶으면 make clean이후 그냥 make를 해야 합니다 !!