From 53014ca28b0690e6d55f4646f3ce614433d16030 Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov Date: Thu, 1 Feb 2018 17:21:37 +0100 Subject: [PATCH] Add a section about debugger So far only delve is described in details --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/README.md b/README.md index dc7b60db5..e9c1f4133 100644 --- a/README.md +++ b/README.md @@ -305,3 +305,46 @@ The operator also supports pprof endpoints listed at the [pprof package](https:/ * /debug/pprof/profile * /debug/pprof/symbol * /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 + +``` +-gcflags "-N -l" +``` + +* Run `postgres-operator` under the delve + +``` +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 +```