forked from qt-creator/qt-creator
Dumper: Fix failing GDB startup when using MinGW
Task-number: QTCREATORBUG-13892 Change-Id: Ia843cf4d88c574013e67cacaa8484b52fdbd4b8a Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -33,8 +33,13 @@ import struct
|
|||||||
import sys
|
import sys
|
||||||
import base64
|
import base64
|
||||||
import re
|
import re
|
||||||
import subprocess
|
|
||||||
import time
|
import time
|
||||||
|
try:
|
||||||
|
import subprocess
|
||||||
|
hasSubprocess = True
|
||||||
|
except:
|
||||||
|
hasSubprocess = False
|
||||||
|
hasPlot = False
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
xrange = range
|
xrange = range
|
||||||
@@ -78,62 +83,62 @@ SeparateUtf8StringFormat \
|
|||||||
# matplot based display for array-like structures.
|
# matplot based display for array-like structures.
|
||||||
#
|
#
|
||||||
try:
|
try:
|
||||||
# FIXME: That might not be the one we want.
|
import matplotlib
|
||||||
pythonExecutable = sys.executable
|
|
||||||
subprocess.check_call([pythonExecutable, '-c', 'import matplotlib'])
|
|
||||||
hasPlot = True
|
hasPlot = True
|
||||||
except:
|
except:
|
||||||
hasPlot = False
|
hasPlot = False
|
||||||
|
|
||||||
|
if hasSubprocess and hasPlot:
|
||||||
|
matplotFigure = {}
|
||||||
|
matplotCount = 0
|
||||||
|
|
||||||
matplotFigure = {}
|
devNull = open(os.devnull)
|
||||||
matplotCount = 0
|
# FIXME: That might not be the one we want.
|
||||||
|
pythonExecutable = sys.executable
|
||||||
devNull = open(os.devnull)
|
matplotProc = subprocess.Popen(args=[pythonExecutable, "-i"],
|
||||||
matplotProc = subprocess.Popen(args=[pythonExecutable, "-i"],
|
bufsize=0, stdin=subprocess.PIPE, stdout=devNull, stderr=devNull)
|
||||||
bufsize=0, stdin=subprocess.PIPE, stdout=devNull, stderr=devNull)
|
|
||||||
|
|
||||||
matplotProc.stdin.write(b"import sys\n")
|
|
||||||
matplotProc.stdin.write(b"sys.ps1=''\n")
|
|
||||||
matplotProc.stdin.write(b"from matplotlib import pyplot\n")
|
|
||||||
matplotProc.stdin.write(b"import time\n")
|
|
||||||
matplotProc.stdin.write(b"pyplot.ion()\n")
|
|
||||||
matplotProc.stdin.flush()
|
|
||||||
|
|
||||||
def matplotSend(iname, show, data):
|
|
||||||
global matplotFigure
|
|
||||||
global matplotCount
|
|
||||||
|
|
||||||
def s(line):
|
|
||||||
matplotProc.stdin.write(line.encode("latin1"))
|
|
||||||
matplotProc.stdin.write(b"\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
matplotProc.stdin.flush()
|
|
||||||
|
|
||||||
if show:
|
|
||||||
s("pyplot.ion()")
|
|
||||||
if not iname in matplotFigure:
|
|
||||||
matplotCount += 1
|
|
||||||
matplotFigure[iname] = matplotCount
|
|
||||||
s("pyplot.figure(%s)" % matplotFigure[iname])
|
|
||||||
s("pyplot.suptitle('%s')" % iname)
|
|
||||||
s("data = %s" % data)
|
|
||||||
s("pyplot.plot([i for i in range(len(data))], data, 'b.')")
|
|
||||||
time.sleep(0.2)
|
|
||||||
s("pyplot.draw()")
|
|
||||||
matplotProc.stdin.flush()
|
|
||||||
else:
|
|
||||||
if iname in matplotFigure:
|
|
||||||
s("pyplot.figure(%s)" % matplotFigure[iname])
|
|
||||||
s("pyplot.close()")
|
|
||||||
del matplotFigure[iname]
|
|
||||||
|
|
||||||
|
matplotProc.stdin.write(b"import sys\n")
|
||||||
|
matplotProc.stdin.write(b"sys.ps1=''\n")
|
||||||
|
matplotProc.stdin.write(b"from matplotlib import pyplot\n")
|
||||||
|
matplotProc.stdin.write(b"import time\n")
|
||||||
|
matplotProc.stdin.write(b"pyplot.ion()\n")
|
||||||
matplotProc.stdin.flush()
|
matplotProc.stdin.flush()
|
||||||
|
|
||||||
def matplotQuit():
|
def matplotSend(iname, show, data):
|
||||||
matplotProc.stdin.write(b"exit")
|
global matplotFigure
|
||||||
matplotProc.kill()
|
global matplotCount
|
||||||
devNull.close()
|
|
||||||
|
def s(line):
|
||||||
|
matplotProc.stdin.write(line.encode("latin1"))
|
||||||
|
matplotProc.stdin.write(b"\n")
|
||||||
|
sys.stdout.flush()
|
||||||
|
matplotProc.stdin.flush()
|
||||||
|
|
||||||
|
if show:
|
||||||
|
s("pyplot.ion()")
|
||||||
|
if not iname in matplotFigure:
|
||||||
|
matplotCount += 1
|
||||||
|
matplotFigure[iname] = matplotCount
|
||||||
|
s("pyplot.figure(%s)" % matplotFigure[iname])
|
||||||
|
s("pyplot.suptitle('%s')" % iname)
|
||||||
|
s("data = %s" % data)
|
||||||
|
s("pyplot.plot([i for i in range(len(data))], data, 'b.')")
|
||||||
|
time.sleep(0.2)
|
||||||
|
s("pyplot.draw()")
|
||||||
|
matplotProc.stdin.flush()
|
||||||
|
else:
|
||||||
|
if iname in matplotFigure:
|
||||||
|
s("pyplot.figure(%s)" % matplotFigure[iname])
|
||||||
|
s("pyplot.close()")
|
||||||
|
del matplotFigure[iname]
|
||||||
|
|
||||||
|
matplotProc.stdin.flush()
|
||||||
|
|
||||||
|
def matplotQuit():
|
||||||
|
matplotProc.stdin.write(b"exit")
|
||||||
|
matplotProc.kill()
|
||||||
|
devNull.close()
|
||||||
|
|
||||||
def arrayForms():
|
def arrayForms():
|
||||||
global hasPlot
|
global hasPlot
|
||||||
|
Reference in New Issue
Block a user