# ==================================================================================== # Development and Debugging # ==================================================================================== ## Setup dlv for attaching, identifying the plugin PID for other targets. .PHONY: setup-attach setup-attach: $(eval PLUGIN_PID := $(shell ps aux | grep "plugins/${PLUGIN_ID}" | grep -v "grep" | awk -F " " '{print $$2}')) $(eval NUM_PID := $(shell echo -n ${PLUGIN_PID} | wc -w)) @if [ ${NUM_PID} -gt 2 ]; then \ echo "** There is more than 1 plugin process running. Run 'make kill reset' to restart just one."; \ exit 1; \ fi ## Check if setup-attach succeeded. .PHONY: check-attach check-attach: @if [ -z ${PLUGIN_PID} ]; then \ echo "Could not find plugin PID; the plugin is not running. Exiting."; \ exit 1; \ else \ echo "Located Plugin running with PID: ${PLUGIN_PID}"; \ fi ## Attach dlv to an existing plugin instance. .PHONY: attach attach: setup-attach check-attach dlv attach ${PLUGIN_PID} ## Attach dlv to an existing plugin instance, exposing a headless instance on $DLV_DEBUG_PORT. .PHONY: attach-headless attach-headless: setup-attach check-attach dlv attach ${PLUGIN_PID} --listen :$(DLV_DEBUG_PORT) --headless=true --api-version=2 --accept-multiclient ## Detach dlv from an existing plugin instance, if previously attached. .PHONY: detach detach: setup-attach @DELVE_PID=$(shell ps aux | grep "dlv attach ${PLUGIN_PID}" | grep -v "grep" | awk -F " " '{print $$2}') && \ if [ "$$DELVE_PID" -gt 0 ] > /dev/null 2>&1 ; then \ echo "Located existing delve process running with PID: $$DELVE_PID. Killing." ; \ kill -9 $$DELVE_PID ; \ fi ## Kill all instances of the plugin, detaching any existing dlv instance. .PHONY: kill kill: detach $(eval PLUGIN_PID := $(shell ps aux | grep "plugins/${PLUGIN_ID}" | grep -v "grep" | awk -F " " '{print $$2}')) @for PID in ${PLUGIN_PID}; do \ echo "Killing plugin pid $$PID"; \ kill -9 $$PID; \ done; \