diff --git a/guide/troubleshooting.md b/guide/troubleshooting.md
index bd4dee2bb41890cb046e542dcdbbd10616841521..58965271735953ea850e09cff5dfc84ae1a61328 100644
--- a/guide/troubleshooting.md
+++ b/guide/troubleshooting.md
@@ -1,5 +1,63 @@
 # Troubleshooting guide
 
+## Watchdog
+
+### Debug your function without deploying it
+
+Here's an example of how you can deploy a function without using an orchestrator - it's useful for testing:
+
+```
+$ docker run --name debug-alpine \
+  -p 8081:8080 -ti functions/alpine:latest sh
+# fprocess=date fwatchdog &
+```
+
+Now you can access the function with one of the supported HTTP methods such as GET/POST etc:
+
+```
+$ curl -4 localhost:8081
+```
+
+### Edit your function without rebuilding it
+
+You can bind-mount code straight into your function and work with it locally, until you are ready to re-build. This is a common flow with containers, but should be used sparingly.
+
+Within the CLI directory for instance:
+
+Build the samples:
+
+```
+$ git clone https://github.com/alexellis/faas-cli && \
+  cd faas-cli
+$ faas-cli -action build -f ./samples.yml
+```
+
+Now work with the Python-hello sample, with the code mounted live:
+
+```
+$ docker run -v `pwd`/sample/url-ping/:/root/function/ \
+  --name debug-alpine -p 8081:8080 -ti alexellis/faas-url-ping sh
+$ touch ./function/__init__.py
+# fwatchdog
+```
+
+Now you can start editing the code in the sample/url-ping folder and it will reload live for every request.
+
+```
+$ curl localhost:8081 -d "https://www.google.com"
+Handle this -> https://www.google.com
+https://www.google.com => 200
+```
+
+Now you can edit handler.py and you'll see the change immediately:
+
+```
+$ echo "def handle(req):" > sample/url-ping/handler.py
+$ echo '    print("Nothing to see here")' >> sample/url-ping/handler.py
+$ curl localhost:8081 -d "https://www.google.com"
+Nothing to see here
+```
+
 ## Docker Swarm
 
 ### List all functions