def spawn_new_gdb_subprocess(self):
if self.gdb_process:<EOL><INDENT>self.logger.debug(<EOL>"<STR_LIT>" % self.gdb_process.pid<EOL>)<EOL>self.exit()<EOL><DEDENT>self.logger.debug('<STR_LIT>' % "<STR_LIT:U+0020>".join(self.cmd))<EOL>self.gdb_process = subprocess.Popen(<EOL>self.cmd,<EOL>shell=False,<EOL>stdout=subprocess.PIPE,<EOL>stdin=subprocess.PIPE,<EOL>stderr=subprocess.PIPE,<EOL>bufsize=<NUM_LIT:0>,<EOL>)<EOL>_make_non_blocking(self.gdb_process.stdout)<EOL>_make_non_blocking(self.gdb_process.stderr)<EOL>self.stdout_fileno = self.gdb_process.stdout.fileno()<EOL>self.stderr_fileno = self.gdb_process.stderr.fileno()<EOL>self.stdin_fileno = self.gdb_process.stdin.fileno()<EOL>self.read_list = [self.stdout_fileno, self.stderr_fileno]<EOL>self.write_list = [self.stdin_fileno]<EOL>self._incomplete_output = {"<STR_LIT>": None, "<STR_LIT>": None}<EOL>return self.gdb_process.pid<EOL>
Spawn a new gdb subprocess with the arguments supplied to the object
        during initialization. If gdb subprocess already exists, terminate it before
        spanwing a new one.
        Return int: gdb process id