forked from qt-creator/qt-creator
pdb: Fix command line arguments
pdbbridge uses exec() on the main file which causes the inferior to use its sys.argv. Inferiors using argparse would then fail since they cannot make use of the working directory passed. To fix this, append the inferior arguments separated by "--" and change sys.argv accordingly. Change-Id: I35caf4b3ec19c5259c0d4235787c03a3e592768a Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -704,13 +704,20 @@ class QtcInternalDumper():
|
|||||||
|
|
||||||
def runit(self):
|
def runit(self):
|
||||||
print('DIR: %s' % dir())
|
print('DIR: %s' % dir())
|
||||||
|
print('ARGV: %s' % sys.argv)
|
||||||
if sys.argv[0] == '-c':
|
if sys.argv[0] == '-c':
|
||||||
sys.argv = sys.argv[2:]
|
sys.argv = sys.argv[2:]
|
||||||
else:
|
else:
|
||||||
sys.argv = sys.argv[1:]
|
sys.argv = sys.argv[1:]
|
||||||
print('ARGV: %s' % sys.argv)
|
|
||||||
mainpyfile = sys.argv[0] # Get script filename
|
mainpyfile = sys.argv[0] # Get script filename
|
||||||
sys.path.append(os.path.dirname(mainpyfile))
|
sys.path.append(os.path.dirname(mainpyfile))
|
||||||
|
# Delete arguments superfluous to the inferior
|
||||||
|
try:
|
||||||
|
args_pos = sys.argv.index("--")
|
||||||
|
sys.argv = [sys.argv[0]] + sys.argv[args_pos + 1:]
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
print('INFERIOR ARGV: %s' % sys.argv)
|
||||||
print('MAIN: %s' % mainpyfile)
|
print('MAIN: %s' % mainpyfile)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@@ -114,6 +114,13 @@ void PdbEngine::setupEngine()
|
|||||||
|
|
||||||
CommandLine cmd{m_interpreter, {bridge, scriptFile.path()}};
|
CommandLine cmd{m_interpreter, {bridge, scriptFile.path()}};
|
||||||
cmd.addArg(runParameters().inferior.workingDirectory.path());
|
cmd.addArg(runParameters().inferior.workingDirectory.path());
|
||||||
|
cmd.addArg("--");
|
||||||
|
QStringList arguments = runParameters().inferior.command.splitArguments();
|
||||||
|
if (!arguments.isEmpty() && arguments.constFirst() == "-u")
|
||||||
|
arguments.removeFirst(); // unbuffered added by run config
|
||||||
|
if (!arguments.isEmpty())
|
||||||
|
arguments.removeFirst(); // file added by run config
|
||||||
|
cmd.addArgs(arguments);
|
||||||
showMessage("STARTING " + cmd.toUserOutput());
|
showMessage("STARTING " + cmd.toUserOutput());
|
||||||
m_proc.setEnvironment(runParameters().debugger.environment);
|
m_proc.setEnvironment(runParameters().debugger.environment);
|
||||||
m_proc.setCommand(cmd);
|
m_proc.setCommand(cmd);
|
||||||
|
Reference in New Issue
Block a user