Commit 1c9e174d authored by scoder's avatar scoder Committed by GitHub

Merge pull request #1580 from jiajunhuang/py2k3k

Fix Python 2 and 3 have diffrent default encoding
parents 71ec1a4a 4b95ec8e
...@@ -138,19 +138,21 @@ def main(path_to_debug_info=None, gdb_argv=None, no_import=False): ...@@ -138,19 +138,21 @@ def main(path_to_debug_info=None, gdb_argv=None, no_import=False):
tempfilename = make_command_file(path_to_debug_info, no_import=no_import) tempfilename = make_command_file(path_to_debug_info, no_import=no_import)
logger.info("Launching %s with command file: %s and gdb_argv: %s", logger.info("Launching %s with command file: %s and gdb_argv: %s",
options.gdb, tempfilename, gdb_argv) options.gdb, tempfilename, gdb_argv)
logger.debug('Command file (%s) contains: """\n%s"""', tempfilename, open(tempfilename).read()) with open(tempfilename) as tempfile:
logger.info("Spawning %s...", options.gdb) logger.debug('Command file (%s) contains: """\n%s"""', tempfilename, tempfile.read())
p = subprocess.Popen([options.gdb, '-command', tempfilename] + gdb_argv) logger.info("Spawning %s...", options.gdb)
logger.info("Spawned %s (pid %d)", options.gdb, p.pid) p = subprocess.Popen([options.gdb, '-command', tempfilename] + gdb_argv)
while True: logger.info("Spawned %s (pid %d)", options.gdb, p.pid)
try: while True:
logger.debug("Waiting for gdb (pid %d) to exit...", p.pid) try:
ret = p.wait() logger.debug("Waiting for gdb (pid %d) to exit...", p.pid)
logger.debug("Wait for gdb (pid %d) to exit is done. Returned: %r", p.pid, ret) ret = p.wait()
except KeyboardInterrupt: logger.debug("Wait for gdb (pid %d) to exit is done. Returned: %r", p.pid, ret)
pass except KeyboardInterrupt:
else: pass
break else:
break
logger.debug("Closing temp command file with fd: %s", tempfile.fileno())
logger.debug("Removing temp command file: %s", tempfilename) logger.debug("Removing temp command file: %s", tempfilename)
os.remove(tempfilename) os.remove(tempfilename)
logger.debug("Removed temp command file: %s", tempfilename) logger.debug("Removed temp command file: %s", tempfilename)
...@@ -18,6 +18,13 @@ import collections ...@@ -18,6 +18,13 @@ import collections
import gdb import gdb
try: # python 2
UNICODE = unicode
BYTES = str
except NameError: # python 3
UNICODE = str
BYTES = bytes
try: try:
from lxml import etree from lxml import etree
have_lxml = True have_lxml = True
...@@ -689,7 +696,8 @@ class CyImport(CythonCommand): ...@@ -689,7 +696,8 @@ class CyImport(CythonCommand):
completer_class = gdb.COMPLETE_FILENAME completer_class = gdb.COMPLETE_FILENAME
def invoke(self, args, from_tty): def invoke(self, args, from_tty):
args = args.encode(_filesystemencoding) if isinstance(args, BYTES):
args = args.decode(_filesystemencoding)
for arg in string_to_argv(args): for arg in string_to_argv(args):
try: try:
f = open(arg) f = open(arg)
...@@ -834,7 +842,9 @@ class CyBreak(CythonCommand): ...@@ -834,7 +842,9 @@ class CyBreak(CythonCommand):
gdb.execute('break %s' % func.pf_cname) gdb.execute('break %s' % func.pf_cname)
def invoke(self, function_names, from_tty): def invoke(self, function_names, from_tty):
argv = string_to_argv(function_names.encode('UTF-8')) if isinstance(function_names, BYTES):
function_names = function_names.decode(_filesystemencoding)
argv = string_to_argv(function_names)
if function_names.startswith('-p'): if function_names.startswith('-p'):
argv = argv[1:] argv = argv[1:]
python_breakpoints = True python_breakpoints = True
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment