debug backend plugin

This commit is contained in:
Alexander Zobnin
2020-01-14 13:16:40 +03:00
parent 3f5719794a
commit 94cdf10989
3 changed files with 48 additions and 0 deletions

28
DEVELOPMENT_GUIDE.md Normal file
View File

@@ -0,0 +1,28 @@
# Plugin development
### Debugging backend plugin
For debugging backend part written on Go, you should go through a few steps. First, build a plugin with special flags for debugging:
```sh
make build-debug
```
Then, configure your editor to connect to [delve](https://github.com/go-delve/delve) debugger running in headless mode. This is an example for VS Code:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug backend plugin",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 3222,
"host": "127.0.0.1",
},
]
}
```
Finally, run grafana-server and then execute `./debug-backend.sh` from grafana-zabbix root folder. This script will attach delve to running plugin. Now you can go to the VS Code and run _Debug backend plugin_ debug config.

View File

@@ -13,6 +13,8 @@ build-frontend:
yarn dev-build
build-backend:
env GOOS=linux go build -mod=vendor -o ./dist/zabbix-plugin_linux_amd64 ./pkg
build-debug:
env GOOS=linux go build -mod=vendor -gcflags=all="-N -l" -o ./dist/zabbix-plugin_linux_amd64 ./pkg
dist: dist-frontend dist-backend
dist-frontend:

18
debug-backend.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
if [ "$1" == "-h" ]; then
echo "Usage: ${BASH_SOURCE[0]} [plugin process name] [port]"
exit
fi
PORT="${2:-3222}"
PLUGIN_NAME="${1:-'zabbix-plugin_'}"
echo $PORT $PLUGIN_NAME
ptrace_scope=`cat /proc/sys/kernel/yama/ptrace_scope`
if [ "$ptrace_scope" != 0 ]; then
echo "WARNING: ptrace_scope set to value other than 0, this might prevent debugger from connecting, try writing \"0\" to /proc/sys/kernel/yama/ptrace_scope.
Read more at https://www.kernel.org/doc/Documentation/security/Yama.txt"
fi
dlv attach `pgrep ${PLUGIN_NAME}` --headless --listen 0.0.0.0:${PORT} --api-version 2
pkill dlv