Merge pull request #215 from erthalion/feature/debugger-documentation-section
Add a section about debugger
This commit is contained in:
		
						commit
						4cbb86ea13
					
				
							
								
								
									
										45
									
								
								README.md
								
								
								
								
							
							
						
						
									
										45
									
								
								README.md
								
								
								
								
							|  | @ -305,3 +305,48 @@ The operator also supports pprof endpoints listed at the [pprof package](https:/ | ||||||
| * /debug/pprof/profile | * /debug/pprof/profile | ||||||
| * /debug/pprof/symbol | * /debug/pprof/symbol | ||||||
| * /debug/pprof/trace | * /debug/pprof/trace | ||||||
|  | 
 | ||||||
|  | It's possible to attach a debugger to troubleshoot postgres-operator inside a | ||||||
|  | docker container. It's possible with gdb and | ||||||
|  | [delve](https://github.com/derekparker/delve). Since the latter one is a | ||||||
|  | specialized debugger for golang, we will use it as an example. To use it you | ||||||
|  | need: | ||||||
|  | 
 | ||||||
|  | * Install delve locally | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | go get -u github.com/derekparker/delve/cmd/dlv | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Add following dependencies to the `Dockerfile` | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | RUN apk --no-cache add go git musl-dev | ||||||
|  | RUN go get github.com/derekparker/delve/cmd/dlv | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Update the `Makefile` to build the project with debugging symbols. For that | ||||||
|  |   you need to add `gcflags` to a build target for corresponding OS (e.g. linux) | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | -gcflags "-N -l" | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Run `postgres-operator` under the delve. For that you need to replace | ||||||
|  |   `ENTRYPOINT` with the following `CMD`: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | CMD ["/root/go/bin/dlv", "--listen=:DLV_PORT", "--headless=true", "--api-version=2", "exec", "/postgres-operator"] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Forward the listening port | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | kubectl port-forward POD_NAME DLV_PORT:DLV_PORT | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | * Attach to it | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | $ dlv connect 127.0.0.1:DLV_PORT | ||||||
|  | ``` | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue