VS Code Extensions에서 Go를 검색하여 설치하세요.
VS Code에서 디버깅(중단점, 단계별 실행 등)을 수행하려면 Delve를 설치해야 합니다.
go install github.com/go-delve/delve/cmd/dlv@latest
asdf를 사용하여 Go를 설치한 경우 delve는 다음 위치에 있습니다.
~/.asdf/shims/dlv
go 패키지를 설치한 후 asdf rehim을 실행할 수도 있습니다.
GoLang은 컴파일된 언어이므로 코드는 단일 실행 파일로 컴파일됩니다. 개발 중에 변경 사항을 적용하려면 지속적으로 재컴파일해야 하며, 이는 특히 VS Code에서 수동 프로세스가 될 수 있습니다.
https://github.com/air-verse/air를 사용하여 실시간으로 다시 로드하겠습니다.
변경 사항을 감시하기 위해 프로젝트 폴더 내에서 한 번만 실행하면 되는 명령줄 도구입니다.
패키지를 설치합니다. v1.22 이상을 사용한다고 가정합니다.
go install github.com/air-verse/air@latest
asdf를 사용하여 Go를 설치한 경우 air는 다음 위치에 위치합니다.
~/.asdf/shims/air
프로젝트 루트에서 air.toml 구성 파일을 초기화합니다
cd ~/myproject air init
air.toml [[go build]] 명령을 다음과 같이 편집합니다.
- all: 플래그는 빌드 패키지의 모든 패키지에 적용되어야 합니다
- -N: 더 쉬운 디버깅을 위해 생성된 코드를 소스 코드에 더 가깝게 보장하기 위해 최적화를 비활성화했습니다
- -l: 함수 호출의 오버헤드를 줄이기 위해 작은 함수가 확장되는 인라인 최적화를 비활성화하여 디버깅을 더 쉽게 만듭니다
- Delve 참고자료를 통한 추론
- cmd = "go build -o ./tmp/main ." + cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'
[!정보]
다음과 같은 경우 air가 기본 구성으로 실행됩니다.
- air.toml 파일이 잘못되었습니다
- air 명령을 실행하여 프로젝트 폴더에서 실행하세요.
air.toml 파일은 사용되지 않습니다.
air.toml full_bin을 편집하여 [[Delve]]로 빌드된 바이너리를 실행하세요.
- full_bin = "" + full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"
이렇게 하면 포트 2345에서 Delve가 실행됩니다.
프로젝트 폴더에서 air를 실행하세요. 다음 출력이 표시됩니다.
> cd ~/my-project > air __ _ ___ / /\ | | | |_) /_/--\ |_| |_| \_ v1.52.3, built with Go go1.22.5 mkdir ~/my-project/tmp watching . !exclude tmp building... running... API server listening at: 127.0.0.1:2345 2024-07-28T18:47:07+07:00 info layer=debugger launching process with args: [./tmp/main] 2024-07-28T18:47:09+07:00 debug layer=debugger entryPoint 0x1006e8000 machoOff 0x100000000 2024-07-28T18:47:09+07:00 warning layer=debugger debug_frame workaround not applied: function internal/abi.(*RegArgs).IntRegArgAddr (at 0x1006e9070) covered by 0x1006e9070-0x1006e9110 2024-07-28T18:47:09+07:00 debug layer=debugger Adding target 11503 "/Users/alaay/projects/scheduleasy/tmp/main" 2024-07-28T18:47:09+07:00 debug layer=debugger continuing 2024-07-28T18:47:09+07:00 debug layer=debugger ContinueOnce 2024/07/28 18:47:09 Starting server on :5602
.vscode/launch.config 파일에 다음을 추가하세요.
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Attach to Air", "type": "go", "request": "attach", "mode": "remote", "port": 2345, "host": "127.0.0.1" } ] }
VS Code 실행 및 디버그(CMD + SHIFT + D)에서 Attach to Air를 사용하여 디버깅을 시작하세요
[!info] VS Code를 연결할 수 없습니다
VS Code를 연결할 수 없는 경우 Delve가 포트 2345에서 실행되고 있지 않을 가능성이 높습니다. lsof -i :2345를 사용하여 dlv가 해당 포트를 사용하여 실행되고 있는지 확인하세요. 실행 중인 경우 다음이 표시됩니다.$ lsof -i :2345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dlv 15464 username 3u IPv4 0x201bff14586139e3 0t0 TCP localhost:dbm (LISTEN)
Go는 컴파일된 언어입니다. 즉, 코드가 바이너리로 컴파일된 다음 실행됩니다. vscode의 코드를 변경할 때마다:
이는 vscode의 연결이 끊어지고 탐색하려면 vscode를 다시 연결해야 함을 의미합니다.
위 내용은 VS Code를 사용하여 Golang을 디버그하도록 Delve 및 Air 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!