MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / execCommand

Method execCommand

src/plugins/debugger/reversedebug/reversedebugger.cpp:76–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74}
75
76bool ReverseDebugger::execCommand(const dpfservice::RunCommandInfo &info)
77{
78 bool ret = false;
79
80 auto target = info.program;
81 if (target.isEmpty() || !QFile::exists(target)) {
82 emit recordFailed(tr("target not found!"));
83 return ret;
84 }
85
86 QProcess process;
87 process.setWorkingDirectory(info.workingDir);
88 process.setEnvironment(info.envs);
89
90 auto program = "rr";
91 QStringList arguments;
92 arguments.append("record");
93 arguments.append(info.program);
94 arguments.append(info.arguments);
95
96 connect(&process, &QProcess::readyReadStandardOutput, [&]() {
97 process.setReadChannel(QProcess::StandardOutput);
98 while (process.canReadLine()) {
99 QString line = QString::fromUtf8(process.readLine());
100 outputMsg(process.pid(), line, OutputPane::OutputFormat::StdOut);
101 }
102 });
103
104 connect(&process, &QProcess::readyReadStandardError, [&]() {
105 process.setReadChannel(QProcess::StandardError);
106 while (process.canReadLine()) {
107 QString line = QString::fromUtf8(process.readLine());
108 outputMsg(process.pid(), line, OutputPane::OutputFormat::StdErr);
109 }
110 });
111
112 process.start(program, arguments);
113 uiController.switchContext(tr("&Application Output"));
114 quint64 pid = process.pid();
115 QString startMsg = tr("Start execute command: \"%1\" \"%2\" in workspace \"%3\".\n")
116 .arg(program, arguments.join(" "), info.workingDir);
117 QMetaObject::invokeMethod(AppOutputPane::instance(), "createApplicationPane",
118 Q_ARG(const QString &, QString::number(pid)), Q_ARG(QString, program));
119 outputMsg(pid, startMsg, OutputPane::OutputFormat::NormalMessage);
120 process.waitForFinished();
121
122 AppOutputPane::instance()->setProcessFinished(QString::number(pid));
123
124 emit recordDone();
125
126 return ret;
127}
128
129void ReverseDebugger::outputMsg(const quint64 &pid, const QString &content, OutputPane::OutputFormat format)
130{

Callers

nothing calls this directly

Calls 11

connectFunction · 0.85
numberClass · 0.85
canReadLineMethod · 0.80
pidMethod · 0.80
setProcessFinishedMethod · 0.80
isEmptyMethod · 0.45
setWorkingDirectoryMethod · 0.45
setEnvironmentMethod · 0.45
appendMethod · 0.45
readLineMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected