프로그램에서 동작 중인 goroutines 확인

2024. 11. 13. 20:43Development/Golang

728x90
반응형

Golang으로 개발하다 보면 goroutine을 자주 사용할 수 밖에 없고, 멀티 쓰레드 간 채널을 통해 데이터를 자주 받아야 하는 상황이 잦을것이다. 이 때 송수신 채널들이 데이터를 주고 받지 못하던지, goroutine이 동작하지 않는다던지 하는 다양한 이유로 goroutine의 생사 여부를 확인해야 하는 과정이 필요할 수 있다. 간단하게 확인하는 방법을 공유한다.

  1. Golang 디버깅 프로그램 dlv를 설치하고, 제대로 설치되어 있는지 버전을 확인한다.

$ go install github.com/go-delve/delve/cmd/dlv@latest
$ dlv version
  1. Goroutine 동작을 확인하려 하는 대상인, 내가 구동시키고 있는 프로그램의 PID를 확인한다.

$ ps -ef | grep PROGRAM_NAME
  1. 예를 들어, PID가 4747이라고 할 때 dlv attach 명령어를 통해 프로세스에 접근한다.

$ dlv attach 4747
  1. 접근이 되면 내부 명령어(=goroutines)를 통해 goroutine 현황을 확인한다.

Type 'help' for list of commands.
(dlv) goroutines
  1. 리스트들이 쭉 나온다. goroutine이 돌고 있는 소스코드 위치를 포함한 여러 정보들을 확인할 수 있다.

참고할 점은, dlv로 프로세스에 접근할 때 해당 프로세스가 멈춰있음을 유의해야한다. 또한 div attach를 종료시키기 위해 exit 명령어로 나갈 때 접근한 프로세스를 죽일 지 말 지에 대해 확인을 요하므로 잘 체크해서 종료시켜야 한다. 

 

참고
https://github.com/go-delve/delve

728x90
반응형

'Development > Golang' 카테고리의 다른 글

인터페이스 구현 검증  (0) 2024.11.14