우선, Go extension 설치가 필요하다.

extension을 설치하면 테스트코드 함수위에 run test/debug test옵션이 생긴다.
debug test를 클릭하면 쉽게 디버깅을 시작할 수 있다.

패키지는 main.go 파일에서 f5키를 누르면 디버깅이 시작된다.
yorkie 같은 경우에는 cobra 프레임워크를 사용해서 go cli 를 지원하고 있는데,
그냥 디버깅을 실행하면 bin/yorkie 이 실행되고 아래와 같이 프로그램이 종료된다.

yorkie server를 실행해서 디버깅을 하고 싶다면, bin/yorkie server 처럼 서버를 실행해야 한다.
즉, server argument 를 전달해줘야 하는데, config 파일에 작성하면 된다.

run and debug 에 보면 launch.json 파일을 생성할 수 있는데, Go: launch package를 선택한다.

program 에 실행할 폴더를 cmd/yorkie로 적어주고,
"args": ["server"] 를 추가한다.
(참고: https://github.com/microsoft/vscode-go/issues/3166)
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "cmd/yorkie",
"args": ["server"]
}
]
}
이렇게 파일 작성하고 f5키를 누르거나 ▶️ 버튼을 클릭하면 디버깅이 시작되고, yorkie 서버도 잘 실행된다.
추가로 yorkie 서버를 mongoDB와 연결하여 실행 하고 싶다면 args를 "args": ["server", "--mongo-connection-uri", "mongodb://localhost:27017"] 로 입력하면 된다.

동진님이 알려주신 integration 테스트 디버깅 방법
테스트 코드 디버깅 시에 익스텐션 설치 후에도 integration test 는 테스트코드 함수 위에 run test/debug test 옵션이 생기지 않는다.
vscode settings 에서 go tools env 검색 후 settings.json을 열고 그림과 같이 "GOFLAGS": "-tags=integration" 를 "go.toolsEnvVars" 에 추가해주면 run test/debug test 옵션이 integration test에도 생긴다.
(참고: https://hackandsla.sh/posts/2020-07-12-golang-integration-testing/)
