goland 조합 탐구 원격 디버그 이동 프로그램

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. 참고

코드 완료 후 로컬 원격 서버 반드시 재 컴파일을 변경합니다! ! ! 그렇지 않으면 디버깅 시간은 경우에있을 것입니다
그림 삽입 설명 여기
그림 삽입 설명 여기

게시 48 개 원래 기사 · 원 찬양 56 ·은 20000 +를 볼

추천

출처blog.csdn.net/zhetmdoubeizhanyong/article/details/105171611