diff --git a/opensipscli/defaults.py b/opensipscli/defaults.py
index 17539fa..d1e697c 100644
--- a/opensipscli/defaults.py
+++ b/opensipscli/defaults.py
@@ -22,6 +22,7 @@
 """
 
 import os
+import time
 
 VERSION = '0.1.0'
 
@@ -77,6 +78,13 @@
     # diagnose module
     "diagnose_listen_ip": "127.0.0.1",
     "diagnose_listen_port": "8899",
+
+    # trace module
+    "trace_listen_ip": "127.0.0.1",
+    "trace_listen_port": "0",
+
+    # trap module
+    "trap_file": '/tmp/gdb_opensips_{}'.format(time.strftime('%Y%m%d_%H%M%S'))
 }
 
 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/opensipscli/modules/trace.py b/opensipscli/modules/trace.py
index 85a56e1..4bf9aca 100644
--- a/opensipscli/modules/trace.py
+++ b/opensipscli/modules/trace.py
@@ -248,15 +248,9 @@ def do_trace(self, params):
 
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        if cfg.exists("trace_listen_ip"):
-            trace_ip = cfg.get("trace_listen_ip")
-        else:
-            trace_ip = "127.0.0.1"
-        if cfg.exists("trace_listen_port"):
-            trace_port = cfg.get("trace_listen_port")
-        else:
-            trace_port = 0
-        s.bind((trace_ip, int(trace_port)))
+        trace_ip = cfg.get("trace_listen_ip")
+        trace_port = int(cfg.get("trace_listen_port"))
+        s.bind((trace_ip, trace_port))
         if trace_port == 0:
             trace_port = s.getsockname()[1]
         s.listen(1)
diff --git a/opensipscli/modules/trap.py b/opensipscli/modules/trap.py
index 5a1f4da..95d856e 100644
--- a/opensipscli/modules/trap.py
+++ b/opensipscli/modules/trap.py
@@ -24,11 +24,9 @@
 from threading import Thread
 import subprocess
 import shutil
-import time
 import os
 
 PROCESS_NAME = 'opensips'
-TRAP_FILE_NAME = '/tmp/gdb_opensips_{}'.format(time.strftime('%Y%m%d_%H%M%S'))
 
 class trap(Module):
 
@@ -43,7 +41,18 @@ def get_pids(self):
         except:
             self.pids = []
 
-    def get_gdb_output(self, process, pid):
+    def get_gdb_output(self, pid):
+        if os.path.islink("/proc/{}/exe".format(pid)):
+            # get process line of pid
+            process = os.readlink("/proc/{}/exe".format(pid))
+        else:
+            logger.error("could not find OpenSIPS process {} running on local machine".format(pid))
+            return -1
+        # Check if process is opensips (can be different if CLI is running on another host)
+        path, filename = os.path.split(process)
+        if filename != PROCESS_NAME:
+            logger.error("process ID {} is not OpenSIPS process".format(pid))
+            return -1
         logger.debug("Dumping backtrace for {} pid {}".format(process, pid))
         cmd = ["gdb", process, pid, "-batch", "--eval-command", "bt full"]
         out = subprocess.check_output(cmd)
@@ -56,10 +65,7 @@ def do_trap(self, params):
         self.gdb_outputs = {}
         self.process_info = ""
 
-        if cfg.exists("trap_file"):
-            trap_file = cfg.get("trap_file")
-        else:
-            trap_file = TRAP_FILE_NAME
+        trap_file = cfg.get("trap_file")
 
         logger.info("Trapping {} in {}".format(PROCESS_NAME, trap_file))
         if params and len(params) > 0:
@@ -83,12 +89,9 @@ def do_trap(self, params):
 
         logger.debug("Dumping PIDs: {}".format(", ".join(self.pids)))
 
-        # get process line of first pid
-        process = os.readlink("/proc/{}/exe".format(self.pids[0]))
-
         threads = []
         for pid in self.pids:
-            thread = Thread(target=self.get_gdb_output, args=(process, pid))
+            thread = Thread(target=self.get_gdb_output, args=(pid,))
             thread.start()
             threads.append(thread)