From d78a063b0b7e69eb4ca4b327f5e7952f9a94145d Mon Sep 17 00:00:00 2001 From: Marcin Spoczynski Date: Sun, 30 Mar 2014 21:49:47 +0100 Subject: [PATCH 1/3] unclear message when gdb is not installed --- pyringe/inferior.py | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/pyringe/inferior.py b/pyringe/inferior.py index 3efc37a..7cee558 100644 --- a/pyringe/inferior.py +++ b/pyringe/inferior.py @@ -32,6 +32,7 @@ import subprocess import tempfile import time +import distutils.spawn # Setting these overrides the defaults. See _SymbolFilePath. @@ -151,23 +152,24 @@ def __init__(self, args=None, arch='i386:x86-64'): self._outfile_r = open(outfile_w.name) self._errfile_r = open(errfile_w.name) - self._process = subprocess.Popen( - bufsize=0, - args=arglist, - stdin=subprocess.PIPE, - stdout=outfile_w.file, - stderr=errfile_w.file, - close_fds=True, - preexec_fn=os.setpgrp, + if self.is_installed: + self._process = subprocess.Popen( + bufsize=0, + args=arglist, + stdin=subprocess.PIPE, + stdout=outfile_w.file, + stderr=errfile_w.file, + close_fds=True, + preexec_fn=os.setpgrp, ) - outfile_w.close() - errfile_w.close() + outfile_w.close() + errfile_w.close() - self._poller = select.poll() - self._poller.register(self._outfile_r.fileno(), - select.POLLIN | select.POLLPRI) - self._poller.register(self._errfile_r.fileno(), - select.POLLIN | select.POLLPRI) + self._poller = select.poll() + self._poller.register(self._outfile_r.fileno(), + select.POLLIN | select.POLLPRI) + self._poller.register(self._errfile_r.fileno(), + select.POLLIN | select.POLLPRI) def __getattr__(self, name): """Handles transparent proxying to gdb subprocess. @@ -202,6 +204,17 @@ def Kill(self): self._errfile_r.close() self._outfile_r.close() + @property + def is_installed(self): + """ + Check if gdb is installed + """ + gdb_path = distutils.spawn.find_executable("gdb") + if not gdb_path: + raise OSError("I can not find gdb") + else: + return True + @property def is_running(self): return self._process.poll() is None @@ -422,7 +435,7 @@ def gdb(self): # when requested, make sure we have a gdb session to return # (in case it crashed at some point) if not self._gdb or not self._gdb.is_running: - self.StartGdb() + self.StartGdb() return self._gdb def StartGdb(self): From 9ab26133242c2bf65dce6906ebf794a4058cd89b Mon Sep 17 00:00:00 2001 From: Marcin Spoczynski Date: Mon, 31 Mar 2014 06:53:25 +0100 Subject: [PATCH 2/3] Identation fix --- pyringe/inferior.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/pyringe/inferior.py b/pyringe/inferior.py index 7cee558..71b4779 100644 --- a/pyringe/inferior.py +++ b/pyringe/inferior.py @@ -153,23 +153,23 @@ def __init__(self, args=None, arch='i386:x86-64'): self._errfile_r = open(errfile_w.name) if self.is_installed: - self._process = subprocess.Popen( - bufsize=0, - args=arglist, - stdin=subprocess.PIPE, - stdout=outfile_w.file, - stderr=errfile_w.file, - close_fds=True, - preexec_fn=os.setpgrp, - ) - outfile_w.close() - errfile_w.close() - - self._poller = select.poll() - self._poller.register(self._outfile_r.fileno(), - select.POLLIN | select.POLLPRI) - self._poller.register(self._errfile_r.fileno(), - select.POLLIN | select.POLLPRI) + self._process = subprocess.Popen( + bufsize=0, + args=arglist, + stdin=subprocess.PIPE, + stdout=outfile_w.file, + stderr=errfile_w.file, + close_fds=True, + preexec_fn=os.setpgrp, + ) + outfile_w.close() + errfile_w.close() + + self._poller = select.poll() + self._poller.register(self._outfile_r.fileno(), + select.POLLIN | select.POLLPRI) + self._poller.register(self._errfile_r.fileno(), + select.POLLIN | select.POLLPRI) def __getattr__(self, name): """Handles transparent proxying to gdb subprocess. @@ -435,7 +435,7 @@ def gdb(self): # when requested, make sure we have a gdb session to return # (in case it crashed at some point) if not self._gdb or not self._gdb.is_running: - self.StartGdb() + self.StartGdb() return self._gdb def StartGdb(self): From 4b44b2434133723f3c4ee61d918034ec29ff8aee Mon Sep 17 00:00:00 2001 From: Marcin Spoczynski Date: Mon, 31 Mar 2014 06:58:06 +0100 Subject: [PATCH 3/3] Identation fix multiple of two --- pyringe/inferior.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/pyringe/inferior.py b/pyringe/inferior.py index 71b4779..841d7d5 100644 --- a/pyringe/inferior.py +++ b/pyringe/inferior.py @@ -206,14 +206,12 @@ def Kill(self): @property def is_installed(self): - """ - Check if gdb is installed - """ - gdb_path = distutils.spawn.find_executable("gdb") - if not gdb_path: - raise OSError("I can not find gdb") - else: - return True + """ Check if gdb is installed """ + gdb_path = distutils.spawn.find_executable("gdb") + if not gdb_path: + raise OSError("I can not find gdb") + else: + return True @property def is_running(self):