1. 원인
때로는 많은 프로젝트가 서버에 의존가 어떤 이유는 리눅스 환경에서 실행할 수에 대해, 일부는 따라 달라질 수 있습니다, 또는 너무 많은 패키지가 짧은에, 의존, 편리한 로컬 프로젝트를 실행하지 않습니다, 그것은 단지 원격으로 디버깅 할 수 있습니다.
탐구를 설치합니다
이 명령은 실행하는 서버에 설치되어 delve
go get -u github.com/go-delve/delve/cmd/dlv
프로젝트를 컴파일합니다
추가해야 -gcflags='all=-N -l
컴파일러 main.go이라고 가정하자
go build -gcflags="all=-N -l" ./main.go
서버 프로그램 디버그 모드를 시작하십시오
한 가지 방법 : 관입 디버깅 코드
그것은 시운전하는 과정에
프로그램이 있다고 가정 main
이미에서 실행되는
최초의 ps -aux | grep main
메인 프로그램의보기를 PID
하고 침략을 디버깅 시작
dlv attach $PID --headless --api-version=2 --log --listen=:1234
두 번째 방법 : 디버깅 프로세스를 시작합니다
dlv --listen=:1234 --headless=true --api-version=2 --accept-multiclient exec ./main
5.Goland 디버깅
下面这几步很重要!!!!
현재 지역 사업 지정 GOPATH
원격 디버깅 전략을 추가
호스트 , 당신은 원격 서버의 Unicom의 IP 주소 또는 컴퓨터 이름 수 있다는 것입니다 포트는 디버그 포트를 듣기 시작하면, 방금 지정한 DLV됩니다
편집기의 상단 오른쪽으로, 원격 디버깅은, 이전 단계의 이름을 따서 명명 된 정책의 이름을 선택하고 녹색 버그를 클릭
성공적인 시운전
6. 끝 디버깅
프로그램이 서버를 중단하고자하는 경우 로컬 디버깅의 종료 후, CTRL + C는 프로그램을 종료 할 수없는, 그래서 강제로 필요한 kill
서비스를
ps -aux | grep dlv
ps -aux | grep main
수익으로
root 27089 8.0 2.1 297472 39812 pts/1 Sl 12:34 0:00 dlv --listen=:8888 --headless=true --api-version=2 --accept-multiclient exec ./main
root 3157 0.0 0.4 148296 8496 pts/1 Sl 11:59 0:00 ./main
그리고 별도로 죽일
마지막으로 7. 참고
코드 완료 후 로컬 원격 서버 반드시 재 컴파일을 변경합니다! ! ! 그렇지 않으면 디버깅 시간은 경우에있을 것입니다